OVH Cloud OVH Cloud

comparaison de tableaux

2 réponses
Avatar
tam
Bonjour

Quelqu'un aurait - il la patience de faire du pas =E0 pas avec moi ?
xp home office xp

Mon probl=E8me :

Ai
sur ma feuille 1 un tableau allant de A7 =E0 E7 sur A81 =E0 E 81
La colonne A contient les libell=E9s(texte),, les colonnes B,C,D,E des
chiffres entiers ou fractions (format de cellule)

sur ma feuille 2 un tableau allant de A7 =E0 E7 sur A81 =E0 E 81
La colonne A contient les libell=E9s(texte), les colonnes B,C,D,E des
nombres ou fractions (format de cellule)
Les deux tableaus sont identiques en grandeur avec quelques cellules
vides

Ai trouv=E9 sur le site =AB diff=E9rence entre 2 tableaux =BB pour m=E9moire
:
-------------------------------
Sub ComparaisonTableau()

Dim RG1 As Range, RG2 As Range
Dim Tblo1, Tblo2, Rg3 As Range
Dim A As Long, B As Integer, C As Long, D As Integer

Set RG1 =3D Sheets("Feuil1").Range("A1:A10") 'Tabeau 1
Set RG2 =3D Sheets("Feuil2").Range("A1:A10") 'Tableau 2
Set Rg3 =3D Sheets("Feuil3").Range("A1") 'Tableau des r=E9sultats

If RG1.Rows.Count <> RG2.Rows.Count Then
MsgBox "Le tableau n'a pas le m=EAme nombre de lignes"
Exit Sub
End If
If RG1.Columns.Count <> RG2.Columns.Count Then
MsgBox "Le tableau n'a pas le m=EAme nombre de colonnes"
Exit Sub
End If

Tblo1 =3D RG1: Tblo2 =3D RG2: D =3D 1
Application.ScreenUpdating =3D False
For A =3D 1 To UBound(Tblo1, 1)
For B =3D 1 To UBound(Tblo1, 2)
If Tblo1(A, B) <> Tblo2(A, B) Then
C =3D C + 1
Rg3(C, D) =3D RG1(A, B).Address(0, 0)
Rg3(C, D).Offset(, 1) =3D Tblo1(A, B)
Rg3(C, D).Offset(, 2) =3D RG2(A, B).Address(0, 0)
Rg3(C, D).Offset(, 3) =3D Tblo2(A, B)
End If
Next
Next

Set RG1 =3D Nothing: Set RG2 =3D Nothing: Set Rg3 =3D Nothing
Erase Tblo1: Erase Tblo2


qui ferait exactement ce que je veux, je crois, sauf que je ne sais pas
l' utiliser

je ne sais pas d=E9terminer RG je crois
je sais atteindre par outils macros visual basic =E9diteur this workbook
mais rien ne se passe donc y a une bulle

basique certes mais surtout frustant

et en plus j'aimerais que les r=E9sultats n=E9gatifs soient de couleur
diff=E9rente


il faudrait bien que je commence quelque part et j'aimerais bien
comprendre
alors si quelqu'un voulait bien se d=E9vouer..............
ce serait extr=EAmement gentil de votre part
merci d'avance
tam

2 réponses

Avatar
docm
Bonjour tam.

Premiers pas.

Quand tu es dans l'Éditeur Visual Basic, clique sur le menu Insertion/Module.

Puis fais un copier/Coller de ce qui suit dans la fenêtre d'édition.
Ensuite tu choisiras le menu Exécution/Exécuter Sub-Userform ou tu pèseras sur F5 ce qui revient au même.

Sub ComparaisonTableau()

Dim RG1 As Range, RG2 As Range
Dim Tblo1, Tblo2, Rg3 As Range
Dim A As Long, B As Integer, C As Long, D As Integer

Set RG1 = Sheets("Feuil1").Range("A7:E87") 'Tabeau 1
Set RG2 = Sheets("Feuil2").Range("A7:E87") 'Tableau 2
Set Rg3 = Sheets("Feuil3").Range("A1") 'Tableau des résultats

If RG1.Rows.Count <> RG2.Rows.Count Then
MsgBox "Le tableau n'a pas le même nombre de lignes"
Exit Sub
End If
If RG1.Columns.Count <> RG2.Columns.Count Then
MsgBox "Le tableau n'a pas le même nombre de colonnes"
Exit Sub
End If

Tblo1 = RG1: Tblo2 = RG2: D = 1
Application.ScreenUpdating = False
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If Tblo1(A, B) <> Tblo2(A, B) Then
C = C + 1
Rg3(C, D) = RG1(A, B).Address(0, 0)
Rg3(C, D).Offset(, 1) = Tblo1(A, B)
Rg3(C, D).Offset(, 2) = RG2(A, B).Address(0, 0)
Rg3(C, D).Offset(, 3) = Tblo2(A, B)
End If
Next
Next

Set RG1 = Nothing: Set RG2 = Nothing: Set Rg3 = Nothing
Erase Tblo1: Erase Tblo2

End Sub



"tam" a écrit dans le message de news:
Bonjour

Quelqu'un aurait - il la patience de faire du pas à pas avec moi ?
xp home office xp

Mon problème :

Ai
sur ma feuille 1 un tableau allant de A7 à E7 sur A81 à E 81
La colonne A contient les libellés(texte),, les colonnes B,C,D,E des
chiffres entiers ou fractions (format de cellule)

sur ma feuille 2 un tableau allant de A7 à E7 sur A81 à E 81
La colonne A contient les libellés(texte), les colonnes B,C,D,E des
nombres ou fractions (format de cellule)
Les deux tableaus sont identiques en grandeur avec quelques cellules
vides

Ai trouvé sur le site « différence entre 2 tableaux » pour mémoire
:
-------------------------------
Sub ComparaisonTableau()

Dim RG1 As Range, RG2 As Range
Dim Tblo1, Tblo2, Rg3 As Range
Dim A As Long, B As Integer, C As Long, D As Integer

Set RG1 = Sheets("Feuil1").Range("A1:A10") 'Tabeau 1
Set RG2 = Sheets("Feuil2").Range("A1:A10") 'Tableau 2
Set Rg3 = Sheets("Feuil3").Range("A1") 'Tableau des résultats

If RG1.Rows.Count <> RG2.Rows.Count Then
MsgBox "Le tableau n'a pas le même nombre de lignes"
Exit Sub
End If
If RG1.Columns.Count <> RG2.Columns.Count Then
MsgBox "Le tableau n'a pas le même nombre de colonnes"
Exit Sub
End If

Tblo1 = RG1: Tblo2 = RG2: D = 1
Application.ScreenUpdating = False
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If Tblo1(A, B) <> Tblo2(A, B) Then
C = C + 1
Rg3(C, D) = RG1(A, B).Address(0, 0)
Rg3(C, D).Offset(, 1) = Tblo1(A, B)
Rg3(C, D).Offset(, 2) = RG2(A, B).Address(0, 0)
Rg3(C, D).Offset(, 3) = Tblo2(A, B)
End If
Next
Next

Set RG1 = Nothing: Set RG2 = Nothing: Set Rg3 = Nothing
Erase Tblo1: Erase Tblo2


qui ferait exactement ce que je veux, je crois, sauf que je ne sais pas
l' utiliser

je ne sais pas déterminer RG je crois
je sais atteindre par outils macros visual basic éditeur this workbook
mais rien ne se passe donc y a une bulle

basique certes mais surtout frustant

et en plus j'aimerais que les résultats négatifs soient de couleur
différente


il faudrait bien que je commence quelque part et j'aimerais bien
comprendre
alors si quelqu'un voulait bien se dévouer..............
ce serait extrêmement gentil de votre part
merci d'avance
tam
Avatar
michdenis
Bonjour Tam,

Ce qui suit te crée un tableau sur la feuil3
et place dans cette feuille, un tableau où il
inscrit les adresses où les données de la feuil1
diffère des données de la feuil2


Il ne te reste plus qu'à indiquer dans la procédure,
le nom des feuilles et indiquer les plages de cellules
pour la feuil1 et la feuil3 et indiquer la cellule où le
tableau doit débuter en feuil3


'------------------------------------
Sub ComparaisonTableau()

Dim RG1 As Range, RG2 As Range
Dim Tblo1, Tblo2, Rg3 As Range
Dim A As Long, B As Integer, C As Long, D As Integer

'Tableau 1 : adapte le nom feuille et la plage de cellules
Set RG1 = Sheets("Feuil1").Range("A1:d10") 'Tabeau 1
'Tableau 2 : Adapte le nom de la feuille et plage
Set RG2 = Sheets("Feuil2").Range("A1:d10") 'Tableau 2
'Tableau 3 : Tableau des résultats : affiche les différences
Set Rg3 = Sheets("Feuil3").Range("A1") 'Tableau des résultats

If RG1.Rows.Count <> RG2.Rows.Count Then
MsgBox "Le tableau n'a pas le même nombre de lignes"
Exit Sub
End If
If RG1.Columns.Count <> RG2.Columns.Count Then
MsgBox "Le tableau n'a pas le même nombre de colonnes"
Exit Sub
End If

Tblo1 = RG1: Tblo2 = RG2: C = 1
Application.ScreenUpdating = False
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
D = D + 1
If Tblo1(A, B) <> Tblo2(A, B) Then
Rg3(C, D) = RG1(A, B).Address(0, 0)
End If
Next
D = 0
C = C + 1
Next

Set RG1 = Nothing: Set RG2 = Nothing: Set Rg3 = Nothing
Erase Tblo1: Erase Tblo2
End Sub
'------------------------------------


Salutations!


"tam" a écrit dans le message de news:
Bonjour

Quelqu'un aurait - il la patience de faire du pas à pas avec moi ?
xp home office xp

Mon problème :

Ai
sur ma feuille 1 un tableau allant de A7 à E7 sur A81 à E 81
La colonne A contient les libellés(texte),, les colonnes B,C,D,E des
chiffres entiers ou fractions (format de cellule)

sur ma feuille 2 un tableau allant de A7 à E7 sur A81 à E 81
La colonne A contient les libellés(texte), les colonnes B,C,D,E des
nombres ou fractions (format de cellule)
Les deux tableaus sont identiques en grandeur avec quelques cellules
vides

Ai trouvé sur le site « différence entre 2 tableaux » pour mémoire
:
-------------------------------
Sub ComparaisonTableau()

Dim RG1 As Range, RG2 As Range
Dim Tblo1, Tblo2, Rg3 As Range
Dim A As Long, B As Integer, C As Long, D As Integer

Set RG1 = Sheets("Feuil1").Range("A1:A10") 'Tabeau 1
Set RG2 = Sheets("Feuil2").Range("A1:A10") 'Tableau 2
Set Rg3 = Sheets("Feuil3").Range("A1") 'Tableau des résultats

If RG1.Rows.Count <> RG2.Rows.Count Then
MsgBox "Le tableau n'a pas le même nombre de lignes"
Exit Sub
End If
If RG1.Columns.Count <> RG2.Columns.Count Then
MsgBox "Le tableau n'a pas le même nombre de colonnes"
Exit Sub
End If

Tblo1 = RG1: Tblo2 = RG2: D = 1
Application.ScreenUpdating = False
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If Tblo1(A, B) <> Tblo2(A, B) Then
C = C + 1
Rg3(C, D) = RG1(A, B).Address(0, 0)
Rg3(C, D).Offset(, 1) = Tblo1(A, B)
Rg3(C, D).Offset(, 2) = RG2(A, B).Address(0, 0)
Rg3(C, D).Offset(, 3) = Tblo2(A, B)
End If
Next
Next

Set RG1 = Nothing: Set RG2 = Nothing: Set Rg3 = Nothing
Erase Tblo1: Erase Tblo2


qui ferait exactement ce que je veux, je crois, sauf que je ne sais pas
l' utiliser

je ne sais pas déterminer RG je crois
je sais atteindre par outils macros visual basic éditeur this workbook
mais rien ne se passe donc y a une bulle

basique certes mais surtout frustant

et en plus j'aimerais que les résultats négatifs soient de couleur
différente


il faudrait bien que je commence quelque part et j'aimerais bien
comprendre
alors si quelqu'un voulait bien se dévouer..............
ce serait extrêmement gentil de votre part
merci d'avance
tam