Dupliquer des noms d'une feuil1 vers la feuil2 en automatique

Bonjour,

Dans mon classeur, j'ai 2 feuilles.

Je souhaiterais que les noms de ma feuil1 ne soit dupliqué qu'une seule fois sur la feuil2.

Merci pour vos réponses.

15essai.xlsx (11.96 Ko)

Bonjour Jumarin, bonjour le forum,

En pièce jointe ton fichier modifié. Clique sur le bouton RECUP dans l'onglet Feuil2.

Le code :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TSS As ListObject 'déclare la variable TSS (Tableau Structuré Source)
Dim TSD As ListObject 'déclare la variable TSD (Tableau Structuré Destination)
Dim PLS As Range 'déclare la variable PLS (PLage Source)
Dim PLD As Range 'déclare la variable PLD (PLage Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)

Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD
Set TSS = OS.ListObjects(1) 'définit le tableau structuré source TSS
Set PLS = TSS.HeaderRowRange(1, 1) 'définit la plage PLS (première cellule des en-têtes du tableau structuré TSS)
Set TSD = OD.ListObjects(1) 'définit le tableau structuré destination TSD
Set PLD = TSD.HeaderRowRange 'initialise la plage destination PLD
TV = PLS.CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 2)) = "" 'alimente le dictionnaire D avec les données en colonne 2 de TV
Next I 'prochaine ligne de la boucle
Set PLD = PLD.Resize(PLD.Rows.Count + D.Count, PLD.Columns.Count) 'redimensionne la plage PLD en fonctions du nombre d'éléments du dictionnaire D sans doublons (les Clés)
TSD.Resize PLD 'redimensionne le tableau structuré destination TSD
Set PLD = TSD.DataBodyRange 'redéfinit la plage PLD (le tableau structuré sans les entête)
PLD(1, 2).Resize(D.Count, 1).Value = Application.Transpose(D.keys) 'renvoie dans la cellule ligne 1 colonne 2 de la plage PLD les clés du dictionnaire D transposées
End Sub

ça fonctionne nickel,

quelle maitrise de vba!

j'avais juste une dernière petit chose que j'avais oublié: ce tableau est pour moi un récap de personne ayant réalisé une formation.

Lorsque tout se passe bien, elle n'est faite qu'une seule fois (N°1).

Mais quand la personne ne réussit pas, elle doit la refaire (N°2)

Comment peut on récupérer le nom 2 fois avec 2 N° de formation différente?

Bonsoir Jumarin, bonsoir le forum,

quelle maitrise de vba!

Arrête tu vas faire rire tous les vrais balèzes de ce forum...

La version 02 en pièce jointe avec le code modifié ci-dessous :

18jumarin-ep-v02.xlsm (26.26 Ko)

Merci Beaucoup @TauTheme,

ça fonctionne à merveille!

Rechercher des sujets similaires à "dupliquer noms feuil1 feuil2 automatique"