Listes déroulantes à 3 niveaux (+10 000) lignes

Ironman

XLDnaute Nouveau
Bonjour,

Je souhaiterais créer 3 listes déroulantes dépendantes:
Continent --> Pays --> >Ville

J'ai plus de 10 000 lignes qui seront amenées à être mises à jours de temps en temps (1 fois par mois).

Mes données seront sous cette forme:

ContientPaysVille
EuropeFranceToulouse
EuropeFranceParis
EuropeEspagneBarcelone
EuropeFranceBordeaux

Merci d'avance pour vos retours,
 
Dernière édition:

Ironman

XLDnaute Nouveau
Re : Listes déroulantes à 3 niveaux (+10 000) lignes

Merci pour votre retour.

Vraiment très complet comme site.

J'ai trouvé le tuto : Création de listes à partir d'une BD

Pourriez-vous m'aider à décrypter ce code VBA:

A partir de la BD, crée des listes nommées utilisables avec Indirect()
Après la création des listes, la BD peut être supprimée
Sub CreeListeBD()
colBD = 1
colListe = 8
Set f = Sheets("bd")
ligne = 1
f.Cells(ligne + 1, colListe).Resize(1000, 10).Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.Cells(2, colBD), f.Cells(65000, colBD).End(xlUp))
mondico(c.Value) = c.Value
Next c
f.Cells(ligne, colListe) = "Liste"
f.Cells(ligne, colListe).Font.Bold = True
f.Cells(ligne + 1, colListe).Resize(mondico.Count) = Application.Transpose(mondico.items)
ActiveWorkbook.Names.Add Name:="Liste", RefersTo:=f.Cells(ligne + 1, colListe).Resize(mondico.Count)
'---- niv 2,3,..
For niv = 2 To 3 ' adapter le nombre de niveaux
colBD = colBD + 1
colListe = colListe + 2
ligne = 1
For Each c In Range(f.Cells(2, colListe - 2), f.Cells(65000, colListe - 2).End(xlUp))
If c <> "" And c.Font.Bold <> True Then
Set mondico = CreateObject("Scripting.Dictionary")
For Each d In Range(f.Cells(2, colBD), f.Cells(65000, colBD).End(xlUp))
If d.Offset(, -1) = c Then mondico(d.Value) = d.Value
Next d
f.Cells(ligne, colListe) = c
f.Cells(ligne, colListe).Font.Bold = True
f.Cells(ligne + 1, colListe).Resize(mondico.Count) = Application.Transpose(mondico.items)
ActiveWorkbook.Names.Add Name:=Replace(c, " ", "_"), RefersTo:=f.Cells(ligne + 1, colListe).Resize(mondico.Count)
ligne = ligne + mondico.Count + 1
End If
Next c
Next niv
End Sub


Merci
 

Ironman

XLDnaute Nouveau
Re : Listes déroulantes à 3 niveaux (+10 000) lignes

Bonjour,

J'ai réussi à le faire fonctionner cela dit, je souhaiterais ajouter un niveau.

D'après le commentaire "For niv = 2 To 3 ' adapter le nombre de niveaux", il est possible d'en rajouter un.

Est ce que vous auriez une idée sur comment le mettre en place j'ai essayé de modifier 2 To 4 mais cela ne fonctionne pas?
 

Statistiques des forums

Discussions
312 468
Messages
2 088 685
Membres
103 919
dernier inscrit
BOB66500