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.
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
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.....
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
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+
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)
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!!!!
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....
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
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....
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
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)_??????
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???
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
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.....
Essaye de comprendre le code et tu verras que c'est pas compliquer d'adapter.
A+
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
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
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+