Tant pis, car sur ton fichier exemple, il ressort juste les données nécessaires.
Tant pis, car sur ton fichier exemple, il ressort juste les données nécessaires.
Cordialement.
J'utilise toujours le point comme séparateur décimal dans mes tests.
Bonjour,
je ne peux qu’approuver @mercatog , qui donne un code tout fait à utiliser voir à ajuster si il le faut …
C'est déjà beaucoup !!!
Quand à moi, je l'ai fait juste pour l'exercice et par ce que je ne fais pas souvent de récursif, cela servira aussi bien à toi qu'à d'autres
N'ayant pas trop le temps , je ne l'ai pas peaufiner mais le principe y est (fait selon ton xlsx - qui ne donne pas tout le résultat) :
Edit : Suppression de Cstr (2 supp) qui ne servait à rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 Sub Test() Dim DL&, Coll As New Collection, VA, i&, Cle$, Lig$, cpt As Byte, L With Sheets("BASE") DL = .Cells(Rows.Count, 1).End(xlUp).Row VA = .Range("A1:D" & DL).Value On Error Resume Next For i = 2 To DL Cle = VA(i, 1): Coll.Add i, Cle If Err Then Err.Clear: Lig = Coll(Cle): Coll.Remove Cle Coll.Add Lig & "|" & i, Cle End If Next End With Cle = "112461" For Each L In Split(Coll(Cle), "|") cpt = 1 Boucle L, cpt, Coll, VA Next On Error GoTo 0 End Sub Sub Boucle(L, cpt As Byte, Coll As Collection, VA) Dim Cle$ On Error Resume Next With Sheets("RESULTAT") Cle = VA(L, 4): Coll (Cle) If Err Then DL = .Cells(.Rows.Count, 5).End(xlUp)(2).Row .Cells(DL, cpt).Value = VA(L, 4): .Cells(DL, 5).Value = VA(L, 3) Else DL = .Cells(.Rows.Count, 5).End(xlUp)(2).Row .Cells(DL, cpt).Value = VA(L, 4): .Cells(DL, 5).Value = VA(L, 3) cpt = cpt + 1 For Each L In Split(Coll(Cle), "|") Boucle L, cpt, Coll, VA Next cpt = cpt - 1 End If End With End Sub
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager