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
WendL'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 celluleSi 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
WendEdit : 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?