Objet requis - Test égalité de cellules

Bonjour,

J'essaye actuellement de vérifier l'égalité entre deux cellules de deux classeurs différents mais j'ai l'erreur suivante : objet requis

Voici mon code :

parcours = 4 'pointeur de lignes fichier récapitulatif
parcoursCRD = 3 'pointeur de lignes fichier client
While (parcours) <> 2000  'parcours jusqu'à la ligne 2000
    If ws1.Cells(parcours, "J") <> "" Then
        crdFile = "C:\Users\sglass\Documents\CRD_all_companies_v1.xls" 'affectation du fichier client
        Application.Workbooks.Open (crdFile) 'ouverture du fichier client
        While (parcoursCRD < 10000) 'parcours jusqu'à la dernière ligne du fichier client
        valueWS1 = ws1.Cells(parcours, "J") 'affectation de la valeur de la cellule
        valueCRD = crdFile.Cells(parcoursCRD, "B") 'affectation de la valeur de la cellule
            If valueWS1 <> valueCRD Then
                parcoursCRD = parcoursCRD + 1
            End If
            crdFile.Range(parcoursCRD, "C").Copy ws1.Range(parcours, "K") 'copie de la colonne "Name" dans le fichier récapitulatif
        Wend
    End If
    parcours = parcours + 1
Wend

L'erreur s'effectue à l'opéraion "valueCRD = crdFile.Cells....

En utilisant le débugger, je constate que tout se passe bien jusqu'à cette opération.

Avez-vous une idée?

Je vous remercie,

Bien cordialement,

Bonjour,

Juste 2 points :

- Pourquoi ouvres-tu ton fichier CRD 2000 fois?

Il faudrait l'ouvrir dès le début du code, et non pas dès que tu commence ta boucle...

- Tu ne peux pas faire référence à des cellules directement au niveau de classeur, mais il faut définir un onglet...

style :

valueCRD = crdFile.Sheets(1).Cells(parcoursCRD, "B") 'affectation de la valeur de la cellule

Si les cellules à tester sont dans le premier onglet...

Bon courage

Bonjour,

remplace peutêtre ceci :

valueCRD = crdFile.Cells(parcoursCRD, "B")

par cela :

valueCRD = WorkBooks("CRD_all_companies_v1.xls").Sheets("NomFeuille").Cells(parcoursCRD, "B")

nom de la feuille à adapter.

A voir aussi si ceci ne peut pas suffire :

valueCRD = Cells(parcoursCRD, "B")

si feuille active est la bonne...

bon après midi

@+

Edition : bonjour CousinHub:)

Hello, tout d'abord, merci pour vos réponses.

J'ai un petit peu changé ma macro par rapport à vos réponses et voici mon nouveau code :

parcours = 4 'pointeur de lignes fichier récapitulatif
parcoursCRD = 3 'pointeur de lignes fichier client
crdFile = "C:\Users\sglass\Documents\CRD_all_companies_v1.xls"
Application.Workbooks.Open (crdFile)
valueCRD = ""
While (parcours) <> 2000
    If ws1.Cells(parcours, "J") <> "" Then
        valueWS1 = ws1.Cells(parcours, "J").Value
        While (parcoursCRD < 10000)
        valueCRD = Workbooks("CRD_all_companies_v1.xls").Sheets("Report 1").Cells(parcoursCRD, "B")
            If valueWS1 <> valueCRD Then
                valueCRD = ""
            Else
                valueCRD = Workbooks("CRD_all_companies_v1.xls").Sheets("Report 1").Cells(parcoursCRD, "B") 'affectation de la valeur de la cellule
            End If
            parcoursCRD = parcoursCRD + 1
        Wend
        crdFile.Range(parcoursCRD, "C").Copy ws1.Range(parcours, "K")
    End If
    parcours = parcours + 1
Wend

Edit : Avec le débugger, j'ai pu constater que :

valueWs1 = 7042

valueCRD = "7042"

Pourquoi est-ce que je me retrouve avec des parenthèses pour cette valeur ci?

Rechercher des sujets similaires à "objet requis test egalite"