Comparer deux colonnes, en afficher une autre si vrai
Bonjour voilà mon problème j'aimerais pouvoir comparer les colonnes Q et C qui correspondent aux colonnes identifiants de deux fichiers (Q pour fichier 1 et C pour fichier2) car les id présents dans le fichier 2 ne le sont pas forcément dans le fichier 1
For Lig = 2 To Extract_Planview.Range("C" & Rows.Count).End(xlUp).Row 'nombre d'id dans le fichier 2
If fichier1.Range("Q" & Lig) = fichier2.Range("C" & Lig) Then 'comparaison des id entre les deux fichiers
fichier3.Range("F" & Lig) = fichier2.Range("D" & Lig) 'si vrai on copie la description (colonne d du fichier 2) dans la colonne F du fichier 3
Else
fichier2.Range("C" & Lig).Interior.ColorIndex = 3 'si faux alors on met la case en rouge dans le fichier 2
End If
NextJ'ai commencé un début de code mais cela me fait une comparaison entre q1 et c1 puis q2 et c2 alors que je voudrais pouvoir q1 à tous les cellules de C, puis q2 à toutes les celles de C ainsi de suite.
Puis ensuite c'est cela retourne vrai je voudrais copier la cellule correspondante dans la colonne D(qui correspond à la description ) à l'identifiant présent dans le fichier 1 et 2, pour le mettre dans une colonne d'un troisième fichier
J'espère avoir été assez claire ^^
bonne journée
Bonsoir tu dois faire une boucle imbriquée dans une autre je pense
For lig = 2 to Extract_Planview.Range("C" & Rows.Count).End(xlUp).Row 'boucle pour chaque ligne de la colonne Q
for ligneC = 1 to le NbDeLigneEnC
blablalbla
next ligneC
next ligCordialement
Bonjour, je ne comprend pas bien le but de faire une boucle imbriquée là ?
For Lig = 2 To Extract_Planview.Range("C" & Rows.Count).End(xlUp).Row
For ligneC = 2 To Extract_Planview.Range("C" & Rows.Count).End(xlUp).Row
If Extract_SAP.Range("Q" & Lig) = Extract_Planview.Range("C" & Lig) Then
Consolidation.Range("F" & Lig) = Extract_Planview.Range("D" & Lig)
Else
Extract_Planview.Range("C" & Lig).Interior.ColorIndex = 3
End If
Next ligneC
Next LigCela ne change rien, il me met donc toute la colonne C de planView en rouge :/
Bonjour, je ne comprend pas bien le but de faire une boucle imbriquée là ?
For Lig = 2 To Extract_Planview.Range("C" & Rows.Count).End(xlUp).Row For ligneC = 2 To Extract_Planview.Range("C" & Rows.Count).End(xlUp).Row If Extract_SAP.Range("Q" & Lig) = Extract_Planview.Range("C" & Lig) Then Consolidation.Range("F" & Lig) = Extract_Planview.Range("D" & Lig) Else Extract_Planview.Range("C" & Lig).Interior.ColorIndex = 3 End If Next ligneC Next LigCela ne change rien, il me met donc toute la colonne C de planView en rouge :/
Update :
j'ai une petite modification
For Lig = 2 To Extract_Planview.Range("A" & Rows.Count).End(xlUp).Row
For ligneC = 2 To Extract_Planview.Range("C" & Rows.Count).End(xlUp).Row
If Extract_SAP.Range("Q13") = Extract_Planview.Range("C" & ligneC) Then
Consolidation.Range("F" & Lig) = Extract_Planview.Range("D" & ligneC)
Else
Extract_Planview.Range("C" & ligneC).Interior.ColorIndex = 3
End If
Next ligneC
Next LigJe pense que le problème vient peut-etre du format de mes valeurs j'essaye de voir pour mettre ces valeurs au format numérique
Bonjour marinea, le forum,
Salut bigdaddy154
Un début de réponse...(pas sur d'avoir tout compris,
Si ID colonne A est absent des ID de la colonne E, alors on colore en rouge (A et B), sinon on renseigne les descriptifs correspondant à la colonne I en colonne J.
Cordialement,
Un début de réponse...(pas sur d'avoir tout compris,
)... Si ID colonne A est absent des ID de la colonne E, alors on colore en rouge (A et B), sinon on renseigne les descriptifs correspondant à la colonne I en colonne J.
Bonjour, merci pour ta réponse ton code marche très bien mais en fait, en fait le début est bon, mais si c'est présent on met la colonne id dans la colonne i et le description dans la colonne J, car en fait les id ne sont pas mis de bases dans la colonne I (en suivant ton modèle)
Pourrais tu annoter ton code ? je ne comprend pas bien ces lignes :
If Application.CountIf(plage2, Range("A" & i)) = 0 Then 'pourquoi égal à 0 ?
Range("A" & i & ":B" & i).Interior.Color = vbRed
Else
Range("A" & i & ":B" & i).Interior.Color = xlNone
If Application.CountIf(plage1.Columns(1), Range("I" & j)) >= 1 And Application.CountIf(plage2.Columns(1), Range("I" & j)) >= 1 Then 'et là supérieur ou égal à 1 ?
Range("J" & j) = Application.VLookup(Range("I" & j), plage1, 2, False)
Else
Range("J" & j) = ""Bonne journée
Re,
Merci pour ton retour,
If Application.CountIf(plage2, Range("A" & i)) = 0 Then 'pourquoi égal à 0 ? Il s'agit de la fonction NB.SI en vba: si résultat =0, c'est que la valeur n'a pas été trouvée dans la plage2
If Application.CountIf(plage1.Columns(1), Range("I" & j)) >= 1 And Application.CountIf(plage2.Columns(1), Range("I" & j)) >= 1 Then 'et là supérieur ou égal à 1 ?Si résultat >=1 , c'est que la valeur est au moins présente 1 fois dans plage1 et au moins 1 fois dans la plage2 .
Un autre essai...
Cordialement,
Merci cela marche parfaitement, j'ai réussi à le faire en fonction de mes fichiers et colonnes correspondantes !
Plus qu'à faire la même chose mais pour les autres colonnes