Macro pour comparer 2 listes sous excel [Fermé]

Signaler
-
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
-
Bonjour à tous,

j'espère que vous allez pouvoir me venir en aide car je n'arrive pas à résoidre un probléme. voila je vous explique:

j'ai 2 tableaux de même structutres dans 2 feuilles différentes d'un même classeur que je souhaite comparer pour moi gagner du temps et ne pas regarder ligne par ligne.

exemple du tableau1:
cug libellé valeur quantités
123 pois 52 2
569 carottes 125 9

exemple du tabkleau 2:
cug libellé valeur quantités
895 salades 56 5
123 pois 45 1

je souhaiterais donc avoir une macro qui puisse me comparer la colonne A de la feuille 1 à la colonne A de la feuille 2 en me coloriant les cellules identiques.

est ce possible???

merci d'avance pour votre aide



10 réponses

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
Bonjour,
il TE FAUT une maco !!! içi ont n'exige pas mon ami, nous sommes tous bénévoles et répondons quand nous avons le temps.
Ca tombe bien pour toi, j'avais un peu de temps.
Sub Compare()
Dim Lig1 As Long, Derlig1 As Long, Derlig2 As Long, Cp As Variant
Dim Lig2 As Long
    Derlig1 = Sheets("Feuil1").Range("A65535").End(xlUp).Row
    Derlig2 = Sheets("feuil2").Range("A65535").End(xlUp).Row
    With Sheets("Feuil2")
        For Lig1 = 2 To Derlig1
            Cp = Sheets("feuil1").Cells(Lig1, "A")
            For Lig2 = 2 To Derlig2
                If Cp = .Cells(Lig2, "A") Then
                    .Cells(Lig2, "A").Interior.ColorIndex = 6
                End If
            Next Lig2
        Next Lig1
    End With
End Sub

A+
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57850 internautes nous ont dit merci ce mois-ci

slt lermite222
merci pour ta macro ca fonctionne impecable mais par contre j'aurai 1 autre question a te poser car je n'y parviens pas toute seule
je voudrais a présent comparer la colonne C de la feuille 1 avec la colonne C de la feuille 2 en coloriant en rouge le cellules qui ont augmenté en valeur et en vert celles qui ont diminué en valeur.
est ce possible ou non??? je te remercie par avance pour ton aide.....
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
C'est possible avec la macro ci-dessus juste adapter la colonne et les conditions.
Essaye de comprendre le code et tu verras que c'est pas compliquer d'adapter.
A+
reslt
j'ai essayé de changé la colonne A par la colonne C et de mettre if cp>cells... a la place de if cp=cells... mais la macro me colorie toute la colonne.......donc je sèche un peu et vu que je débute en macro je ne comrpends pas toujours les codes.....merci pour ton aide
Messages postés
9
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
30 décembre 2013

Bonjour,

J'ai un problème un peu similaire mais je ne maitrise pas les macros.

Voila j'ai 1 classeur avec differentes feuilles.
Feuille 4 = feuille de réference
Feuille 1 = Stock A
Feuille 2 = Stock B
Feuille 3 = stock C

J'aimerais pouvoir comparer les colonnes A,B et C de la feuille 4 avec les colonnes X,Y, et Z des feuilles ( Feuille1 + Feuille 2 + Feuille 3).

J'aimerais que l'écart me soit copier dans une Feuille 5

Quelqu'un pourrais m'aider svp.
Merci
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
Bonjour,
Tu auras plus de chance d'être aidé en posant ta question sur le forum.
Et explique plus clairement ce que tu veux, tu montre une addition dans les feuilles et tu demande l'écart comme réponse ?
A+
Messages postés
15
Date d'inscription
jeudi 29 juillet 2010
Statut
Membre
Dernière intervention
25 août 2010
2
Tu ne t'y connais pas du tout en VB?
je débute mais il me faut absolument une macro pour réaliser mon projet
merci
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
Attention au point devant cells...
if cp > .cells(...
Les valeurs sont sur la mêmes ligne ? de toutes façon, si c'est pas le cas il faut faire autrement, il faudrait un critère de contrôle.


L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
Si c'est sur la même ligne...
Sub Compare2()
Dim Lig1 As Long, Derlig1 As Long, Derlig2 As Long, Cp As Variant
Dim Lig2 As Long
    Derlig1 = Sheets("Feuil1").Range("C65535").End(xlUp).Row
    Derlig2 = Sheets("feuil2").Range("C65535").End(xlUp).Row
    'Pour stopper à la dernière comparaison possible
    If Derlig2 < Derlig1 Then Derlig1 = Derlig2
    With Sheets("Feuil2")
        For Lig1 = 2 To Derlig1
            If Sheets("Feuil1").Cells(Lig1, "C") > .Cells(Lig1, "C") Then
                .Cells(Lig1, "C").Interior.ColorIndex = 4
            End If
        Next Lig1
    End With
End Sub


la macro fonctionne parfaitement mais le problème (et tu vas dire que je suis très embetante...) c'est qu'une feuille à une autre les élements ne se trouvent pas forcement sur les mêmes lignes. par exemple les pois sont sur la ligne 10 de la feuille 1 et sur la ligne 63 de la feuille 2. donc est ce possible quand même ou pas.....et encore désolé du dérangement!!!!
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
les pois, y sont sur quel colonne ?
ils sont sur la colonne B et les valeur sur la colonne C voila....
en fait, colonne A= les CUG
colonne B= les libellés (soit les pois etc....)
colonne C= les valeurs
et colonne D= les quantités
merci beaucoup....
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
J'espère que tes renseignements sont justes...
Sub Compare3()
Dim Lig1 As Long, Derlig1 As Long, Derlig2 As Long, Cp As Variant
Dim Lig2 As Long, FR1 As Worksheet, FR2 As Worksheet
    Set FR1 = Sheets("Feuil1")
    Set FR2 = Sheets("Feuil2")
    Derlig1 = FR1.Range("B65535").End(xlUp).Row
    Derlig2 = FR2.Range("B65535").End(xlUp).Row
    For Lig1 = 2 To Derlig1
        Cp = FR1.Cells(Lig1, "B")
        For Lig2 = 2 To Derlig2
            If Cp = FR2.Cells(Lig2, "B") Then
                If FR1.Cells(Lig1, "C") > FR2.Cells(Lig2, "C") Then
                    FR2.Cells(Lig2, "C").Interior.ColorIndex = 3
                ElseIf FR1.Cells(Lig1, "C") < FR2.Cells(Lig2, "C") Then
                    FR2.Cells(Lig2, "C").Interior.ColorIndex = 4
                Else
                    FR2.Cells(Lig2, "C").Interior.ColorIndex = xlNone
                End If
                Exit For
            End If
        Next Lig2
    Next Lig1
End Sub

A+
LA MACRO FONCTIONNE SUPER BIEN JE TE REMERCIE POUR LE TEMPS QUE TU AS CONSACRE A FAIRE CES MACROS.
UNE DERNIERE CHOSE ET APRES JE T'EMBETE PLUS: JE VOUDRAIS SAVOIR COMMENT FAIRE LE SIGNE "DIFFERENT DE" EN MACRO.
PAR EXEMPLE: If cp = .Cells(lig2, "a") Then
.Cells(lig2, "a").Interior.ColorIndex = 7
JE VOUDRAIS METTRE A LA PLACE DU = LE SIGNE DIFFERENT DE....
ENCORE UN GRAND MERCI POUR TOUT AIDE PRECIEUSE....
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
c'est <>
A+
re......j'aurais avoir une amcro qui me dise il y a autant de cellules coloriées en rouge, autant en vert etc.....et j'ai essayé mais je ne parviens pas a distinguer les couleurs.
j'ai une macro mais elle m'additionne toute la colonne, mais j'aimerais une macro qui indique 8 cellules grises....3 vertes etc.....
merci d'avance
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
Sub somme()
Dim Lig As Long, FR As Worksheet
Dim Rouge As Integer, Vert As Integer, Gris As Integer
    Set FR = Sheets("SAP") 'adapter le nom de la feuille
    For Lig = 1 To FR.Range("C65535").End(xlUp).Row
        Select Case FR.Cells(Lig, 3).Interior.ColorIndex
        Case 3: Rouge = Rouge + 1
        Case 4: Vert = Vert + 1
        Case 15: Gris = Gris + 1
        End Select
    Next Lig
    MsgBox "Le nombre de cellule(s)..." & Chr(13) _
        & "Rouge = " & Rouge & Chr(13) _
        & "Vert = " & Vert & Chr(13) _
        & "Gris = " & Gris
End Sub
j'ai un problème quand je lance ma macro un message apparait: "erreur de synthaxe" et la ligne &"rouge="&chr(13)_ est soulignée en jaune.
en fait, la macro devrait calculer le nombre de cellule grise, verte rouge etc.... et me mettre le résultat dans une autre cellulle telle que k4 ou g22 ou autre...
j'aimerais savoir ce que signifie chr(13)_??????
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
Autre façon de faire..
Dans le module coller le code...
Public Function NbCouleurCell(Couleur As Integer) As Long 
Dim Lig As Long
    Application.Volatile 
    For Lig = 1 To Range("C65535").End(xlUp).Row 
        If Cells(Lig, 3).Interior.ColorIndex = Couleur Then NbCouleurCell = NbCouleurCell + 1 
    Next Lig 
End Function

Dans la feuille mettre dans la cellule où tu veux le résultat
    =NbCouleurCell(3) ' pour le rouge

En fait, l'argument que tu met est le N° de la couleur.
Note : Le fait de modifier la couleur d'une cellule n'appel pas le recalcul, y faut donc taper F9 pour recalculer.

L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
merci beaucoup pour ta macro ça fonctionne mais je voudrais savoir si à la place de mettre les cellulles de couleur selon le résultat on fasse la différence entre la feuille 1 colonne b et la feuille 2 colonne b et de mettre le résultat dans la colonne c par exemple.....est ce possible ou pas du tout???
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 098
Tu dis..
UNE DERNIERE CHOSE ET APRES JE T'EMBETE PLUS !!!

Bon, beh maintenant cherche un peu par toi même, quand tu auras un début de code revient pour l'optimiser.
Je ne vais pas faite toute ton aplli... non mais..
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
mon programme de macro est le suivant
sub somme ()
range("c2:c1050").select
for each cell in selection
if cell.interior.colorindex=15 then
range("k4").value=application.worksheetfunction.sum(range("c2:c1050").value)
end if
next
end sub

mais ma macro me calcule la somme de toute la colonne alors que j'aimerais juste qu'elle me dise combien il y a de cellule grise, rouge, verte etc....

promis après j'arrete mais mon collègue en informatique est en congès donc ne pas m'aider