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
Next

J'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 lig

Cordialement

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 Lig

Cela 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 Lig

Cela 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 Lig

Je 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.

8classeur1.xlsm (20.02 Ko)

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...

15classeur2.xlsm (21.83 Ko)

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 merci à toi

Rechercher des sujets similaires à "comparer deux colonnes afficher vrai"