Comparer les valeurs de deux colonnes en vba

Résolu
Kasiope_33 Messages postés 5 Statut Membre -  
Kasiope_33 Messages postés 5 Statut Membre -
Bonjour,
à partir d'une boucle for next sur une colonne dans la feuille1 je cherche à trouver si cette valeur n'est pas dans une autre colonne dans la feuille2 avec une autre boucle for next. si effectivement cette valeur n'est pas dans la colonne de la feuille2 je cherche à copier cette valeur dans une colonne feuille3. si vous pouvez m'aider un grand merci à tous
Configuration: Windows Vista
Internet Explorer 7.0

8 réponses

  1. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    bonjour

    pour eviter les boucle multiples, on va melanger tout ca
    à adapter (nom de feuille, plages de cellules)
    sub ctrl_et_copie()
    dim i as long
    for i = 1 to sheets("Feuil1").range("A65536").end(xlup)
         if application.worksheetFunction.countif(Sheets("Feuil2").range("A:A"), sheets("Feuil1").range("A" & i))>0 then
                    sheets("Feuil3").range("A65536").end(xlup).offset(1,0) = sheets("Feuil1").range("A" & i)
         end if
    next i
    end sub
    0
  2. Kasiope_33 Messages postés 5 Statut Membre
     
    Je vous remercie vivement l'interet que vous portez à ma question, seulement votre réponse n'a pas réussit à me donner une solution. Mais je fouille quand meme dans la direction que vous me donnez.
    Je vais vous donner le code que je comptais utiliser( enfin la base du code) .seulement il ne fonctionne pas
    Sub Agent_sortant()

    For c = 3 To 308
    '-------------Prendre un agent x dans la liste de la feuille réafectation septembre------------------
    Sheets("Réaffectation_septembre_2008").Select
    idendifiant_Agent_Orchi = Range("C" & c & "").Value
    Nom_Agent_Orchi = Range("D" & c & "").Value
    Prenom_Agent_Orchi = Range("E" & c & "").Value

    '--------------- si l'agent l'agent x n'est pas dans feuille réafectation octobre-------
    '--------------- copier l'agent x dans la feuille Personnel sortant----------
    Sheets("Réaffectation_octobre_2008").Select
    For e = 3 To 308
    If Range("C" & e & "").Value <> idendifiant_Agent_Orchi And Range("D" & e & "").Value <> Nom_Agent_Orchi Then

    Sheets("Personnels_sortants").Select
    Dim maligne As String
    For L = 2 To 1000
    If Range("c" & L & "").Value <> "" Then
    maligne = L
    maligne = maligne + 1
    End If
    Next
    Range("C" & maligne & "").Value = idendifiant_Agent_Orchi
    Range("D" & maligne & "").Value = Nom_Agent_Orchi
    Range("E" & maligne & "").Value = Prenom_Agent_Orchi
    End If

    Next
    Next
    MsgBox "Terminé"
    End Sub

    SEULEMENT LA BOUCLE FOR e NEXT S'ARRETE D7S LA PREMIERE LIGNE DE RECHERCHE ET NE BALAYE PAS LES 308 LIGNES DE MA COLONNE DANS LA FEUILLE Réaffectation_octobre_2008

    Encor merci de votre attention et d'avance je vous remercie de votre aide
    0
  3. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    re:

    une tite question, l'identifiant agent est unique par agent ? si oui pourquoi tester le nom ???

    @ te lire
    0
  4. Kasiope_33 Messages postés 5 Statut Membre
     
    Bonjour

    oui l'identifiant est unique bonne remarque mais au départ j'avais fais avec le nom, mais bien sur si on tombe sur "Dupont" donc j'avais rajouté l'identifiant

    merci et vois tu assez clairement qu'elle est ma recharche
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    re:

    pas sur d'avoir compris lol

    Sub Agent_sortant() 
          dim w1 as worksheet, w2 as worksheet, w3 as worksheet
          dim i as long
          set w1 = Sheets("Réaffectation_septembre_2008")
          set w2 = Sheets("Réaffectation_octobre_2008")
          set w3 = Sheets("Personnels_sortants")
    
          for i = 3 to w1.range("C65536").end(xlup).row ' faire toute la colonne C
                 if application.worksheetfunction.countif(w2.range("C:C"), w1.range("C" & i)) = 0 then
                        w1.range("C" & i & ":E" & i).copy destination:=W3.range("C65536").end(xlup).offset(1,0)
                 End If 
          Next 
           MsgBox "Terminé" 
    End Sub 
    


    Comme tu n'as pas founi un fichier exemple, je n'ai pas pu testé la macro
    mais à premiere vue, elle a l'aire correcte
    0
  7. Kasiope_33 Messages postés 5 Statut Membre
     
    Bonjour je te remercie vivement
    Ta macro marche à merveille et en plus cerise sur le gateau elle est vraiment très rapide.
    maintenant je vais essayer de l'adapter pour que ça me copie la ligne entière
    je te donne mon mail perso si tu souhaite correspondre davantage: christian.lassep@numericable.fr
    encore Merci
    0
  8. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    bonjour

    pour une ligne complete :

          for i = 3 to w1.range("C65536").end(xlup).row ' faire toute la colonne C
                 if application.worksheetfunction.countif(w2.range("C:C"), w1.range("C" & i)) = 0 then
                        w1.range("A" & i ).entireRow.copy destination:=W3.range("C65536").end(xlup).offset(1,-2)
                 End If 
          Next 


    Modif en gras pour copie de ligne complete
    0
  9. Kasiope_33 Messages postés 5 Statut Membre
     
    Je te remercie encore une fois pour ton aide et pour l'évolution de la macro (ligne complète)

    @+ de te lire un jour peut etre et je suis vraiment satisfait que des gens puissent s'entraider ainsi
    0