Question sur Dictionnaires et Tableaux Temporaires

  • Initiateur de la discussion Initiateur de la discussion Kim75
  • 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 !

Kim75

XLDnaute Occasionnel
Bonsoir le forum,

J’ai souvent à placer plusieurs ListBox (ou ComboBox) dans le même UserForm, et je voudrais savoir la manière correcte et/ou efficace à adopter devant la multiplicité des dictionnaires et des tableaux temporaires. Dois-je initier un seul dictionnaire et un seul tableau temporaire pour la multitude des listes, ou à chaque liste son dictionnaire et son tableau temporaire ? C'est vrai que j'ai testé, et les deux fonctionnent, mais bon, il ne faudrait pas faire n'importe quoi tout de même 🙂

Exemple :
Code:
Private Sub UserForm_Initialize()

Dim ws As Worksheet, rng As Range
Dim dico1 As Object, dico2 As Object, dico3 As Object
Dim temp1 As Variant, temp2 As Variant, temp3 As Variant

Set ws = Sheets("BD")
Set dico1 = CreateObject("Scripting.Dictionary")
Set dico2 = CreateObject("Scripting.Dictionary")
Set dico3 = CreateObject("Scripting.Dictionary")

For Each rng In Range(ws.[B2], ws.[B65000].End(xlUp))
    If rng.Offset(, -1) = "Division-A" Then dico1(rng.Value) = rng.Value
Next rng
temp1 = dico1.items
Me.ListBox1.List = temp1

For Each rng In Range(ws.[B2], ws.[B65000].End(xlUp))
    If rng.Offset(, -1) = "Division-B" Then dico2(rng.Value) = rng.Value
Next rng
temp2 = dico2.items
Me.ListBox2.List = temp2

For Each rng In Range(ws.[B2], ws.[B65000].End(xlUp))
    If rng.Offset(, -1) = "Division-C" Then dico3(rng.Value) = rng.Value
Next rng
temp3 = dico3.items
Me.ListBox4.List = temp3

Set ws = Nothing
Set dico1 = Nothing
Set dico2 = Nothing
Set dico3 = Nothing

End Sub
Par avance merci pour la réponse,

Cordialement, Kim.
 
Re : Question sur Dictionnaires et Tableaux Temporaires

Bonjour
De façon automatique et transparente pour le programmeur d'application, OutIdx utilise des Dictionaires arborescents pour gérer les ComboBox dont on lui confie la charge. ComboBoxCasc le fait avec un seul à plusieurs niveaux, ComboBoxLiés le fait avec plusieurs à un seul niveau dont deux, un global et un filtré par les autres, pour chaque ComboBox. Tous les Dictionary nécessaires sont stockés dans les ComboBoxMembre. Examiner les modules de classes.
 
Re : Question sur Dictionnaires et Tableaux Temporaires

Bonsoir David,

Un grand merci pour ce classeur, et surtout pour tout le travail qui y a aboutit, chapeau ! 🙂

Vu son importance pour le cas évoqué des multiples listes, je vais bien le lire pour arriver à l'utiliser correctement.

Merci infiniment !

Cordialement, Kim.
 
Dernière édition:
Re : Question sur Dictionnaires et Tableaux Temporaires

Bonjour,

Code:
Private Sub UserForm_Initialize()
  Set ws = Sheets("BD")
  Set dico1 = CreateObject("Scripting.Dictionary")
  For Each rng In Range(ws.[B2], ws.[B65000].End(xlUp))
    If rng.Offset(, -1) = "Division-A" Then dico1(rng.Value) = ""
  Next rng
  Me.ListBox1.List = dico1.keys
  dico1.removeall
  For Each rng In Range(ws.[B2], ws.[B65000].End(xlUp))
    If rng.Offset(, -1) = "Division-B" Then dico1(rng.Value) = ""
  Next rng
  Me.ListBox2.List = dico1.keys
  dico1.removeall
  For Each rng In Range(ws.[B2], ws.[B65000].End(xlUp))
    If rng.Offset(, -1) = "Division-C" Then dico1(rng.Value) = ""
  Next rng
  Me.ListBox4.List = dico1.keys
  Set dico1 = Nothing
End Sub

JB
 
Dernière édition:
Re : Question sur Dictionnaires et Tableaux Temporaires

Bonjour.
Avec classement d'office c'est :
VB:
Dim DicGlb As Dictionary
Private Sub UserForm_Initialize()
Set DicGlb = OutIdx.DictionnArbo(OutIdx.ColUti(Worksheets("BD").[A2:B2]))
Me.ListBox1.List = DicGlb("Division-A").Keys
Me.ListBox2.List = DicGlb("Division-B").Keys
Me.ListBox3.List = DicGlb("Division-C").Keys
End Sub
 
Re : Question sur Dictionnaires et Tableaux Temporaires

Moi c'est Dranreb, pas David…
Toujours à votre disposition pour des explications en passant, si une interrogation lancinante se présentait à votre esprit, vous empêchant de lire le reste jusqu'à ce que vous y trouviez la réponse 🙄
 
- 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

Discussions similaires

S
Réponses
1
Affichages
938
  • Suggestion Suggestion
Recherche & référence UniqueSOLO
Réponses
0
Affichages
1 K
Réponses
14
Affichages
1 K
H
Réponses
16
Affichages
2 K
T
Réponses
1
Affichages
1 K
titous68
T
Retour