Trier les noms identiques sur deux feuilles.

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:confused:
 

Pièces jointes

  • travail.xlsx
    38.4 KB · Affichages: 529
  • travail.xlsx
    38.4 KB · Affichages: 711

Modeste

XLDnaute Barbatruc
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

  • travail (jesma).xlsm
    47.2 KB · Affichages: 45

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • Copie de travail.xlsm
    50.6 KB · Affichages: 225
  • Copie de travail.xlsm
    50.6 KB · Affichages: 142
Dernière édition:

jesma

XLDnaute Nouveau
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.
 

Modeste

XLDnaute Barbatruc
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!)
 

jesma

XLDnaute Nouveau
Re : Trier les noms identiques sur deux feuilles.

Bonsoir jesma,

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!)

Bonsoir.
Voila le fichier avec quelques colonnes suplementaires

Merci d'avance
Jesma
 

Pièces jointes

  • Classeur 2.xlsx
    13.9 KB · Affichages: 71
  • Classeur 2.xlsx
    13.9 KB · Affichages: 73

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • Copie de Classeur 2-1.xls
    56.5 KB · Affichages: 38
Dernière édition:

pierrejean

XLDnaute Barbatruc
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

  • jesma_Classeur 2.xlsm
    30 KB · Affichages: 47
Dernière édition:

jesma

XLDnaute Nouveau
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.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • Copie de Copie de Classeur 2-1.xls
    61 KB · Affichages: 46
Dernière édition:

Discussions similaires

Réponses
8
Affichages
269

Statistiques des forums

Discussions
312 857
Messages
2 092 865
Membres
105 545
dernier inscrit
pourmanger