J'ai créé un fichier de saisie de chèques.
Là dedans apparait un userform pour faciliter la saisie. J'ai une combobox avec une recherche intuitive.
Elle se nomme "textbénéficiaire".
Et c'est là que je rencontre le problème :
"For each c in a " me sort en anomalie !
Egalement j'aimerais que la liste se déroule si la combobox est vide (dropdown??) et qu'elle diminue en fonction de la saisie.
Et enfin j'aimerais que lorsqu'on clique sur le bénéficiaire dans la liste, le nom remonte dans la combobox.
Un fichier parle plus que des mots, je vous le laisse en pièce jointe.
le plantage est normal, tu crées et utilises un dico mais ta syntaxe pour ajouter les valeurs est mauvaise.
Code:
Private Sub TextBénéficiaire_Change()
Set d1 = CreateObject("Scripting.Dictionary")
'Détermine le critère de recherche
tmp = "*" & UCase(Me.TextBénéficiaire) & "*"
'Recherche dans la liste de fournisseurs
For Each c In a
If UCase(c) Like tmp Then d1(c) = ""
Next c
Me.TextBénéficiaire.List = d1.Keys
End Sub
Pour créer un index de dico la bonne syntaxe est
If Not d1.Exists(c) Then d1.Add c, ""
en premier lieu tester si la valeur existe avant de l'ajouter sinon plantage
ensuite ajout de la valeur au dico, c dans ton code, avec la valeur de renvoi, dans ton code tu l'as définie à ""
Salut Job75
Tu as raison pour la variable, quand j'ai vu qu'elle était initialisée dans l'initialisation du userform, j'ai pensé à une variable publique et je me suis focalisé sur la commande de dico qui plantait forcément. Mais après l'avoir cherchée, ce qui est toujours casse pied sur des variables aussi pauvrement nommées, je ne l'ai pas trouvé non plus.
Cordialement, @+
Ça fonctionne parfaitement.
J'ai vu mon erreur après coup, la variable a n'était pas défini (tout en haut du code)
Je te rejoint sur les insultes les gens sont hautains, le code ici n'est pas parfait mais il fonctionne très bien !
Comme si Job75 était parfait en tout point...