Erreur 1004 VBA
Bonjour a tous,
Je viens solliciter votre aide car j'ai un problème sous vba que je n'arrive pas a résoudre malgré mes recherches sur internet et ce forum.
Voila ce que je souhaite faire :
- J'ai 2 fichiers excel : je cherche a vérifier l’intégrité et la cohérence des donnes du premier fichier par rapport au 2 eme qui me sert de référence.
- 1er fichier :fichier a traiter
- 2e fichier:fichier de reference
Pour cela je souhaite parcourir chaque cellule de la colonne G du 1er (ligne i) et chercher le même contenu dans le 2e fichier (ligne j). Ensuite vérifier que le contenu de E(i) = E(j) et N(i)=N(j), si la reponse est non colorier la ligne i et j de la même couleur et incrémenter une balise pour compter le nombre d'erreur et l'afficher par la suite.
Le but étant de vérifier que durant la manipulation sur le fichier 2, aucune donne n'est été intervertit par mégarde etc...
J'ai une erreur sur la ligne
While Workbooks(Nom1).Worksheet("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("G" & j).Valuequi me renvoie une erreur 438 : propriété ou méthode non gérée par cet objet.
Voici mon code vba :
Private Sub IdentifieProbleme_Click()
Dim Nom1 As String
Dim Nom2 As String
Dim i As Integer
Dim max1 As Integer
Dim max2 As Integer
'j'ouvre les deux classeur
Nom1 = ThisWorkbook.Name 'Fichier1.xls
Call Ouvre
Nom2 = ActiveWorkbook.Name ' fichier2.xls
Windows(Nom1).Activate
max1 = Range("E65536").End(xlUp).Row
Windows(Nom2).Activate
max2 = Range("E65536").End(xlUp).Row
For i = 2 To max1
j = 2
While Workbooks(Nom1).Worksheet("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("G" & j).Value
j = j + 1
Wend
If Workbooks(Nom1).Worksheet("Master Extraction").Range("E" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("E" & j).Value & Workbooks(Nom1).Worksheet("Master Extraction").Range("N" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("N" & j).Value Then
Workbooks(Nom1).Worksheet("Master Extraction").Range("E" & i).EntireRow.Font.Color = i
Workbooks(Nom2).Worksheet("Master Extraction").Range("E" & j).EntireRow.Font.Color = i
probleme = probleme + 1
End If
Next i
If probleme > 0 Then MsgBox "Il y a " & probleme & " erreurs", vbCritical
End SubFonction ouvre :
Function Ouvre()
Dim wbMyWb As Workbook
Dim Nom_Fichier As Variant
Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
If Nom_Fichier <> False Then
Set wbMyWb = Workbooks.Open(Nom_Fichier)
wbMyWb.Activate
End If
End FunctionMerci d'avance de m’éclairer de vos lumières
Salut a tous,
Je me suis debrouille pour faire marcher ma macro. Elle fonctionne sur un fichier de 100 lignes mais pas sur un fichier de 35000. Elle me renvoie une erreur 1004 "Erreur definie par l'application ou par l'objet" sur la ligne :
While Workbooks(Nom1).Worksheets("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheets("Master Extraction").Range("G" & j).ValueVoila mon code complet :
Private Sub IdentifieProbleme_Click()
Dim Nom1 As String
Dim Nom2 As String
Dim i As Integer
Dim max1 As Long
Dim max2 As Long
'j'ouvre les deux classeur
Nom1 = ThisWorkbook.Name 'Fichier1.xls
Call Ouvre
Nom2 = ActiveWorkbook.Name ' fichier2.xls
Windows(Nom1).Activate
max1 = Range("E65536").End(xlUp).Row
Windows(Nom2).Activate
max2 = Range("E65536").End(xlUp).Row
For i = 2 To max1
j = 2
While Workbooks(Nom1).Worksheets("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheets("Master Extraction").Range("G" & j).Value
j = j + 1
Wend
If Workbooks(Nom1).Worksheets("Master Extraction").Range("E" & i).Value <> Workbooks(Nom2).Worksheets("Master Extraction").Range("E" & j).Value Or Workbooks(Nom1).Worksheets("Master Extraction").Range("O" & i).Value <> Workbooks(Nom2).Worksheets("Master Extraction").Range("O" & j).Value Then
Workbooks(Nom1).Worksheets("Master Extraction").Range("E" & i).EntireRow.Interior.ColorIndex = 4
Workbooks(Nom2).Worksheets("Master Extraction").Range("E" & j).EntireRow.Interior.ColorIndex = 4
probleme = probleme + 1
End If
Next i
If probleme > 0 Then MsgBox "Il y a " & probleme & " erreurs", vbCritical
End SubDes idées ?
Merci d'avance
Bonjour,
A tout hasard, modifies
Dim i As Integerpar
Dim i As longSalut !
C'est fait mais cela ne change rien....
Je pense que c'est ma synthaxe sur cette ligne:
While Workbooks(Nom1).Worksheets("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheets("Master Extraction").Range("G" & j).Value