Erreur dans l'utilisation de la fonction FIND dans une macro

bintuz

XLDnaute Nouveau
Bonjour,
Je suis bloquee depuis 1h sur une macro. Je peux montrer le code mais pas les donnees qui sont confidentielles.

J'utilise la fonction FIND pour comparer 2 onglets. Chaque onglet a en colonne A un ID qui me sert de clé pour comparer l'occurrence de cette ligne possedant cet ID dans chaque onglet.
Excel me fait la comparaison, mais a un moment ça bugge avec l'erreur suivante:

"runtime error 91
Object variable or With block variable not set"


J'ai compris que Excel va bien jusqu'au bout, mais je ne parviens pas a gerer le cas ou l'ID n'est pas trouvee dans le premier fichier sans provoquer d'erreur qui bloque le derniere partie de la macro (masquer les colonnes), voici mon code (de debutante), des fois que quelqu'un peut me depanner:

Code:
Sub newtest()
    Dim c As Range
    Dim MyID As Integer
    Dim co As Object
    Dim theRow As Integer


    Set IDListOLD = Sheet4.Range("A1", Sheet4.Range("A65536").End(xlUp))
    Set IDListNEW = Sheet2.Range("A1", Sheet2.Range("A65536").End(xlUp))

    i = 1
    curseur = 2
    
   For Each c In IDListNEW
    i = i + 1
    
    'select the contribution ID
    MyID = Sheet2.Range("A" & i)
    Set co = IDListOLD.Find(MyID)
    theRow = co.Row
            'test: change in Donor, column C
            'test: change in Award number, column E
            'test: change in Channel, column F
            'test: change in Geography, column H
            'test: change in Amount in local currency, column M
            'test: change in Amount with indirect cost, column N
            'test: change in Start date, column Q
        If Sheet2.Range("C" & i) <> Sheet4.Range("C" & theRow) Or Sheet2.Range("E" & i) <> Sheet4.Range("E" & theRow) Or Sheet2.Range("F" & i) <> Sheet4.Range("F" & theRow) Or Sheet2.Range("H" & i) <> Sheet4.Range("H" & theRow) Or Sheet2.Range("M" & i) <> Sheet4.Range("M" & theRow) Or Sheet2.Range("N" & i) <> Sheet4.Range("N" & theRow) Or Sheet2.Range("Q" & i) <> Sheet4.Range("Q" & theRow) Then
            Sheet2.Select
            Range("A" & i, "AD" & i).Select
            Selection.Copy
            Sheet3.Select
            Range("A" & curseur, "AD" & curseur).Select
            ActiveSheet.Paste
            curseur = curseur + 1
                
            Sheet4.Select
            Range("A" & theRow, "AD" & theRow).Select
            Selection.Copy
            Sheet3.Select
            Range("A" & curseur, "AD" & curseur).Select
            ActiveSheet.Paste
            curseur = curseur + 1

        End If

   Set co = Nothing
  Next c
  Sheet3.Select
  Columns("B:B").Select
  Selection.EntireColumn.Hidden = True
  Columns("D:D").Select
  Selection.EntireColumn.Hidden = True
  Columns("I:L").Select
  Selection.EntireColumn.Hidden = True
  Columns("P:P").Select
  Selection.EntireColumn.Hidden = True
  Columns("R:AB").Select
  Selection.EntireColumn.Hidden = True
End Sub

Merci d'avance !
 
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 195
Membres
112 680
dernier inscrit
AKDS