Erreur set c = FindNext (c)

lolobebop

XLDnaute Nouveau
Bonjour à tous,

Je me tourne vers vous car je n'arrive pas à solutionner un problème malgré de nombreuses recherches sur le forum.

J'ai réalisé une macro en VBA afin de vérifier si j'avais des doublons sur ma feuille.
Mes zones de recherche sont plusieurs petits tableaux sur la même feuille.

Je demande à ma macro de chercher la valeur "name" dans ma feuille et une fois celle ci trouver de chercher s'il y a des doublons dans le tableau.
Une fois la recherche terminée, je lui demande de passer avec la fonction findNext la prochaine cellule qui contient la valeur name.
Hors celle ci ne trouve pas d'autres cellules de ce type alors que la feuille en contient.

voilà le code que j'ai écrit
Code:
Function ErreurDoublons()
    
    ErreurDoublonsBDT = True
    
    NomOnglet = "Feuil1"
    Dim Collect As Collection
    Set Collect = New Collection
    
    Worksheets(NomOnglet).Activate
    With Worksheets(NomOnglet).Range("B:B")

    Set C = .Find("name", LookIn:=xlValues)
    If Not C Is Nothing Then
        firstAddress = C.Address
        Do
        
        If NomOnglet = "Feuil1" Then
    
            Cellule("column name").Select
            dernCol = Selection.End(xlToRight).Column
            Col = Selection.Column + 1
            LigneUnique = Cellule("is mandatory").Row
            LigneDebut = Cellule("name").Offset(8, 1).Row
            DernLigne = Cellule("Indexes").Row - 1
        
        End If

On Error Resume Next

For RowCur = LigneDebut To DernLigne
    If Cells(RowCur, Col).Value <> "" Then
        For ColCur = Col To dernCol
            If (Cells(LigneUnique, ColCur).Value = "yes") Then
                ValLigne = ValLigne & Cells(RowCur, ColCur)
            End If
        Next ColCur
    End If
    
    If (Not IsEmpty(ValLigne)) Then
        Collect.Add ValLigne, CStr(ValLigne)
        Erreur = Err.Number
        If Err <> 0 Then
            'Cells(RowCur, Col).Interior.ColorIndex = 8
            ErreurDoublons = False
            Err.Clear
            Exit For
        End If
    End If
    
Next RowCur
                    
Set Collect = Nothing

        Set C = .FindNext(C)
        Loop While Not C Is Nothing And C.Address <> firstAddress
    End If
End With

End Function

Je n'arrive pas a trouver mon erreur, pour le prochain C la valeur affichée est "Nothing" alors qu'il en existe encore.
Quelqu'un saurait-il d’où cela peut provenir ?

Je vous joint un fichier d'exemple.

Merci d'avance pour votre aide.
 

Pièces jointes

  • EssaiFind.xlsm
    23.9 KB · Affichages: 37

Si...

XLDnaute Barbatruc
Re : Erreur set c = FindNext (c)

salut

quel est l'intérêt de Find quand on boucle ? Pas sûr que cela soit vraiment plus rapide;
Un For ... Next ne suffirait-il pas ?
Code:
Function ErreurDoublons()
    ErreurDoublonsBDT = True
    Dim C As Range
    NomOnglet = "Feuil1"
    Dim Collect As Collection
    Set Collect = New Collection
    Worksheets(NomOnglet).Activate
    With Worksheets(NomOnglet)
      For Each C In .[B:B].SpecialCells(2)
        If C = "name" Then
...
 

lolobebop

XLDnaute Nouveau
Re : Erreur set c = FindNext (c)

Salut SI,

Merci pour ta réponse ça marche et c'est vrai que j'aurais du y penser.
Cependant aurais-tu quand même une idée sur pourquoi mon code ne marche pas, car j'ai l'impression de l'avoir bien écrit et j'aimerai bien comprendre.

en tout cas merci à tous pour votre aide
 

Statistiques des forums

Discussions
312 576
Messages
2 089 856
Membres
104 290
dernier inscrit
Beloumi3