Bonjour à tous,
Je souhaite transposer une colonne sur plusieurs lignes en ajoutant un retour à la ligne :
- Condition 1 : dès qu'il y a une nouvelle chaine de caractère de type "NomX prénom"
- Condition 2 (sous condition 1) : dès qu'il y a une nouvelle chaine de caractère de type "ABCD1234", ce format étant constant (4 lettres et 4 chiffres)
Un exemple des données à transposer :
Nom1 prenom
ABCD1234
DD/MM/YYYY
Nom2 prenom
EFGH1234
DD/MM/YYYY
DD/MM/YYYY
DD/MM/YYYY
IJKL1234
DD/MM/YYYY
MNOP1234
DD/MM/YYYY
DD/MM/YYYY
Nom3 prenom
QRST1234
DD/MM/YYYY
DD/MM/YYYY
UVWX1234
DD/MM/YYYY
DD/MM/YYYY
DD/MM/YYYY
....
Ce qui donnerait :
ligne1 : Nom1 prenom;ABCD1234;DD/MM/YYYY
ligne2 : Nom2 prenom;EFGH1234;DD/MM/YYYY;DD/MM/YYYY;DD/MM/YYYY
ligne3 : "";IJKL1234;DD/MM/YYYY
ligne4 : "";MNOP1234;DD/MM/YYYY;DD/MM/YYYY
ligne5 : Nom3 prenom;QRST1234;DD/MM/YYYY;DD/MM/YYYY
ligne6 : "";UVWX1234;DD/MM/YYYY;DD/MM/YYYY;DD/MM/YYYY
....
J'ai trouvé un début de solution proposée par boisgontierjacques dans le post suivant :
https://www.developpez.net/forums/d1.../#post10740040
Le code est le suivant :
Auriez-vous l'amabilité de me le compléter svp?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub UneColonnePlusieursLignes() Set début = Range("A1") fin = [A65000].End(xlUp).Row Set dest = Range("C2") Taille = 10 InterVert = 1 For ligne = 0 To fin Step Taille a = début.Offset(ligne).Resize(Taille) lignedest = (ligne \ Taille) * InterVert dest.Offset(lignedest, 0).Resize(, Taille) = Application.Transpose(a) Next ligne End Sub
En vous remerciant par avance pour vos contributions
Cordialement.
Partager