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
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
A voir également:
- Comparer données dans deux colonnes excel
- Comment faire deux colonnes indépendantes dans word - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Déplacer une colonne excel - Guide
- Liste déroulante excel - Guide
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
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 :
Note:
Vous devez peut-être adapter :
Sheets(1) par Sheets("Maladie 2010") et Sheets(2) par Sheets("donnees")
Salutations.
Le Pingou
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
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
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
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
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
Modifié par Le Pingou le 16/08/2010 à 15:24
Bonjour,
N'oubliez pas la petite note du bas ....
Salutations.
Le Pingou
N'oubliez pas la petite note du bas ....
Salutations.
Le Pingou
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
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.
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.
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
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
merci
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
15 août 2010 à 21:18
Bonjour,
A vous lire, la colonne 1 sera donc un double de la deuxième ... dans quel but ?
A vous lire, la colonne 1 sera donc un double de la deuxième ... dans quel but ?
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
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
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
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
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
' 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
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
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 .....!
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 .....!
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
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
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