Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion Ironman
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

I

Ironman

Guest
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:

[table="width: 500"]
[tr]
[td]Contient[/td]
[td]Pays[/td]
[td]Ville[/td]
[/tr]
[tr]
[td]Europe[/td]
[td]France[/td]
[td]Toulouse[/td]
[/tr]
[tr]
[td]Europe[/td]
[td]France[/td]
[td]Paris[/td]
[/tr]
[tr]
[td]Europe[/td]
[td]Espagne[/td]
[td]Barcelone[/td]
[/tr]
[tr]
[td]Europe[/td]
[td]France[/td]
[td]Bordeaux[/td]
[/tr]
[/table]

Merci d'avance pour vos retours,
 
Dernière modification par un modérateur:
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
 
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?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…