Methode Find.row renvoit : ERREUR 91

Bonjour à tous.

Je suis entrain de coder pour comparer deux listes pour effectuer un tri par la suite.

Voici mon code :

Sub testtri()

Dim i, a As Object, b, numeroligne, rep1, rep2, rep3

For i = 1 To Sheets(3).Range("B" & Rows.Count).End(xlUp).Row

b = Sheets(3).Cells(i, 2).Value
Set a = Sheets(4).Range("B:B").Find(b)
numeroligne = a.Row 'PROBLEME'

    If a Is Nothing Then
    rep1 = MsgBox("Nouvelle NCN", vbOKOnly + vbExclamation, "Alerte")
        If rep1 = vbOK Then
        rep2 = MsgBox(Sheets(3).Cells(i, 2).Value, vbOKOnly, "La nouvelle NCN est la : ")
            If rep2 = vbOK Then
            Sheets(3).Rows(i).Interior.ThemeColor = xlThemeColorAccent3
            End If
        End If

    ElseIf Sheets(3).Cells(i, 11).Value <> Sheets(4).Cells(numeroligne, 11).Value Then
        rep3 = MsgBox(Sheets(3).Cells(i, 2).Value, vbOKOnly + vbExclamation, "NCN fermée : ")

    End If

Next i

End Sub

Le problème c'edt qu'au niveau de la ligne 'PROBLEME', on me détecte une erreur 91.

Pourriez-vous m'aider ?

Merci à vous.

Cordialement

AlexisAz

Bonjour

Je suppose que si la ligne n'est pas trouvée il faut le message Nouvelle NCN ??

Essaie en remplaçant le début du code par ceci :

Sub testtri()

Dim i As Integer, b As Integer ', numeroligne As Integer
Dim rep1, rep2, rep3, numeroligne

For i = 1 To Sheets(3).Range("B" & Sheets(3).Rows.Count).End(xlUp).Row

b = Sheets(3).Cells(i, 2).Value
On Error Resume Next
numeroligne = Sheets(4).Range("B:B").Find(b).Row
'numeroligne = a.Row 'PROBLEME'

    If numeroligne = 0 Then ' Is Nothing Then
....

Crdlt

Bonjour Dan !

Merci de ton aide, cela marche parfaitement maintenant !

Pourrais-tu m'expliquer pourquoi ma version n'a pas marchée ? Je comprend les modifications que tu as faites mais pas pourquoi ma technique n'a pas marché.

Merci à toi en tout cas.

Cordialement

AlexisAz

Re-bonjour,

Je me suis emballé un peu vite, enfaite le code marche très bien mais la technique "numeroligne=0" ne marche pas.

Cette boucle n'est jamais utilisée et malgré mes tentatives je ne comprend pas pourquoi.

Que je lance en mode "pas à pas" je vois bien que dans une situation ou "numéroligne" devrait être égale à 0 (donc pas de correspondance) bah il reste égale à 7 ou 11 par exemple ... et je ne comprend pas pourquoi.

Please help ? (a)

Bonjour AlexisAz

Commence déjà par définir le type de toutes tes variables

Ensuite tu verras la réponse s'imposera à toi toute seule

A+

Re,

Que je lance en mode "pas à pas" je vois bien que dans une situation ou "numéroligne" devrait être égale à 0 (donc pas de correspondance) bah il reste égale à 7 ou 11 par exemple ... et je ne comprend pas pourquoi

.

Normal car lorsque la valeur n'est pas trouvée, numeroligne conserve la valeur trouvée dans la boucle précédente

Exemple : si lorsque i=3 une valeur est trouvée en ligne 7 de la colonne B, numeroligne sera égal à 7. Si lors de la boucle suivante i=4 mais que la valeur n'est pas trouvée numeroligne est toujours égal à 7 au lieu d'être à 0.

Pour contourner le pb, mets l'instruction numeroligne = 0 juste avant NEXT i

Crdlt

Bonjour,

Merci pour votre réponse à tout les deux qui se complète parfaitement.

Vous m'avez évité des heures de travail.

Vive vous !

Cordialement

AlexisAz

Rechercher des sujets similaires à "methode find row renvoit erreur"