Pour être franc mieux vaut utiliser la méthode Find car beaucoup plus rapide et direct.
Cependant tu souhaites utilisés ton code.
Avec ton code tu fais deux boucles, tu te compliques la vie. Voici une idée sur la base de ton code mais avec une seule boucle.
Tout d'abord on cherche la dernière ligne utilisée de la colonne B et on met ce n° dans une variable pour pouvoir faire ta boucle.
derlign = .range("B" & rows.count).end(xlup).row
ensuite on donne à la variable vnom la valeur choisie dans la combo:
vnom = UserForm_Nom_Client.NcRecherche.value
dans le code je donne à une variable i la valeur 0 car dans la boucle je vais chercher si je trouve le nom et si c'est le cas je donnerai à la variable i la valeur 1 car une fois sortie de la boucle je vais vérifié la valeur de i.
si i=0 c'est que je n'ai pas trouvé de nom correspondant alors j'envois mon message qui m'informe de recommencer.
donc voici comment ce présenterais ton code une fois revue:
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
| dim derlign as long, vnom as string, i as byte
dim ligne3 as long
With Worksheets("Table adresse")
derlign = .range("B" & rows.count).end(xlup).row
vnom = UserForm_Nom_Client.NcRecherche.value
i=0
For ligne3 = 1 To derlign
If vnom = .Cells(ligne3, 2) Then
.Range("B" & ligne3).Select
i=1
UserForm_Nom_Client.Hide
MsgBox "Nom de Client renseigné!"
Exit For
End If
Next ligne3
If i=0 then
MsgBox " Il n'y a pas de client avec ce nom!" & chr(10) & "Réessayer un autre nom de client"
'vide la ListBox
UserForm_Nom_Client.NcRecherche.clear
End If
End With |
Je ne l'ai pas testé mais le principe est là.
Partager