Comparaison lecontenu de 2 fichiers excel en VBA

Signaler
Messages postés
2
Date d'inscription
mardi 2 juin 2015
Statut
Membre
Dernière intervention
2 juin 2015
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous,

Je suis débutant en VBA et sa fait plus de 3 jours que je cherche à resoudre cet probleme.

J'ai 2 fichiers (tests2.xlsx et test1.xlsx) que je dois comparer.

-Dans le fichiers tests2:
J'ai Axxx= p1 + p2 + p3+ p4

Dans le fichier test1:
Axxx= p2 + p1
Axxx= p3 + p1
Axx= p4 + p1

J'aimerai verifié si tous les Axxx du tests2 sont présents dans test1,
si Axxx= p2 + p1
Axxx= p3 + p1
Axx= p4 + p1
corespond à Axxx= p1 + p2 + p3+ p4
exemple:
J'ai A001= PLN+ PJM+QUA dans tests2.xlsx
Et A001= PJM+ PLN
A001= QUA +PLN

J'arrive pas à coloré les cellules des Axxx du tests2.xlsx qui n se trouvent pas ou bien qui ne correspondent pas dans test1.xlsx
ci-joint les fichiers
code:
Private Sub CommandButton3_Click()


'Evite de voir les opérations intermédiaire sur les fichiers
Application.ScreenUpdating = False

'déclarations des variables
Dim i As Long
Dim j As Long
Dim Sh As Worksheet
Dim Tablo1
Dim Tablo2

Workbooks.Open ("D:\Couz\test1.xlsx")
Set Sh = Workbooks("test1.xlsx").Worksheets("Feuil1") 'feuille
With Sh
Tablo1 = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Value
End With

Workbooks("test1.xlsx").Close False
Workbooks.Open ("D:\Couz\test2.xlsx")

Set Sh = Workbooks("test2.xlsx").Worksheets("Feuil1")
With Sh
Tablo2 = .Range(.Cells(4, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Value
End With

For i = LBound(Tablo2, 1) To UBound(Tablo2, 1)
For j = LBound(Tablo1, 1) To UBound(Tablo1, 1)
If Tablo2(i, 1) = Tablo1(j, 2) Then

If ((Tablo2(i, 1) & Tablo2(i, 4) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or (Tablo2(i, 1) & Tablo2(i, 8) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or (Tablo2(i, 1) & Tablo2(i, 9) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5))) Then

Sh.Cells(i + 3, 1).Interior.Color = 16777215


Else
Sh.Cells(i + 3, 1).Interior.Color = 2
Exit For
End If
End If
Next j
Next i

Set Sh = Nothing

Application.ScreenUpdating = True

End Sub

7 réponses

Messages postés
2
Date d'inscription
mardi 2 juin 2015
Statut
Membre
Dernière intervention
2 juin 2015

Personnellement, je ne parviens pas à comprendre exactement ce que tu veux faire. Donc je préfère m'abstenir plutôt que de perdre du temps à faire quelque chose qui n'est peut-être pas ce que tu souhaites.


Bonjour Menhir,

J'ai 2 fichiers que je vais comparer.

J'ai Axxx qui corespond à P1, P2,P3,P4 dans le fichier tests2.

J'ai dans un 2eme ficher test1 le même Axx qui corespond à P2, P1;P3,P1 et P4,P1 sur des differentes lignes.

exemple:
J'ai dans le fichier test2 sur la meme ligne A001= P2 (cellule 5) + P1 (cellule 5) + P3( cellule 8) +P4 (cellule 9).

Dans le fichier test1 j'ai: A001 = P2(cellule 4) +P1(Cellule 5)
A001= P3(Cellule 4) +P1(Cellule 5)
A001=P4(Cellule 4) + P1 (cellule 5)
J'aimerai compararer voir si les quatres P du du fichier tests2 se trouve dans le fichier test1
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Qui est Menhir et où se trouve son message (celui que tu cites) ?
Je crains assez que tu répondes sur ce forum à un message que tu as reçu sur un autre site !
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Bonjour,

Je n'ai pas tout bien compris, mais si je me fie à la logique de ton code, la ligne suivante a possiblement un problème de parenthès
If ((Tablo2(i, 1) & Tablo2(i, 4) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or (Tablo2(i, 1) & Tablo2(i, 8) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or (Tablo2(i, 1) & Tablo2(i, 9) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5))) Then


Devrait probablement s'écrire
If ((Tablo2(i, 1) & Tablo2(i, 4) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or ((Tablo2(i, 1) & Tablo2(i, 8) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or ((Tablo2(i, 1) & Tablo2(i, 9) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Then

Bonjour,
Merci pour votre réponse.

Je vous explique le principe:

J'ai 2 fichiers que je vais comparer.

j'ai 2 fichiers (test2 et test1) excel dans lesquels se trouvent des données que je vais comparer.
exemple des données:

Dans le fichier test2 j'ai cette ligne suivante
A001= P2 (Ligne 4, cellule 5) + P1 (Ligne 4, cellule 4) + P3(Ligne 4, cellule 8) +P4 (Ligne 4, cellule 9).=PJM+PLN+QUA+ECP

A002=P2 (Ligne 5, cellule 5) + P1 (Ligne5, cellule 4) + P3(Ligne 5, cellule 8) =QUA+REP+QUA

B001= P2 (Ligne 6, cellule 5) + P1 (Ligne 6, cellule 4)= REG + ISP
Etc.

Dans le fichier test1 j'ai:
A001 = P2(Ligne 2, cellule 4) +P1(Ligne 2, Cellule 5)= PJM+PLN
A001=P3(Ligne 3, Cellule 4) + P1 (Ligne 3, cellule 5) =QUA + PLN
A001=P4(Ligne 4, Cellule 4) + P1 (Ligne 4, cellule 5)= ECP + PLN

A002=P2(Ligne 5, cellule 4) +P1(Ligne 5, Cellule 5)= QUA+REP
A002=P2(Ligne 6, cellule 4) +P1(Ligne 6 Cellule 5)=QUA + REP

B001=P2 (Ligne 7, cellule 4) + P1 (Ligne 7, cellule 5)= REG + ISP
Etc.


J'aimerai comparer si tous les valeurs de Axxx du fichier test2 se trouve dans le fichier test1, s'il se trouve pas ou les données ne correspond pas, il met la cellule en couleur bleu ou d'autre couleur.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Je crains fort que cela ne devienne de plus en plus incompréhensible, tout au moins pour moi.. (je dois être devenu sénile).
Que sont A001, A002, etc ... des booléennes ?
Que sont PI, PJM, PLN, QUA, etc ... ?
J'ai mal au crâne ....et me dis que je ne devrais pas avoir à me le "casser", qu'il est totalement anormal d'avoir à me le "casser", pour essayer de deviner ce dont il s'agit !
Messages postés
2447
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
24 juillet 2021
138
Salut MacroVBA

CE que j'ai compris :
le A002 de test1 n'a pas le P3 de A002 de test2
C'est cela que tu veux détecter comme différence ?

Autre chose dans A002 de test2 on a
A002=P2 (Ligne 5, cellule 5) + P1 (Ligne5, cellule 4) + P3(Ligne 5, cellule 8) =QUA+REP+QUA

C'est normal que QUA se réfère aussi bien à P2 qu'à P3 ?

Maintenant je rejoins ucfoutu et son mal au cräne !
Bonjour à tous,
Axxx est un identifiant qui identifie la ligne.

Dans le fichier test2 j'ai cette ligne suivante
A001= P2 (Ligne 4, cellule 5) ; P1 (Ligne 4, cellule 4) ; P3(Ligne 4, cellule 8) ;P4 (Ligne 4, cellule 9).=PJM(Ligne 4, cellule 5);PLN (Ligne 4, cellule 4);QUA (Ligne 4, cellule 8);ECP (Ligne 4, cellule 9)

A002=P2 (Ligne 5, cellule 5) +; P1 (Ligne5, cellule 4) ; P3(Ligne 5, cellule 8) =QUA;REP;QUA

B001= P2 (Ligne 6, cellule 5) ; P1 (Ligne 6, cellule 4)= REG ; ISP
Etc.

Dans le fichier test1 j'ai:
A001 = P2(Ligne 2, cellule 4) ;P1(Ligne 2, Cellule 5)= PJM;PLN
A001=P3(Ligne 3, Cellule 4) ; P1 (Ligne 3, cellule 5) =QUA ; PLN
A001=P4(Ligne 4, Cellule 4) ; P1 (Ligne 4, cellule 5)= ECP ; PLN

A002=P2(Ligne 5, cellule 4) ;P1(Ligne 5, Cellule 5)= QUA;REP
A002=P2(Ligne 6, cellule 4) ;P1(Ligne 6 Cellule 5)=QUA ; REP

B001=P2 (Ligne 7, cellule 4) ; P1 (Ligne 7, cellule 5)= REG ; ISP
Etc.

Mon but c'est de détecté que A001=PJM;PLN;QUA;ECP du test2 bonne bien
A001 = P2(Ligne 2, cellule 4) ;P1(Ligne 2, Cellule 5)= PJM;PLN
A001=P3(Ligne 3, Cellule 4) ; P1 (Ligne 3, cellule 5) =QUA ; PLN
A001=P4(Ligne 4, Cellule 4) ; P1 (Ligne 4, cellule 5)= ECP ; PLN
dans test1.

SI vous regardez bien, il ya bien PJM;QUA;ECP sur une meme ligne de test + PLN et sur des lignes différentes pour le test1.


Je pense j'ai été un peu plus claire?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Je pense j'ai été un peu plus claire?

Absolument pas !
Et les formulations du genre (ici la denière, mais elles sont toutes du même acabit) :
B001= P2 (Ligne 6, cellule 5) ; P1 (Ligne 6, cellule 4)= REG ; ISP
n'ont aucune signification compréhensible !
A défaut de clarté absolue d'une réponse/message de dernière chance de ta part, je ne reviendrai personnellement plus dans cette discussion. (Il est anormal d'en arriver là !)

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.