Directement inspiré de cet article, voici un petit fichier qui permet de représenter un cercle dans un graphique.
Çà pourrait être utile, sait-on jamais 🙂
La magie du fichier se trouve dans la création de noms (Formules - Gestionnaires de noms)

Directement inspiré de cet article, voici un petit fichier qui permet de représenter un cercle dans un graphique.
Çà pourrait être utile, sait-on jamais 🙂
La magie du fichier se trouve dans la création de noms (Formules - Gestionnaires de noms)

Avec l'introduction des fonctions matricielles dynamiques et de la fonction LET, Excel devient de plus en plus un langage de programmation matriciel (je ne sais pas si ça existe, mais ça sonne très bien 🙂 ).
LET permet de stocker l'équivalent de variables pour les réutiliser plusieurs fois dans la formule. La beauté de la fonction LET est qu'il suffit juste de changer les premiers paramètres pour adapter la fonction à n'importe quel tableau.
L'objectif ici est dépivoter ce tableau qui contient une colonne Ville, et 4 colonnes de dates :

Il existe d'autres méthodes discutées ici, mais vous pouvez utiliser cette formule pour dépivoter le tableau :

L'explication de la formule est un peu longue, mais en gros, on calcule les coordonnées lignes et colonne de chaque titre ou valeur. Puis, avec la fonction INDEX, on reconstruit les différentes colonnes. La fonction CHOISIR permet de les fusionner.
On peut aller plus loin avec deux colonnes, par exemple la ville et le pays. La formule ci-dessous doit probablement encore pouvoir être optimisée pour sélectionner la plage au complet, plutôt que deux colonnes distinctes (Ville et Pays).

Et encore plus loin avec une deuxième série de montants.
Attention, il faut impérativement le même nombre de colonnes pour les années, et elles doivent être dans le même ordre (2019,2020,2021,2022)

N'hésitez-pas si vous voyez des améliorations ou des limites à la formule.
Répéter une valeur plusieurs fois avec Recherchev (en Anglais)
https://www.extendoffice.com/documents/excel/1897-excel-repeat-cell-value-x-times.html
Voici un petit code qui permet d'ajouter une ou plusieurs lignes à une table de données, tout en incrémentant la première colonne contenant la clef. Ce code sera aussi discuté plus en profondeur durant ce séminaire. Notez aussi l'utilisation de Application.WorksheetFunction.Sequence qui ne fonctionne qu'avec Office 365, mais qui permet de réduire plusieurs lignes de code à juste une seule ligne.
Vous pouvez télécharger le fichier ici
Voici le code et plus bas la vidéo expliquant comment il fonctionne.
Option Explicit
Sub testAjouterNLignes()
AjouterNLignes 10
End Sub
Sub AjouterNLignes(lNbLignes As Long)
'on definit l'objet correspond a la table Data
Dim tblData As ListObject
Set tblData = wksData.ListObjects("Data")
If tblData.DataBodyRange Is Nothing Then ' cas d'un tableau vide
tblData.ListRows.Add 'on ajoute une ligne
tblData.Resize tblData.Range.Resize(tblData.Range.Rows.Count + lNbLignes - 1)
Else
tblData.Resize tblData.Range.Resize(tblData.Range.Rows.Count + lNbLignes)
End If
tblData.DataBodyRange.Offset( _
tblData.DataBodyRange.Rows.Count - lNbLignes, _
0).Resize(lNbLignes, 1) = _
Application.WorksheetFunction.Sequence( _
lNbLignes, 1, Application.WorksheetFunction.Max(tblData.ListColumns("No").Range.Value) + 1, 1)
End Sub