Liste intuitive - Combobox erreur

helias jeremy

XLDnaute Nouveau
Bonjour,

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.
 

Pièces jointes

  • fichier chèque test.xlsm
    288 KB · Affichages: 41

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonsoir

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 à ""

Cordialement, @+
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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, @+
 

helias jeremy

XLDnaute Nouveau
Merci BOISGONTIER,

Ç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...

Bref, merci encore BOISGONTIER

ps : sympa ton site
 

job75

XLDnaute Barbatruc
Bonjour,

Ah bon je n'ai rien fait d'autre que critiquer et ceci alors :
La variable a n'est pas définie dans cette macro.
Quant à votre code ceci n'a aucun sens :
Code:
Private Sub Textbénéficiaire_Click()
TextBénéficiaire = Me.TextBénéficiaire.List
End Sub
Et ceci est une horreur :
Code:
Sub Effacerchq1()
'
' Effacerchq1 Macro

    Range("A13:D62").Select
    Selection.ClearContents
    Range("F13:I62").Select
    Selection.ClearContents
    Range("K13:N62").Select
    Selection.ClearContents
    Range("P13:S62").Select
    Selection.ClearContents
   
   
    Range("A13").Select
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 099
Messages
2 085 269
Membres
102 845
dernier inscrit
Baticle.geo