Excel - 2 Listes en 1
Résolu
dubolg
-
dubol -
dubol -
Bonjour,
Je cherche une fonction, marco, idée qui me permettrait d'automatiser un travail très pénible.
Tout débute sur Excel, j'ai 2 listes :
- 1ère : des mots l'un en dessous de l'autre (ex: Z-EV, CMM01-PU, BP(SAL), ...)
___Colonne 1 :
___Z-EV
___CMM01-PU
___BP(SAL)
___...
- 2ème : liste complète de la 1ère liste (ex: Z-EV.A, Z-EV.B, Z-EV.R, CMM01-PU.X, CMM01-PU.Y, ...)
___Colonne 1 :
___Z-EV.A
___Z-EV.B
___Z-EV.C
___CMM01-PU.X
___CMM01-PU.Y
Vous l'aurai compris, j'ai une liste synthétique qui représente mes bases et une liste développé qui comporte la base, point, autre chose.
J'ai ces 2 listes sur des feuilles séparer et mon but est de pouvoir assembler les 2 listes sur une feuille, de la manière suivant :
Colonne 1 :__________Colonne 2 :
Z-EV________________Z-EV.A
____________________Z-EV.B
____________________Z-EV.C
saut de ligne
CMM01-PU___________CMM01-PU.X
___________________CMM01-PU.Y
saut de ligne
...
Merci pour votre aide
Je cherche une fonction, marco, idée qui me permettrait d'automatiser un travail très pénible.
Tout débute sur Excel, j'ai 2 listes :
- 1ère : des mots l'un en dessous de l'autre (ex: Z-EV, CMM01-PU, BP(SAL), ...)
___Colonne 1 :
___Z-EV
___CMM01-PU
___BP(SAL)
___...
- 2ème : liste complète de la 1ère liste (ex: Z-EV.A, Z-EV.B, Z-EV.R, CMM01-PU.X, CMM01-PU.Y, ...)
___Colonne 1 :
___Z-EV.A
___Z-EV.B
___Z-EV.C
___CMM01-PU.X
___CMM01-PU.Y
Vous l'aurai compris, j'ai une liste synthétique qui représente mes bases et une liste développé qui comporte la base, point, autre chose.
J'ai ces 2 listes sur des feuilles séparer et mon but est de pouvoir assembler les 2 listes sur une feuille, de la manière suivant :
Colonne 1 :__________Colonne 2 :
Z-EV________________Z-EV.A
____________________Z-EV.B
____________________Z-EV.C
saut de ligne
CMM01-PU___________CMM01-PU.X
___________________CMM01-PU.Y
saut de ligne
...
Merci pour votre aide
A voir également:
- Excel - 2 Listes en 1
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
- Excel liste déroulante en cascade - Guide
- Déplacer colonne excel - Guide
5 réponses
Bonjour,
Si liste2 comprend toutes les bases de liste1 ça simplifie le programme.
Est-ce le cas ?
eric
Si liste2 comprend toutes les bases de liste1 ça simplifie le programme.
Est-ce le cas ?
eric
Re,
essaie sur une liste plus grande :
http://www.cijoint.fr/cjlink.php?file=cj201109/cijzMHC2jY.xls
eric
edit : je viens seulement de lire ton commentaire de 11:05 donc ma proposition ne va pas. Trop tard.
Je suis absent cette am, si qcq'un veut reprendre...
essaie sur une liste plus grande :
http://www.cijoint.fr/cjlink.php?file=cj201109/cijzMHC2jY.xls
eric
edit : je viens seulement de lire ton commentaire de 11:05 donc ma proposition ne va pas. Trop tard.
Je suis absent cette am, si qcq'un veut reprendre...
Bonjour,
Liste2 est supposée triée.
A tester :
http://www.cijoint.fr/cjlink.php?file=cj201109/cijSCtOK1t.xls
eric
Liste2 est supposée triée.
A tester :
http://www.cijoint.fr/cjlink.php?file=cj201109/cijSCtOK1t.xls
eric
Bcp de boulot, je testerai aujourd'hui ou plus tard et essaierai de comprendre le code. Je vous tiens au jus
bonne journée
bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Vraiment superbe !
Par contre je ne comprend pas exactement la manière du procéder,
pourrais-tu me l'expliquer ? Je rappel le code que j'ai adapté à mes feuilles :
Par contre je ne comprend pas exactement la manière du procéder,
pourrais-tu me l'expliquer ? Je rappel le code que j'ai adapté à mes feuilles :
Sub Remplissage_Connecteur() '------------------------- 'Déclaration des variables Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet Dim lig1 As Long, lig2 As Long, lig3 As Long, base As String, c As Range Set sh3 = Worksheets("F_connecteurs") Set sh2 = Worksheets("LIDA") Set sh1 = Worksheets("travail_temporaire") '-------------- 'Initialisation lig2 = 2: lig3 = 5: base = "vide" '---- 'Code For lig1 = 2 To sh1.[A65536].End(xlUp).Row If Left(sh2.Cells(lig2, 1), Len(base)) <> base Then lig3 = lig3 + 1 base = sh1.Cells(lig1, 1) sh3.Cells(lig3, 2) = base End If Set c = sh2.Columns(1).Find(base & "*", LookIn:=xlValues) If c Is Nothing Then lig3 = lig3 + 1 Else lig2 = c.Row While Left(sh2.Cells(lig2, 1), Len(base)) = base sh3.Cells(lig3, 3) = sh2.Cells(lig2, 1) lig2 = lig2 + 1 lig3 = lig3 + 1 Wend End If Next lig1 End Sub
Re,
N'oublie pas que ça a été fait en 3 coups suite aux compléments que tu apportais au fil du temps, donc la logique de traitement n'est sûrement pas la meilleure puisque j'adaptais le réalisé...
J'appelle 'détail' un élément de liste2. ex basexxx.yyyyy
Commenté au mieux, mais je pense que tu avais compris l'essentiel puisque tu avais adapté à ton classeur
eric
N'oublie pas que ça a été fait en 3 coups suite aux compléments que tu apportais au fil du temps, donc la logique de traitement n'est sûrement pas la meilleure puisque j'adaptais le réalisé...
J'appelle 'détail' un élément de liste2. ex basexxx.yyyyy
'Code ' pour toutes les lignes de 'base' liste1 For lig1 = 2 To sh1.[A65536].End(xlUp).Row ' si c'est une nouvelle base dans liste1 If Left(sh2.Cells(lig2, 1), Len(base)) <> base Then ' sauter des lignes dans la compil lig3 = lig3 + 1 ' mémoriser la base base = sh1.Cells(lig1, 1) ' l'inscrire en colonne B de compil sh3.Cells(lig3, 2) = base End If ' rechercher la 1ère ligne commençant par 'base' dans liste2 (celle avec base.xxxx) Set c = sh2.Columns(1).Find(base & "*", LookIn:=xlValues) If c Is Nothing Then ' s'il n'y en a pas sauter 1 ligne dans compil pour préparer base suivante lig3 = lig3 + 1 Else ' s'il y en a récupérer le n° ligne du détail dans liste2 lig2 = c.Row ' tant que détail liste2 commence par 'base' While Left(sh2.Cells(lig2, 1), Len(base)) = base ' inscrire détail dans compil colonne C sh3.Cells(lig3, 3) = sh2.Cells(lig2, 1) ' passer à la ligne suivante liste2 lig2 = lig2 + 1 ' passer à la ligne suivante compil lig3 = lig3 + 1 ' on boucle sur le while Wend End If ' base suivante liste1 Next lig1 End Sub
Commenté au mieux, mais je pense que tu avais compris l'essentiel puisque tu avais adapté à ton classeur
eric
Dans ce cas, je ne met rien dans la colonne 2 et je passe à la base suivante
La référence reste la liste 1