[Résolu] Identification et affichage des écarts entre données.

Franckxxx

XLDnaute Junior
Bonjour à tous!

J'essaye de coder un petit programme de comparaison de données entre tableaux.
Comme on peut le voir dans le fichier joint, les deux tableaux comportent des références et des données associées.
J'aimerais que la macro effectue une comparaison des références (Ref), lorsque les références sont identiques alors les Pu sont comparés et lorsqu'ils sont différents alors le Pu de la Feuil1 est surligné en rouge et un commentaire apparais montrant l'écart entre les deux Pu.

La phase de comparaison m'a déjà été fournie sur ce forum, elle est sous la forme:

Sub MisAJour()
Dim DerLig1 As Long, DerLig2 As Long, i As Long, j As Long, TabIni, TabRef

DerLig1 = Worksheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Row
DerLig2 = Worksheets("Feuil2").Range("B" & Rows.Count).End(xlUp).Row
TabIni = Worksheets("Feuil1").Range("C2:E" & DerLig1)
TabRef = Worksheets("Feuil2").Range("B2:E" & DerLig2)

For i = LBound(TabRef) To UBound(TabRef)
For j = LBound(TabIni) To UBound(TabIni)
If TabRef(i, 1) = TabIni(j, 1) Then
ACTION
Exit For
End If
Next
Next

Worksheets("Feuil1").Range("C2").Resize(UBound(TabIni, 1), UBound(TabIni, 2)) = TabIni

End Sub

Mais je coince au niveau de l'action, je ne sais pas comment indiquer la CASE en cours (j) ni comment indiquer l'écart variable dans le commentaire.

ACTION:
Range("CASE").AddComment
Range("CASE").Comment.Visible = False
Range("CASE").Comment.Text Text:="ECART:" & Chr(10) & ""
Range("CASE").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With

De plus, si c'est possible, j'aimerais que la macro efface les commentaires possiblement présent sur une CASE si l'écart entre les Pu n'existe plus.

Si quelqu'un a déjà rencontré cette problématique et qu'il a une solution envisageable, je suis preneur! :)

Merci à vous pour votre aide!
 

Pièces jointes

  • Classeur3.xlsx
    10 KB · Affichages: 38
  • Classeur3.xlsx
    10 KB · Affichages: 44
  • Classeur3.xlsx
    10 KB · Affichages: 41
Dernière édition:

Franckxxx

XLDnaute Junior
Re : Identification et affichage des écarts entre données.

Bonsoir Paritec,

Désolé pour mon retard,

Oui navré j'ai pris la mauvaise habitude de conserver mon code sur notepad++ et de ne pas l'enregistrer sur Excel tant que le code ne fonctionne pas.

J'ai mit en pièce jointe une version modifiée du fichier en .xlsm

Merci à vous si quelqu’un a une idée pour résoudre ce problème! :)
 

Pièces jointes

  • Classeur3.xlsm
    16.8 KB · Affichages: 35
  • Classeur3.xlsm
    16.8 KB · Affichages: 35
  • Classeur3.xlsm
    16.8 KB · Affichages: 36

Paritec

XLDnaute Barbatruc
Re : Identification et affichage des écarts entre données.

Bonjour Franckxxx le forum
Bon alors tu ne réponds pas vite cela on a vu déjà, mais maintenant ton fichier et ta macro ne permettent pas de savoir ce que tu veux !!!!
Tu veux quoi ??? comparer la colonne C de la feuille 1 à la colonne B de la feuille 2, et après le commentaire tu le veux ou ??? avec quelle informations?? déjà pourquoi un commentaire et pas rajouter une colonne??
mais on met quoi dans ce commentaire et surtout sur quelle feuille.
Tu sais peut-être ce que tu veux mais comme vraisemblablement tu n'es pas capable d'expliquer !!! ???? Impossible de t'aider sans savoir cela
a+
Papou:eek:
 

Paritec

XLDnaute Barbatruc
Re : Identification et affichage des écarts entre données.

Re Franckxxx le forum
voilà en comparant la colonne PU de la feuille 1 et de la feuille 2 et le résultat en feuille 2 colonne F
ce ne sera pas cela, mais bon avec des fichiers aussi bien expliqués !!! tu ouvres tu cliques test et tu regardes
a+
Papou:eek:
 

Pièces jointes

  • Franckxxx V1.xlsm
    23.1 KB · Affichages: 35

Franckxxx

XLDnaute Junior
Re : Identification et affichage des écarts entre données.

Bonjour Paritec, le Forum,

"Bon alors tu ne réponds pas vite cela on a vu déjà" Désolé, dans la vie des imprévus peuvent arriver.

Rien ne sert de s'énerver, tout était écris plus haut.
"Tu veux quoi ??? comparer la colonne C de la feuille 1 à la colonne B de la feuille 2, et après le commentaire tu le veux ou ??? avec quelle informations?? déjà pourquoi un commentaire et pas rajouter une colonne??"

J'avais écris:
"J'aimerais que la macro effectue une comparaison des références (Ref), lorsque les références sont identiques alors les Pu sont comparés et lorsqu'ils sont différents alors le Pu de la Feuil1 est surligné en rouge et un commentaire apparais montrant l'écart entre les deux Pu."

- Oui je veux comparer la colonne C de la Feuil1 à la colonne B de la Feuil2. ("J'aimerais que la macro effectue une comparaison des références (Ref)") On peut également le voir dans le début de code que j'avais:
"DerLig1 = Worksheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Row
DerLig2 = Worksheets("Feuil2").Range("B" & Rows.Count).End(xlUp).Row
TabIni = Worksheets("Feuil1").Range("C2:E" & DerLig1)
TabRef = Worksheets("Feuil2").Range("B2:E" & DerLig2)

For i = LBound(TabRef) To UBound(TabRef)
For j = LBound(TabIni) To UBound(TabIni)
If TabRef(i, 1) = TabIni(j, 1) Then"

-Au niveau de l'action je ne souhaite pas coder un comparateur qui met a jour mais plutôt un indicateur qui permet de mettre en évidence des erreurs. Or mon fichier d'origine comporte beaucoup de colonnes et est déjà surchargé, c'est pourquoi j'ai eut l'idée d'un commentaire qui s'affiche lorsque l'on passe le curseur sur la case comportant l'erreur.

Je souhaite que le code compare les REF puis (si elles sont identiques) compare leur Pu respectifs (colonne E Feuil1, colonne E Feuil2). Si ils sont différents, alors J'aimerais que l'écart entre les deux Pu s'affiche dans un commentaire, d’où:
Range("CASE").AddComment
Range("CASE").Comment.Visible = False
Range("CASE").Comment.Text Text:="ECART:" & Chr(10) & ""

La CASE correspond à la case du Pu incriminé.

Je souhaite de plus que le Pu incriminé soit aussi mit en couleur rouge, soit:
Range("CASE").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With


Mon code global ressemble à cela:

Sub MisAJour()
Dim DerLig1 As Long, DerLig2 As Long, i As Long, j As Long, TabIni, TabRef

DerLig1 = Worksheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Row
DerLig2 = Worksheets("Feuil2").Range("B" & Rows.Count).End(xlUp).Row
TabIni = Worksheets("Feuil1").Range("C2:E" & DerLig1)
TabRef = Worksheets("Feuil2").Range("B2:E" & DerLig2)

For i = LBound(TabRef) To UBound(TabRef)
For j = LBound(TabIni) To UBound(TabIni)
If TabRef(i, 1) = TabIni(j, 1) Then
If TabRef(i, 4) <> TabIni(j, 3) Then
Range("TabIni(j, 3)").AddComment
Range("TabIni(j, 3)").Comment.Visible = False
Range("TabIni(j, 3)").Comment.Text Text:="ECART: TabRef(i, 4)-TabIni(j, 3)" & Chr(10) & ""
Range("TabIni(j, 3)").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End If
Exit For
End If
Next
Next

Worksheets("Feuil1").Range("C2").Resize(UBound(Tab Ini, 1), UBound(TabIni, 2)) = TabIni

Mais il ne fonctionne pas vraiment pour l'instant. :p
Voila, j’espère avoir été plus clair!
 

Paritec

XLDnaute Barbatruc
Re : Identification et affichage des écarts entre données.

Bonjour Franckxx le forum
tout ton blabla OK, mais moi je ne lis pas les blablas, mais les macros, et dans le fichier que tu as mis en ligne rien ne permet de savoir ce que tu veux comparer, même si tu dis que tout y est!!!
Et dans ton premier post non plus tu peux le vérifier !!!!!
Dans le fichier si tu avais mis les explications dans un pavé texte cela aurait été très utile et facile à lire sans retourner sur le post pour savoir ce que tu veux.
Bref
a+
Papou:eek:
 

Paritec

XLDnaute Barbatruc
Re : Identification et affichage des écarts entre données.

Re Franckxxx le forum
bon alors voilà une réponse qui là encore ne conviendra pas, je le sais, je l'ai lu dans ta demande!!
j'ai mis le commentaire dans la colonne à coté du prix!
a+
Papou:eek:

Code:
Sub comparer()
  Sub comparer()
    Dim i&, a&, aa, bb, x#
    With Feuil1
        aa = .Range("B3:E" & .Range("B" & Rows.Count).End(xlUp).Row)
    End With
    With Feuil2
        bb = .Range("C3:E" & .Range("C" & Rows.Count).End(xlUp).Row)
    End With
    For i = 1 To UBound(aa)
        For a = 1 To UBound(bb)
            If aa(i, 1) = bb(a, 1) Then
                With Feuil2.Cells(a + 2, 5)
                    x = aa(i, 4) - bb(a, 3)
                    .ClearComments
                    .AddComment Text:="ECART:" & Chr(10) & x
                    .Comment.Shape.TextFrame.AutoSize = True
                    x = 0
                End With
                Exit For
            End If
        Next a
    Next i
End Sub


EDIT: j'ai changé le fichier car j'avais pas mis le bon avec les bons reports à cause de l'inversion des feuilles la feuil1.codename c'est la feuil2.name
 

Pièces jointes

  • Franckxxx V2.xlsm
    24.4 KB · Affichages: 29
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Identification et affichage des écarts entre données.

Re bonsoir Franckxxx le forum
j'ai apporté une modification importante à la macro, mais comme il n'y a pas de réponse au 4 posts précédent, je vais garder la V5 au chaud.
a+
Papou:eek:
 

Franckxxx

XLDnaute Junior
Re : Identification et affichage des écarts entre données.

Re-bonjour Paritec,

Désolé pour le retard, je sais que cela vous énerve mais j'ai été bloqué tout l’après-midi en réunion vendredi (étant apprentis je ne peut choisir mes disponibilités) et je n'avais pas accès a un pc ce weekend.

J'ai essayé d'adapter le code à mon fichier original toute la matinée et après beaucoup de tentatives non fructueuses il fonctionne parfaitement.

J'ai rajouté une ligne de code permettant de ne pas prendre en compte l'écart lorsque le Pu de la Feuil2 n'est pas renseigné en me basant sur votre code, ce qui m'a donné:
If aa(i, 4) = 0 Then Exit For
(Je l'ai intégré directement sur le fichier joint)

Merci infiniment pour votre aide et votre partage de connaissances Papou.
Bon après-midi à vous!! :)
 

Paritec

XLDnaute Barbatruc
Re : [Résolu] Identification et affichage des écarts entre données.

Bonsoir Franckxx le forum
Oui j'ai vu que mon nom a disparu de la macro !!! ???
Le partage de connaissances OK, mais la reconnaissance c'est au minimum de laisser le nom de l'auteur de la macro !!!
en plus le fait de copier la macro et de ne pas copier les options là aussi ????
bonne soirée
Papou:eek:
 

Franckxxx

XLDnaute Junior
Re : [Résolu] Identification et affichage des écarts entre données.

Bonsoir Paritec,

J'ai repris le code "à la main" pour voir si j'avais bien compris la logique, j'essayais juste d'apprendre et il ne s'agissait pas d'un "pompage".
Je suis navré si cela a put vous énerver.
Voici le fichier final comprenant votre nom et vos options.

Bonne soirée.
 

Pièces jointes

  • Copie de Franckxxx V4-3.xlsm
    26.4 KB · Affichages: 24

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal