Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Trier les noms identiques sur deux feuilles.

  • Initiateur de la discussion Initiateur de la discussion jesma
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jesma

XLDnaute Nouveau
Bonjour a vous.
J'ai besoin de votre aide.
J'ai un classeur avec deux feuilles,
Les seuls donnes qui sont identiques, sont les noms et prenoms.
J'aurais besoin de pouvoir placer dans une 3 feuille, les personnes qui font partie de deux feuilles, avec l'ensemble des données.
Merci de votre aide.
Jesma😕
 

Pièces jointes

Re : Trier les noms identiques sur deux feuilles.

Bonjour jesma,
Salut pierrejean 🙂

Comme je l'avais fait, que la méthode est (un peu) différente ... et pour le plaisir de saluer Pierre ... une autre proposition.

PS: la macro se lance à l'aide du raccourci Ctrl+Shift+J
 

Pièces jointes

Re : Trier les noms identiques sur deux feuilles.

Bonjour jesma,
Salut pierrejean 🙂

Comme je l'avais fait, que la méthode est (un peu) différente ... et pour le plaisir de saluer Pierre ... une autre proposition.

PS: la macro se lance à l'aide du raccourci Ctrl+Shift+J

Merci Modeste.
Comme a Pierre, peux tu me donner ta procedure ?
Merci
Jesma
 
Re : Trier les noms identiques sur deux feuilles.

Re-bonjour jesma,

Dans les deux cas, nous avons travaillé par macro. Ouvre un fichier et appuie sur Alt+F11
... Pas le temps d'en dire plus avant ce soir, en ce qui me concerne 🙁
 
Re : Trier les noms identiques sur deux feuilles.

Bonjour,

Voir PJ

Code:
Sub Communs()
  Set f1 = Sheets("feuil1")
  Set f2 = Sheets("feuil2")
  Set MonDico1 = CreateObject("Scripting.Dictionary")
  For Each c In f1.Range("C2:C" & f1.[C65000].End(xlUp).Row)
     MonDico1(c & " " & c.Offset(, 1)) = ""
  Next c
  Set MonDico2 = CreateObject("Scripting.Dictionary")
  For Each c In f2.Range("C2:C" & f2.[C65000].End(xlUp).Row)
    tmp = c & " " & c.Offset(, 1)
    If MonDico1.exists(tmp) Then If Not MonDico2.exists(tmp) Then MonDico2(tmp) = ""
  Next c
  f2.[G2].Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.keys)
End Sub

Temps: 0,04 seconde

JB
 

Pièces jointes

Dernière édition:
Re : Trier les noms identiques sur deux feuilles.

Merci a vous trois.
C'est super sympa d'avoir eu un moment pour me consacrer votre disponibilité.

Vous m'avez fait gagner des heures de travail
Merci
 
Re : Trier les noms identiques sur deux feuilles.

Re-bonjour jesma,

Dans les deux cas, nous avons travaillé par macro. Ouvre un fichier et appuie sur Alt+F11
... Pas le temps d'en dire plus avant ce soir, en ce qui me concerne 🙁

Bonsoir Modeste.
Voila, j'ai copie l'ensemble de tous les membres des listes dans les diferentes feuilles. Le résultat est positif.
En contre partie, quand je veux rajouter des informations dans des colommes suplementaires, je n'arrive pas a deceler ou est ce que je dois aller modifier l'information sur le macro.
Merci d'avance.
 
Re : Trier les noms identiques sur deux feuilles.

Bonsoir jesma,

quand je veux rajouter des informations dans des colommes suplementaires, je n'arrive pas a deceler ou est ce que je dois aller modifier l'information
Dans le code que j'ai proposé, il y a (j'en ai bien peur) plusieurs modifications à effectuer.
Le plus simple serait sans doute que tu nous mettes, dans un nouveau fichier, quelques lignes dans tes deux feuilles (toujours sans données confidentielles!)
 
Re : Trier les noms identiques sur deux feuilles.


Bonsoir.
Voila le fichier avec quelques colonnes suplementaires

Merci d'avance
Jesma
 

Pièces jointes

Re : Trier les noms identiques sur deux feuilles.

Bonjour,

Code:
Sub Communs()
  Set f1 = Sheets("feuil1")
  Set f2 = Sheets("feuil2")
  Set f3 = Sheets("feuil3")
  Set mondico1 = CreateObject("Scripting.Dictionary")
  For Each c In f1.Range("c1:c" & f1.[c65000].End(xlUp).Row)   ' adapter
    mondico1(c & " " & c.Offset(, 1)) = c.Row
  Next c
  Set mondico2 = CreateObject("Scripting.Dictionary")
  For Each c In f2.Range("j1:j" & f2.[j65000].End(xlUp).Row)   ' adapter
    tmp = c & " " & c.Offset(, 1)
    If mondico1.exists(tmp) Then If Not mondico2.exists(tmp) Then mondico2(tmp) = c.Row
  Next c
  f3.[A2].Resize(mondico2.Count, 1) = Application.Transpose(mondico2.keys)
  col1 = 34     ' adapter
  col2 = 17     ' adapter
  lig = 2
  For Each c In mondico2
    f1.Cells(mondico1(c), 1).Resize(, col1).Copy f3.Cells(lig, 2)
    f2.Cells(mondico2(c), 1).Resize(, col2).Copy f3.Cells(lig, col1 + 2)
    lig = lig + 1
  Next c
End Sub

Doit être rapide sur x1000

JB
 

Pièces jointes

Dernière édition:
Re : Trier les noms identiques sur deux feuilles.

Re

Une version adaptable
obligation : avoir 2 colonnes nom et prenom dans chaque feuille (ces colonnes seront a specifier dans la macro ainsi que les limites des zones a reprendre)
Inconvenients: Repetition des noms et prenoms plus vitesse d'execution

J.B : petite modif à faire pour integrer la ligne 1 des feuil1 et feuil2
 

Pièces jointes

Dernière édition:
Re : Trier les noms identiques sur deux feuilles.

Merci Pierrejean. Merci Boisgontier. Merci Modeste.
Le problème est résolu.
Pierrejean, j'ai pris avec note de la procédure que tu m'as transmit, et je suis arrivée a identifier les paramètres de la mise en place.
Boisgontier. J'ai copie ton macro. Bien que je n'arrive pas a identifier les paramétrés concernant les nombre des colonnes.
Mais de je tiens a vous esprimer ma gratitude pour le temps passée d’arriéré l’écran.

Jesma.
 
Re : Trier les noms identiques sur deux feuilles.

>J'ai copie ton macro. Bien que je n'arrive pas a identifier les paramétrés concernant les nombre des colonnes.


colnom1 = "C" ' adapter
colNom2 = "J" ' adapter

Le nombre de colonnes est calculé automatiquement.

Code:
Sub Communs()
  Set f1 = Sheets("feuil1")
  Set f2 = Sheets("feuil2")
  Set f3 = Sheets("feuil3")
  colnom1 = "C"    ' adapter
  colNom2 = "J"   ' adapter
  Set mondico1 = CreateObject("Scripting.Dictionary")
  For Each c In f1.Range(colnom1 & "1:" & colnom1 & f1.[c65000].End(xlUp).Row)   ' adapter
    mondico1(c & " " & c.Offset(, 1)) = c.Row
  Next c
  Set mondico2 = CreateObject("Scripting.Dictionary")
  For Each c In f2.Range("j1:j" & f2.[j65000].End(xlUp).Row)   ' adapter
    tmp = c & " " & c.Offset(, 1)
    If mondico1.exists(tmp) Then If Not mondico2.exists(tmp) Then mondico2(tmp) = c.Row
  Next c
  f3.[A2].Resize(mondico2.Count, 1) = Application.Transpose(mondico2.keys)
  col1 = f1.Cells.Find("*", , , , xlByColumns, xlPrevious).Column
  col2 = f2.Cells.Find("*", , , , xlByColumns, xlPrevious).Column
  lig = 2
  For Each c In mondico2
    f1.Cells(mondico1(c), 1).Resize(, col1).Copy f3.Cells(lig, 2)
    f2.Cells(mondico2(c), 1).Resize(, col2).Copy f3.Cells(lig, col1 + 2)
    lig = lig + 1
  Next c
End Sub

JB
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
377
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…