Recherche Doublon dans Colonne

Bonjour à tous !

Je sollicite votre aide pour comprendre et éventuellement corriger une ligne de code VB.

La macro récupère une liste de doublons dans une variable MsgErrDoublons que j'afficherai au bout de 5 cas de doublons rencontrés.

Je fais donc un DoWhile pour parcourir toute la colonne, mon souci est que j'ai une erreur à la DEUXIèME itération de la boucle ... je ne comprends pas .... !

Erreur provenant de cette ligne contenant :

Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookAt:=xlWhole, SearchDirection:=xlNext)

dans

Private Sub CommandButton1_Click()

    Range("A2").Select
    MsgErrDoublons = "Les comptes suivants sont en doublon, merci de corriger : " & vbCrLf
    compteur = 0

    'déclaration des variables :
    Dim Trouve As String, PlageDeRecherche As Range
    Dim Valeur_Cherchee As String, AdresseTrouvee As String

    Do While ActiveCell.Value <> Empty

        Valeur_Cherchee = ActiveCell.Value
        ' Plage de recherche commence à la cellule d'en dessous jusqu'à la dernière cellule non vide de la colonne
        Set PlageDeRecherche = Range(Selection.Offset(1, 0), Selection.Offset(1, 0).End(xlDown))
MsgBox PlageDeRecherche.Address(True, True, xlA1)
        'méthode find, ici on cherche la valeur exacte
        Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookAt:=xlWhole, SearchDirection:=xlNext)
MsgBox Trouve
        ' Incrémentation des msg d'erreurs jusqu'à 5 occurences
        If Trouve <> Empty Then
            If compteur < 5 Then
                MsgErrDoublons = MsgErrDoublons & "   - " & Trouve & vbCrLf
                compteur = compteur + 1
            Else
                MsgErrDoublons = MsgErrDoublons & "   - etc .."
                Exit Do
            End If
        End If

        ActiveCell.Offset(1, 0).Select
    Loop

    ' Fin de boucle, s'il y a au moins un cas de doublon, on informe l'utilisateur
    If compteur > 0 Then
        res = MsgBox(MsgErrDoublons, vbError, "Erreur")
        'VerificationDoublonsCompte = True
    'Else
     '   VerificationDoublonsCompte = False
    End If

End Sub

L'erreur apparaît quand la fonction Find est appelée une deuxième fois (à la deuxième itération du DoWhile) avec un nouveau Range réévalué pour couvrir logiquement une plage moins importante à chaque itération.

Voici ci-joint la macro et un jeu de donnée dans lequel j'ai inséré deux doublons, identifiables par leur couleur.

En vous remerciant pour vos avis et conseils !

Bonjour vinzmeister,

Pour ma part, j'ai fait deux choses :

  • mis : On Error Resume Next
  • puis j'ai ajouté Trouve = ""

et ça fonctionne

le code en entier est :

Private Sub CommandButton1_Click()

Range("A2").Select

MsgErrDoublons = "Les comptes suivants sont en doublon, merci de corriger : " & vbCrLf

compteur = 0

'déclaration des variables :

Dim Trouve As String, PlageDeRecherche As Range

Dim Valeur_Cherchee As String, AdresseTrouvee As String

Do While ActiveCell.Value <> Empty

Trouve = ""

Valeur_Cherchee = ActiveCell.Value

' Plage de recherche commence à la cellule d'en dessous jusqu'à la dernière cellule non vide de la colonne

Set PlageDeRecherche = Range(Selection.Offset(1, 0), Selection.Offset(1, 0).End(xlDown))

MsgBox PlageDeRecherche.Address(True, True, xlA1)

'méthode find, ici on cherche la valeur exacte

On Error Resume Next

Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookAt:=xlWhole, SearchDirection:=xlNext)

'MsgBox Trouve

' Incrémentation des msg d'erreurs jusqu'à 5 occurences

If Trouve <> Empty Then

If compteur < 5 Then

MsgErrDoublons = MsgErrDoublons & " - " & Trouve & vbCrLf

compteur = compteur + 1

Else

MsgErrDoublons = MsgErrDoublons & " - etc .."

Exit Do

End If

End If

ActiveCell.Offset(1, 0).Select

Loop

' Fin de boucle, s'il y a au moins un cas de doublon, on informe l'utilisateur

If compteur > 0 Then

res = MsgBox(MsgErrDoublons, vbError, "Erreur")

'VerificationDoublonsCompte = True

'Else

' VerificationDoublonsCompte = False

End If

End Sub

Ah, c'est donc ça !

Mais quand le Find ne trouve rien, ce n'est pas censé retourner une "Erreur" mais plutôt "Nothing ?

En tout cas, merci !

Rechercher des sujets similaires à "recherche doublon colonne"