Recherche de chaine de caracteres dans colonne, probleme lors de non résultat (VBA)

Dam178

XLDnaute Nouveau
Recherche de chaine de caracteres dans colonne, probleme lors de non résultat (VBA)
Bonjour tout le monde,

J'ai souvent fais appel à ce forum, et aujourd'hui pour la premiere je poste une discussion pour essayer de trouver une solution un peu plus personnalisée. Je suis encore débutant en VBA, merci de votre aide.

Mon probleme est le suivant, je souhaite rechercher dans une base de données (plus précisement dans une colonne), une chaine de caratere (un nom), et le faire ressortir en colorant la cellule en rouge. Jusque là tout fonctionne, mais lorsque que le nom n'existe pas, j'ai un message d'erreur et je n'arrive pas à comprendre pourquoi. Normalement un msgbox devrait apparaitre en me signalant qu'il ne trouve pas le nom.

Voila mon code:


Private Sub CommandButton4_Click()

Dim Recherche As Range
Dim Nom As String
'déclaration des variables

Nom = UCase(InputBox("Saisir le Nom du client", "Recherche"))
'définition de la variable + mise en majuscule

Set Recherche = ActiveSheet.Columns(2).Cells.Find(what:=Nom)
'trouve la valeur une fois
Recherche.Interior.Color = vbRed

Set Recherche = ActiveSheet.Columns(2).Cells.FindNext(Recherche)
'trouve la valeur une 2eme fois
Recherche.Interior.Color = vbRed

Set Recherche = ActiveSheet.Columns(2).Cells.FindNext(Recherche)
'trouve la valeur une 3eme fois
Recherche.Interior.Color = vbRed

Set Recherche = ActiveSheet.Columns(2).Cells.FindNext(Recherche)
'trouve la valeur une 4eme fois
Recherche.Interior.Color = vbRed

Set Recherche = ActiveSheet.Columns(2).Cells.FindNext(Recherche)
'trouve la valeur une 5eme fois
Recherche.Interior.Color = vbRed

Set Recherche = ActiveSheet.Columns(2).Cells.FindNext(Recherche)
'trouve la valeur une 10eme fois
Recherche.Interior.Color = vbRed

If Recherche Is Nothing Then

MsgBox "Le Nom " & Nom & " n'existe pas dans la base", vbInformation + vbOKOnly, "Recherche de Nom"

End If


End Sub
Quelqu'un comprend ce qui ne va pas ?

Merci d'avance
 

Efgé

XLDnaute Barbatruc
Re : Recherche de chaine de caracteres dans colonne, probleme lors de non résultat (V

Bonjour Dam178,
En faisant F1 sur .FindNext on peux façilement trouver ceci
VB:
Private Sub CommandButton4_Click()
Dim Recherche As Range
Dim Nom As String
Dim firstAddress As String
'déclaration des variables
Nom = UCase(InputBox("Saisir le Nom du client", "Recherche"))
'définition de la variable + mise en majuscule
Set Recherche = ActiveSheet.Columns(2).Cells.Find(what:=Nom)
With ActiveSheet.Columns(2)
    Set Recherche = .Cells.Find(what:=Nom)
    If Not Recherche Is Nothing Then
        firstAddress = Recherche.Address
        Do
            Recherche.Interior.Color = vbRed
            Set Recherche = .FindNext(Recherche)
        Loop While Not Recherche Is Nothing And Recherche.Address <> firstAddress
    Else
        MsgBox "Le Nom " & Nom & " n'existe pas dans la base", vbInformation + vbOKOnly, "Recherche de Nom"
    End If
End With
End Sub

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 422
Membres
103 206
dernier inscrit
diambote