VBA Rechercher début de 2 tableaux puis comparer leur contenu

Fermé
Utilisateur anonyme - 30 mars 2017 à 17:04
adelefichou Messages postés 3 Date d'inscription jeudi 30 mars 2017 Statut Membre Dernière intervention 4 avril 2017 - 4 avril 2017 à 17:09
Bonjour à tous !

Je fais appel à vos connaissances en matière de VBA pour un problème que je n'arrive pas à résoudre ... je m'explique :

Je dispose d'un fichier qui contient 2 feuilles : 1 feuille de référence et 1 feuille à comparer à la première (cette feuille est mise à jour régulièrement). Ces feuilles contiennent des tableaux identiques MAIS ce sont des extractions de PDF donc les tableaux ne commencent pas toujours sur la même ligne ...

Chaque tableau est exactement identique en structure sur les deux feuilles.

Ce que je cherche à faire c'est :

- trouver le début de chaque tableau (exemple en A13 sur la feuille de ref et A20 sur la feuille à comparer) sachant que la première valeur du tableau est toujours 1 (numéros d'item)

- comparer ensuite toutes les lignes des 2 tableaux

- mettre en rouge sur la feuille de comparaison les valeurs qui diffèrent

En fait le principal problème est de définir en VBA la "recherche de début du tableau" qui peut être aléatoire...

J'espère que mon explication est compréhensible.

Je vous remercie d'avance pour vos réponses ! :)

ADEFCH
A voir également:

1 réponse

Bonjour,

Set sh1 = Sheets("référence")
Set sh2 = Sheets("comparer")
sh1FirtRw = Application.Match(1, sh1.Range("A:A"), 0)
sh1LastRw = sh1.Cells(Rows.Count, 1).End(xlUp).Row
sh2FirtRw = Application.Match(1, sh2.Range("A:A"), 0)
sh2LastRw = sh1.Cells(Rows.Count, 1).End(xlUp).Row
0
adelefichou Messages postés 3 Date d'inscription jeudi 30 mars 2017 Statut Membre Dernière intervention 4 avril 2017
3 avril 2017 à 11:10
Bonjour,

Merci beaucoup cela fonctionne très bien pour déterminer le début des lignes à comparer mais je n'arrive pas à intégrer la comparaison des lignes après ...

Je voudrais qu'une fois le début déterminé il compare toutes les lignes des deux feuilles jusqu'à la fin et mette en rouge sur la deuxième feuille ce qui change.

Private Sub CommandButton1_Click()

Set sh1 = Sheets("MSA_ref")
Set sh2 = Sheets("MSA_comp")
sh1FirtRw = Application.Match(1, sh1.Range("A:A"), 0)
sh1LastRw = sh1.Cells(Rows.Count, 1).End(xlUp).Row
sh2FirtRw = Application.Match(1, sh2.Range("A:A"), 0)
sh2LastRw = sh1.Cells(Rows.Count, 1).End(xlUp).Row

Dim i As Integer
i = 2
While i < 20
If Worksheets("MSA_ref").Range("sh1FirtRw" + CStr(i)).Value <> Worksheets("MSA_comp").Range("sh2FirtRw" + CStr(i)).Value Then
'je pense que le problème vient de l'identification de mon Range mais je ne maitrise pas assez la VBA pour résoudre mon problème
Worksheets("MSA_comp").Activate
Worksheets("MSA_comp").Range("sh2FirtRw" + CStr(i)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
i = i + 1
Wend

End Sub
0
adelefichou Messages postés 3 Date d'inscription jeudi 30 mars 2017 Statut Membre Dernière intervention 4 avril 2017
4 avril 2017 à 17:09
Bonjour je reviens sur le sujet j'ai mis à disposition un fichier d'exemple si quelqu'un a une piste pour m'aider à corriger ma boucle :)

Merci d'avance !

https://www.cjoint.com/c/GDepiGR5swj
0