Comparer les valeurs de deux colonnes en vba

[Résolu/Fermé]
Signaler
Messages postés
5
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 décembre 2008
-
Messages postés
5
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 décembre 2008
-
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

8 réponses

Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
241
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
Messages postés
5
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
241
re:

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

@ te lire
Messages postés
5
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
241
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
Messages postés
5
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
241
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
Messages postés
5
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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