Bonjour à tous
Voila j'ai une macro de la saisie semi-automatique elle fonctionne bien quand la liste des fournisseur est chargée de noms, sauf que mon problème c'est quand la feuille "Liste_Fournisseurs" ne contient aucun élément quand je lance l'UserForm et je tape une lettre dans le Combobox elle génère un bug et quand j'ajoute un nouveau fournisseur le problème persiste toujours car pour que ça fonctionne il faut 2 fournisseurs et plus.
Voici l'ensemble de mon code :
La ligne responsable de ces bugs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Option Explicit 'Variables qui vont nous servir à alimenter le Combobox des fournisseurs Dim f As Worksheet, Choix, Nbl& Public Sub UserForm_Initialize() 'A l'ouverture de la fenêtre le curseur toutjous sur le Combobox "Nom du Fournisseur" Me.ComboBox1.SetFocus 'Déterminer la feuille source Set f = Sheets("liste_fournisseurs") 'nombre de ligne non vides qui vont être prise en compte par le combobox Nbl = f.[D1048576].End(xlUp).Row 'Si la ligne 12 est vide alors sortir de la boucle Select Case Nbl Case Is < 12 Exit Sub 'Importer le nom du fournisseur vers le Combobox S'il y a quelque chose entre la ligne 12 et 1048576 Case 12 Me.ComboBox1.AddItem f.Range("D12") Case Else 'Assosier le nom dans le Combobox avec la variable Choix pour le filtrage Choix = Application.Transpose(f.Range("D12:D" & Nbl)) Me.ComboBox1.List = Choix End Select End Sub 'Filtrage des noms de fournisseurs à la saisie semi-automatique dans le Combobox Private Sub ComboBox1_Change() If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, Choix, 0)) Then Me.ComboBox1.List = Filter(Choix, Me.ComboBox1.Text, True, vbTextCompare) Me.ComboBox1.DropDown End If End Sub
Pour être plus claire joins le fichiers dedans le problème et la solution attendue
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.ComboBox1.List = Filter(Choix, Me.ComboBox1.Text, True, vbTextCompare)
Merci à vous tous
Cordialement
Partager