Macro qui compare deux cellule de deux fichiers different.
Lemaestro7
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
salut à tous.
voila je suis débutant en VBA, je voudrais écrire une macro qui va me permettre de les cellules d'un fichier 1 avec les cellules d'un fichier 2 et reporter le résultat dans un autre fichier excel en écrivant s'il y a différence "faux" par exemple et si elle sont identique "vrai". merci pour votre aide.
voila je suis débutant en VBA, je voudrais écrire une macro qui va me permettre de les cellules d'un fichier 1 avec les cellules d'un fichier 2 et reporter le résultat dans un autre fichier excel en écrivant s'il y a différence "faux" par exemple et si elle sont identique "vrai". merci pour votre aide.
A voir également:
- Macro qui compare deux cellule de deux fichiers different.
- Deux ecran pc - Guide
- Nombre de jours entre deux dates excel - Guide
- Comment faire deux colonnes sur word - Guide
- Concatener deux cellules excel - Guide
- Deux whatsapp sur un téléphone - Guide
2 réponses
Bonjour,
Vous pouvez mettre a dispo un exemple des deux fichiers a comparer et celui qui reçoit l'info?
Vous pouvez mettre a dispo un exemple des deux fichiers a comparer et celui qui reçoit l'info?
avec un peu de modification voila une solution au problème.
Sub Bouton1_Cliquer()
Dim TN_1
Dim TN_2
Dim TN_Res As Range
Dim DernLigne As Long
On Error GoTo Fin 'traitement erreur(s)
'fige raffraichissement ecran
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path & "\"
'mise en memoire tableau notes
With Worksheets("feuil1")
'dernier cellule non vide colonne A
DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
'mise en memoire Plage de cellule
Set TN_Res = .Range("A1:A" & DernLigne)
End With
'ouverture classeur 1 pour recupe tableau notes
Workbooks.Open (Chemin & "Classeur1.xlsx")
'mise en memoire tableau note
TN_1 = Worksheets("feuil1").UsedRange
'fermeture classeur 1
Workbooks("Classeur1.xlsx").Close True
'ouverture classeur 2 pour recupe tableau notes
Workbooks.Open (Chemin & "Classeur2.xlsx")
'mise en memoire tableau note
TN_2 = Worksheets("feuil1").UsedRange
'fermeture classeur 2
Workbooks("Classeur2.xlsx").Close True
'-------------------------------------------
'| traitement des tableaux notes |
'-------------------------------------------
'boucle pour ecriture de l'entete
For NL = 1 To 4
TN_Res(NL, 1) = TN_1(NL, 1)
Next NL
For NC = 1 To 4
TN_Res(1, NC) = TN_1(1, NC)
Next NC
'boucle sur ligne colonne A
For NL = 2 To 4
'boucle sur les colonnes
For NC = 2 To 4
If TN_1(NL, NC) <> TN_2(NL, NC) Then 'contenus cellules differents
TN_Res(NL, NC) = "Pas de note" 'ecriture cellule classeur Resultat
Else 'contenus cellules identiques
TN_Res(NL, NC) = "Ok" 'ecriture cellule classeur Resultat
End If
Next NC
Next NL
ThisWorkbook.Save
Fin:
'raffraichissement ecran ok
Application.ScreenUpdating = True
End Sub
Dim TN_1
Dim TN_2
Dim TN_Res As Range
Dim DernLigne As Long
On Error GoTo Fin 'traitement erreur(s)
'fige raffraichissement ecran
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path & "\"
'mise en memoire tableau notes
With Worksheets("feuil1")
'dernier cellule non vide colonne A
DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
'mise en memoire Plage de cellule
Set TN_Res = .Range("A1:A" & DernLigne)
End With
'ouverture classeur 1 pour recupe tableau notes
Workbooks.Open (Chemin & "Classeur1.xlsx")
'mise en memoire tableau note
TN_1 = Worksheets("feuil1").UsedRange
'fermeture classeur 1
Workbooks("Classeur1.xlsx").Close True
'ouverture classeur 2 pour recupe tableau notes
Workbooks.Open (Chemin & "Classeur2.xlsx")
'mise en memoire tableau note
TN_2 = Worksheets("feuil1").UsedRange
'fermeture classeur 2
Workbooks("Classeur2.xlsx").Close True
'-------------------------------------------
'| traitement des tableaux notes |
'-------------------------------------------
'boucle pour ecriture de l'entete
For NL = 1 To 4
TN_Res(NL, 1) = TN_1(NL, 1)
Next NL
For NC = 1 To 4
TN_Res(1, NC) = TN_1(1, NC)
Next NC
'boucle sur ligne colonne A
For NL = 2 To 4
'boucle sur les colonnes
For NC = 2 To 4
If TN_1(NL, NC) <> TN_2(NL, NC) Then 'contenus cellules differents
TN_Res(NL, NC) = "Pas de note" 'ecriture cellule classeur Resultat
Else 'contenus cellules identiques
TN_Res(NL, NC) = "Ok" 'ecriture cellule classeur Resultat
End If
Next NC
Next NL
ThisWorkbook.Save
Fin:
'raffraichissement ecran ok
Application.ScreenUpdating = True
End Sub
quand je remplace DernLigne par une valeur ca fonctionne bien. quand j 'essaye d'afficher ce qu'il ya dans la variable DernLigne ca affiche une valeur. mais puisque ca ne fontionne pas dans la boucle, je pense que cette valeur est soit un caractere soit il ya un espace devant. et c'est pour cela que la boucle ne fonctionne pas.
j'ai deja gerer le chemin et tout le reste
j'ai deja gerer le chemin et tout le reste
https://www.cjoint.com/c/HADirNexaGO classeur 1
https://www.cjoint.com/c/HADisKMz62O classeur 2
https://www.cjoint.com/c/HADitBGVNGO classeur 3
Je regarde la chose
Z'etes vraiment debutant ???
Juste un detail, le code VBA doit etre dans le classeur3 ou ?????
A+
Fichier traitement pour la meme liste de noms dans les trois classeurs:
Code VBA relativement "simple"
https://mon-partage.fr/f/fr9tiyi3/