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).Value

qui 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 Sub

Fonction 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 Function

Merci d'avance de m’éclairer de vos lumières

up ?

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).Value

Voila 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 Sub

Des idées ?

Merci d'avance

Bonjour,

A tout hasard, modifies

Dim i As Integer

par

Dim i As long

Salut !

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
Rechercher des sujets similaires à "erreur 1004 vba"