Comparer données dans deux colonnes excel

Fermé
ml220108 - 15 août 2010 à 12:27
ml220108 Messages postés 9 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 22 décembre 2010 - 16 août 2010 à 16:47
Bonjour,

je voudrais savoir s'il existe une formule ou une macro qui peut comparer deux colonnes qui contiennent des noms, de façon à completer la premiere quand un nom different apparait dans la seconde.

exemple

colonne 1 colonne 2

bernard bernard
thomas gerard
louis thomas
... louis

le but étant de reperer "gerard" ou un autre nom et de le copier dans colonne 1

je precise que les deux colonnes sont dans deux onglets différent


j'espère avoir été clair

merci par avance de votre aide

9 réponses

Le Pingou Messages postés 12242 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 16 mars 2025 1 458
Modifié par Le Pingou le 16/08/2010 à 15:06
Bonjour,
Ma proposition de procédure à mettre dans le module.
Les données commence en ligne 2 (titre colonne = ligne 1).
Compare la valeur des colonnes [A] et si différente copie valeur colonne [A :C] de la feuille 2 et les collent sur la feuille 1 à la première ligne vide (à la suite).
La procédure :
Sub CopierNomDifferent() 
Dim dlc As Long, nli As Long 
Dim cel As Range 
dlc = Sheets(1).Cells(Columns(1).Cells.Count, 1).End(xlUp).Row + 1 
nli = Sheets(2).Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 
For Each cel In Sheets(2).Range("a2:a" & nli) 
Set resu = Sheets(1).Range("A:A").Find(What:=cel.Value, lookat:=xlWhole) 
    If resu Is Nothing Then 
        Sheets(2).Range("A" & cel.Row & ":C" & cel.Row).Copy Destination:=Sheets(1).Cells(dlc, 1) 
        dlc = dlc + 1 
    End If 
Next cel 
End Sub


Note:
Vous devez peut-être adapter :
Sheets(1) par Sheets("Maladie 2010") et Sheets(2) par Sheets("donnees")

Salutations.
Le Pingou
4
ml220108 Messages postés 9 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 22 décembre 2010 3
16 août 2010 à 15:17
Bonjour Pingou,

je vous remercie pour ce code et je vais essayer ce soir de l'intégrer à mon fichier d'origine.

encore merci

je posterai un message pour vous tenir au courant.

cordialement,
ml220108
1
Le Pingou Messages postés 12242 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 16 mars 2025 1 458
Modifié par Le Pingou le 16/08/2010 à 15:24
Bonjour,
N'oubliez pas la petite note du bas ....
Salutations.
Le Pingou
0
ml220108 Messages postés 9 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 22 décembre 2010 3
16 août 2010 à 16:44
re bonjour,

tout d'abord merci pour ce code.

j'aurai juste une dernière question à vous poser...

sur la colonne de la feuille 1, j'ai été obligé pour ne pas importer de fausses données de mettre "vide" dans les cellules à la suite des noms.

je voudrais donc savoir s'il y a un moyen de copier coller le nom manquant sur la premiere cellules de la colonne A feuille 1 contenant le terme "vide" au lieu de le copier en (dlc, 1)??

merci pour votre patience.

ps: comment mettre la note en bas svp, car c la premiere fois que j'utilise ce forum?

salutations.
1
ml220108 Messages postés 9 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 22 décembre 2010 3
16 août 2010 à 16:47
désolé pour le ps, je viens de comprendre ce que vous vouliez dire par n'oublier pas la petite note en bas!!!

merci
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12242 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 16 mars 2025 1 458
15 août 2010 à 21:18
Bonjour,
A vous lire, la colonne 1 sera donc un double de la deuxième ... dans quel but ?
0
ml220108 Messages postés 9 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 22 décembre 2010 3
16 août 2010 à 08:28
bonjour le Pingou,

tout d'abord merci de vous intéresser à mon sujet.

alors je vais tenter de préciser les choses.

le premier onglet de mon fichier correspond à un tableau personnel qui contient la liste de mes employés et diverses informations que je dois alimenter chaque mois.

le deuxième onglet correspond en fait à une extraction par macro qui provient d'un fichier excel d'un autre service de mon entreprise, dans lequel j'ai extrais par macro les informations qui m'intéressent.

j'extrais par une macro copier/coller les colonnes qui m'intéressent dans ce tableau, pour les envoyer dans mon deuxième onglet.(dont la colonne avec les noms actualisés de mes employés, car cette liste change dans l'année)

ensuite en m'appuyant sur une formule matricielle dans une macro, je demande l'importation des données quand les mêmes noms apparaissent dans les deux colonnes de noms.

mais mon problème actuel est que pour les nouveaux noms, je voudrais que suite à une comparaison des 2 colonnes de noms, automatiquement, les nouveaux noms soient importer dans mon premier onglet, soit en créant une nouvelle ligne, soit en remplissant une cellule vide.

donc le but est d'actualiser ma liste par rapport aux données de l'autre service.

salutations
0
ml220108 Messages postés 9 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 22 décembre 2010 3
16 août 2010 à 09:19
pour préciser un peu plus, voila la macro

' suppression_contenu_janvier Macro

Sheets("Maladie 2010").Select
Range("B4:B63").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=15

' matricielle_janv Macro

Sheets("Maladie 2010").Select
Range("B4").Select
Selection.FormulaArray = _
"=SUM(IF((RC[-1]=donnees!RC[-1]:R[64]C[-1]),donnees!RC:R[64]C))"
Range("B4").Select
Selection.AutoFill Destination:=Range("B4:B63"), Type:=xlFillDefault
Range("B4:B63").Select
ActiveWindow.SmallScroll Down:=-15

' nb_agent Macro

Sheets("donnees").Select
Range("C3").Select
Selection.Copy
Sheets("Maladie 2010").Select
ActiveWindow.SmallScroll Down:=33
Range("C64").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Font.Bold = True

End Sub

voila, j'espère avoir été assez clair!!

merci par avance
0
Le Pingou Messages postés 12242 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 16 mars 2025 1 458
16 août 2010 à 11:07
Bonjour,
Merci pour l'explication et la procédure.
Il semble qu'il manque le début de la procédure ...!
Donc c'est le code qui extrait les données de l'autre service et les place dans la feuille [Maladie 2010] de votre classeur, est-ce bien cela ?
Les noms se trouvent dans quelle colonne de chaque feuille ?
La version d'Excel .....!
0
ml220108 Messages postés 9 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 22 décembre 2010 3
16 août 2010 à 11:25
bonjour,

voici la macro qui extrait les données dans l'autre fichier.

' import_janvier Macro

Windows("REL 123_Janvier.xls").Activate
Range("A:A,W:W").Select
Range("W1").Activate
Selection.Copy
Windows("Maladie.xls").Activate
Sheets("donnees").Select
Columns("A:A").Select
ActiveSheet.Paste
Range("C4").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "1"
Range("C5").Select
ActiveCell.FormulaR1C1 = "2"
Range("C4:C5").Select
Selection.AutoFill Destination:=Range("C4:C70"), Type:=xlFillDefault
Range("C4:C70").Select
ActiveWindow.SmallScroll Down:=-20
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A4:B70").Select
Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Sheets("donnees").Select
Range("C3").Select
ActiveCell.FormulaR1C1 = "=COUNT(R[1]C[-1]:R[75]C[-1])-2"
With Selection.Interior
.ColorIndex = 35
.Pattern = xlSolid
End With
Range("C2").Select
Application.CalculateFull
ActiveCell.FormulaR1C1 = "AGENT"
Range("C2").Select
With Selection.Interior
.ColorIndex = 35
.Pattern = xlSolid
End With
ActiveWindow.SmallScroll Down:=-66
End Sub

voila le début du processus

ensuite pour mon fichier:

liste nom (la mienne) colonne A ,feuille Maladie 2010
liste nom importée colonne A ,feuille "donnees"

version excel: 2003

Merci et désolé pour le manque de précision

salutation
0