MACRO COMPARAISON 2 COLONNES
coquillette
-
Krysstof Messages postés 1659 Statut Membre -
Krysstof Messages postés 1659 Statut Membre -
Bonjour à tous,
j'ai besoin de vos lumières pour éclairer mon problème.
voila je vous explique: j'ai 2 feuilles avec dans chaque feuilles 1 tableau où j'aimerais comparer la colonne C de la feuille 1 avec la colonne C de la feuille 2.
si le résultat est différent j'aimerais que sur la colonne D de la feuille 2 apparaissant le résultat de la différence entre la colonne C de la feuille 1 et la colonne C de la feuille 2.
j'espère avoir été claire dans mon explication et vous remercie pour l'aide que vous pourrez m'apporter car là je sèche depuis plusieurs jours et mon projet n'avance pas.....
merci beaucoup par avance.....
j'ai besoin de vos lumières pour éclairer mon problème.
voila je vous explique: j'ai 2 feuilles avec dans chaque feuilles 1 tableau où j'aimerais comparer la colonne C de la feuille 1 avec la colonne C de la feuille 2.
si le résultat est différent j'aimerais que sur la colonne D de la feuille 2 apparaissant le résultat de la différence entre la colonne C de la feuille 1 et la colonne C de la feuille 2.
j'espère avoir été claire dans mon explication et vous remercie pour l'aide que vous pourrez m'apporter car là je sèche depuis plusieurs jours et mon projet n'avance pas.....
merci beaucoup par avance.....
2 réponses
-
le probleme de la comparaison de 2 colonne est "comment tu veux comparer?"
en gros, si tu veux comparer ligne a ligne (si C1 = C1 alors ok, si C2 <> C2 alors pas ok, etc...)
ca c'est facile
si par contre tu veux comparer la cellule C1 avec toutes les cellule de l'autre feuille, pareil pour c2, C3 etc... la c'est pas la meme chose.
ensuite bien sur si tu fait le 1er choix, tu est dépendant de l'ordre de tes ligne, du nombre de lignes, etc.
donc explique mieux ce que tu veux comparer pour commencer ;)-
j'ai déjà une macro que me colorie les cellules en fonction du résultat qui fonctionne très bien mais je voudrais à la place du coloriage le résultat de la différence entre la cellule c5 de la feuille 1 et la colonne c5 de la feuille 2.
voici ma macro:
Sub comp46()
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("sem 47")
Set FR2 = Sheets("sem 48")
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 = 15
ElseIf FR1.Cells(lig1, "c") < FR2.Cells(lig2, "c") Then
FR2.Cells(lig2, "c").Interior.ColorIndex = 4
Else: FR2.Cells(lig2, "c").Interior.ColorIndex = 8
End If
Exit For
End If
Next lig2
Next lig1
End Sub
exemple: feuille 1
cellule c5 = 86
feuille 2
cellule c5 = 56
j'aimerai que dans la cellule d5 de la feuille 2 apparaisse = -30
j'espère avoir été + claire
-
-
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("sem 47") Set FR2 = Sheets("sem 48") 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 = 15 ElseIf FR1.Cells(lig1, "c") < FR2.Cells(lig2, "c") Then FR2.Cells(lig2, "c").Interior.ColorIndex = 4 Else: FR2.Cells(lig2, "c").Interior.ColorIndex = 8 End If Exit For End If Next lig2 Next lig1 End Sub
ok, donc tu cherche la comparaison sur la valeur de la colonne B et tu mets en couleur le résultat dans C, et tu fais 65000 fois 65000 iterations !
ca se travaille ^^
bref, la technique, si ya pas de ligne vide dans la colonne B, consiste à utiliser "isempty" pour savoir quand s'arrêter, et utiliser un booleen pour savoir que tu as trouver la valeur, donc ne pas continuer la 2eme boucle
ca donnelig1 = 2 while not isempty(FR1.cells(lig1, "b") dim trouve = false lig2 = 2 while not isempty(FR2.cells(lig2, "b") and not trouve if FR1.Cells(lig1, "b") = FR2.Cells(lig2, "b") then 'on met le bool a vrai, comme ca on continue pas la boucle au prochain tour trouve = true 'ici on rajoute la valeur a mettre dans la colonne D FR2.Cells(lig2, "d") = FR1.Cells(lig1, "c")- FR2.Cells(lig2, "c") 'et la on remet ton code de couleur If FR1.Cells(lig1, "c") > FR2.Cells(lig2, "c") Then FR2.Cells(lig2, "c").Interior.ColorIndex = 15 ElseIf FR1.Cells(lig1, "c") < FR2.Cells(lig2, "c") Then FR2.Cells(lig2, "c").Interior.ColorIndex = 4 Else: FR2.Cells(lig2, "c").Interior.ColorIndex = 8 end if lig2=lig2+1 wend lig1 = lig1+1 wend-
je te remercie beaucoup ta macro fonctionne impeccable mais je dois insérer moi même une colonne pour faire apparaitre le résultat car normalement dans mon tableau la colonne D est déja prise par autre chose
exemple:
colonne A = EAN
colonne B= libellé
colonne C= valeur
Colonne D= quantité
donc est ce qu'il existe 1 macro qui puisse m'insérer automatiquement une colonne entre la colonne C et D en fait qui décalerai la colonne D en colonne E....
merci encore... -
-