Comparer 2 tableaux

Bonjour

Je suis en train de faire un fichier permettant de comparer 2 tableaux :

  • Synthèse : qui comprends toutes les données connues
  • Import SAP : Nouvelles données

Le code permet de comparer la feuille synthèse avec la feuille Import SAP.

J'ai crée un Userform avec plusieurs options :

1 --> Mettre en vert la ligne des nouveaux "Avis" (qui ne sont pas référencé dans "Synthèse)

(J'ai essayé avec MFC mais ca ne fonctionne pas sur 2 onglets différents et j'ai tester un code mais ne fonctionne pas non plus)

2--> Ajouter les nouveaux "Avis" dans la feuille se synthèse avec les informations correspondantes (ligne A à M)

(Pour le moment je n'arrive qu'a ajouter que la première cellule avec

Sheets("Synthèse").Range("A" & j).Value = c.Rows

)

3--> Comparer les deux tableaux, et mettre en rouge les valeurs qui ont changées entre les "Avis" de la feuilles Synthèse et les "Avis" de la feuille Import SAP dans un onglet "Ecart"

3 --> Enlever la mise en forme des cellules

5 --> Dans synthèse : Mettre en bleu cellule "C-M" colonne "K" et en gris les cellules "CLOTURE" colonne "M"

Pouvez-vous m'aider pour les boutons 1 et 2, où je rencontres quelques difficultés...

Je joins le fichier ci dessous.

Merci d'avance

Ardoudoux

Bonjour Ardoudoux,

Pour ce qui est de mettre en vers (en vert, je suppose ?) les "nouveaux avis", on ne prend en considération que l'existence (ou non) du même n° (colonne A) dans les deux feuilles ? Si oui, une MFC devrait pouvoir fonctionner:

  • sélectionner la plage A2:M216 (ou plus) de la feuille "Import SAP"
  • MFC > Nouvelle règle > Utiliser une formule pour déterminer ... et coller la formule
    =NB.SI(Synthèse!$A$2:$A$209;$A2)=0

    ... à moins que je n'aie rien compris

Ceci étant, si tu recopies ensuite les nouveaux avis, dans la feuille Synthèse, la couleur appliquée par MFC disparaîtra ... puisque les nouveaux avis ne seront plus aussi nouveaux !? J'ai manqué quelque chose ?

Bonjour U.Milité

Oui c'est bien en Vert qu'il faut mettre les nouveaux "Avis".

Merci pour ta solution qui fonctionne bien ! J'ai ajouté une une autre rêgle afin d'evter de colorer les cellules vide en vert également :

- En ajoutant une nouvelle règle pour les cellules vides.

  • En la cochant interrompre si vrai.
  • En la remontant en tête.

Mais le problème est qu'il m'enlève la couleur également sur les lignes en vert des nouveaux "avis".

As tu une solution pour y remédier ?

Merci d'avance

Ardoudoux

capture

Re-bonjour,

Faisons simple

  • Supprime la nouvelle règle que tu as créée
  • Modifie la formule de la première MFC en:
    =ET($A2>0;NB.SI(Synthèse!$A$2:$A$209;$A2)=0)

Est-ce mieux ?

Ceci n'enlève rien à la question de mon message précédent

Super merci ! C'est ce que je voulais !

Ceci étant, si tu recopies ensuite les nouveaux avis, dans la feuille Synthèse, la couleur appliquée par MFC disparaîtra ... puisque les nouveaux avis ne seront plus aussi nouveaux !? J'ai manqué quelque chose ?

Oui je sais bien que une fois qu'ils seront sur la feuille synthèse, ils ne seront plus en vert. Mais c'est pour vérifier au préalable les données qui vont être entrées dans l'onglet synthèse.

En tout cas, merci de m'avoir aidé pour le "1" !!!

Je laisse le sujet ouvert si jamais quelqu'un a une idée ou une solution pour :

2--> Ajouter les nouveaux "Avis" dans la feuille se synthèse avec les informations correspondantes (ligne A à M)

(Pour le moment je n'arrive qu'a ajouter que la première cellule avec

Sheets("Synthèse").Range("A" & j).Value = c.Rows

)

Ardoudoux

Re,

Pour ton point 2, essaie en remplaçant le code de ton CommandButton2 par celui-ci:

Private Sub CommandButton2_Click()

Application.ScreenUpdating = False
Set fs = Sheets("Synthèse")
Set fi = Sheets("Import SAP")
Set liste = CreateObject("scripting.dictionary")
For lig = 2 To fs.Cells(Rows.Count, 1).End(xlUp).Row
    liste(fs.Cells(lig, 1).Value) = ""
Next lig
For lig = 2 To fi.Cells(Rows.Count, 1).End(xlUp).Row
    If Not liste.exists(fi.Cells(lig, 1).Value) Then
        fi.Cells(lig, 1).Resize(1, 13).Copy
        fs.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 13).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    End If
Next lig
Application.CutCopyMode = False
Application.ScreenUpdating = True
anndata.Hide
End Sub

... à condition que tu ne travailles pas sur un Mac !

Génial U.Milité !

Ça fonctionne nickel !

Merci beaucoup !

Ardoudoux

Rechercher des sujets similaires à "comparer tableaux"