Excel - Transposer avec conditions
Résolu/Fermé
A voir également:
- Excel transposer avec liaison
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Comment calculer la moyenne sur excel - Guide
2 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
Modifié par pilas31 le 21/02/2013 à 11:14
Modifié par pilas31 le 21/02/2013 à 11:14
Bonjour,
Voici une petite macro qui fait le travail (pas trop mal).
Attention, Trois contraintes :
1/ il ne faut pas de ligne vide
2/ Si il y a une ou plusieurs lignes Adresse alors la dernière est toujours Code Postal + Ville.
3/ en colonne A il y a toujours un num pour une nouvelle personne sinon il n'y a rien
Pour aller dans l'éditeur VBA faire Alt+F11, inéserer un nouveau module, copier coller la macro et l'éxécuter
A+
Cordialement,
Voici une petite macro qui fait le travail (pas trop mal).
Attention, Trois contraintes :
1/ il ne faut pas de ligne vide
2/ Si il y a une ou plusieurs lignes Adresse alors la dernière est toujours Code Postal + Ville.
3/ en colonne A il y a toujours un num pour une nouvelle personne sinon il n'y a rien
Sub Transposer() Nump = 2 Lig = 2 DerLig = Range("B" & Rows.Count).End(xlUp).Row While Lig <= DerLig Range(Cells(Nump, 5), Cells(Nump, 10)).ClearContents Cells(Nump, 5) = Cells(Lig, 1) Cells(Nump, 6) = Cells(Lig, 2) Lig = Lig + 1 LigDeb = Lig While Cells(Lig, 1) = "" And Lig <= DerLig Lig = Lig + 1 Wend If Lig - 1 >= LigDeb Then Cells(Nump, 9) = Left(Cells(Lig - 1, 2), 5) If Len(Cells(Lig - 1, 2)) > 5 Then Cells(Nump, 10) = Right(Cells(Lig - 1, 2), Len(Cells(Lig - 1, 2)) - 5) End If End If If Lig - 1 >= LigDeb + 1 Then Cells(Nump, 7) = Cells(LigDeb, 2) End If If Lig - 1 >= LigDeb + 2 Then Cells(Nump, 8) = Cells(Lig - 2, 2) End If If Lig - 1 >= LigDeb + 3 Then Cells(Nump, 7) = Cells(Nump, 7) & " - " & Cells(Lig - 3, 2) End If Nump = Nump + 1 Wend End Sub
Pour aller dans l'éditeur VBA faire Alt+F11, inéserer un nouveau module, copier coller la macro et l'éxécuter
A+
Cordialement,