Boucler sur les éléments d'un dictionnaire

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 !

GeoTrouvePas

XLDnaute Impliqué
Bonjour tout le monde,

Par ces EXCELentes démonstrations, ce très cher M. BOISGONTIER m'a donné la bonne habitude d'utiliser des dictionnaires pour trier mes doublons.

Mais là je me retrouve bloqué car je n'arrive pas à boucler sur les différents éléments de mon dictionnaire.

Explication :

J'ai une liste (avec doublons) dont je veux me servir pour modifier le caption d'une suite de combobox (mais sans doublons).
Je pensais donc éliminer les doublons de ma liste avec un très classique :

Code:
    With ThisWorkbook.Sheets("Données").Range("Table_Données")
        For i = 2 To .Rows.Count
            MonDico(.Item(i, 5)) = .Item(i, 5)
        Next
    End With

Puis boucler sur tous les éléments de MonDico, pour renommer un à un mes Combobox.

Mais étant donné que les clés de MonDico sont en alphanumérique, je ne sais pas comment faire pour boucler sur tous les éléments de MonDico.

Auriez vous une idée ?

Je vous remercie par avance.
 
Re : Boucler sur les éléments d'un dictionnaire

Bonjour,

ci dessous l'exemple de l'aide vba :
Code:
Dim a, d, i       'Crée des variables
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athènes"     'Ajoute des clés et des éléments.
d.Add "b", "Belgrade"
d.Add "c", "Le Caire"
a = d.Items       'Obtient les éléments
For i = 0 To d.Count - 1 'Effectue une itération sur le tableau
    MsgBox a(i)    'Imprime un élément
Next

bon après midi
@+
 
Re : Boucler sur les éléments d'un dictionnaire

Bonjour et merci pour ta réponse Pierrot.

Donc apparemment il n'y a pas de possibilité de boucler directement sur les éléments du dictionnaire. Il faut impérativement transférer les éléments dans une variable tableau.

J'aurai pu utiliser l'aide si seulement elle faisait pas planter Excel à chaque recherche... (mais bon faut être patient, ça fait que deux ans que j'ai demandé à l'informatique de s'en occuper ^^).
 
Re : Boucler sur les éléments d'un dictionnaire

Re,

si, à priori on peut également boucler sur les 2 collections :
Code:
Sub test()
Dim a, d, i, e, k     'Crée des variables
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athènes"     'Ajoute des clés et des éléments.
d.Add "b", "Belgrade"
d.Add "c", "Le Caire"
For Each e In d.items
    MsgBox e
Next e

For Each k In d.keys
    MsgBox k
Next k
End Sub
 
Re : Boucler sur les éléments d'un dictionnaire

Impeccable !
J'avais même pas pensé à fonctionner avec une boucle for de type "For Each".

J'ai le droit à une petite question subsidiaire ? Je n'arrive pas à savoir pourquoi ma boucle suivante ne fonctionne pas :

Code:
For Cptr = 0 To MonDico.Count - 1
        ActiveSheet.Controls("ACoche" & Cptr + 1).Caption = a(0)
Next

On dirait qu'il n'apprécie pas le "Controls". Pourtant ça marche bien quand il s'agit de contrôles situé sur un Userform.
 
- 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

Réponses
7
Affichages
801
Réponses
11
Affichages
1 K
Retour