Transposition d'une liste d'adresses en plusieurs colonnes.

sparga

XLDnaute Nouveau
Bonjour à tous,
Nouveau sur le forum, j'espère que vous pourrez m'aider ! Je connais un peu Excel, mais je suis très loin d'être un expert !

Je vais présenter un peu le contexte de ma question :

Actuellement en stage, je dois récupérer des données sur les maisons de retraite (adresses) à l'échelle de la France.
J'ai pu, grâce a un annuaire en ligne, récupérer ces adresses sous forme de liste en les copiant directement dans Excel.

les adresses se présentent sous cette forme :

Numero de département
Titre
Nom de l'établissement
Adresse
Code postal Ville
Téléphone

Exemple :

18
Bourges : Etablissements d'hébergement
Maison de retraite XXX
18 rue des Lilas
18000 Bourges
0248.............

Une fois copiées dans Excel, toutes les adresses se retrouvent séparées par plusieurs espaces.

La pluspart de ces adresses commptent 6 lignes, mais certaines sont imprécises et en comptent 5 (seul le nom de la commune est présent, pas le numéro ou le nom de rue).

De plus, lors du copier-coller, des lignes vides (contenant en général un espace) se sont glissées dans la liste entre certaines adresses.

je joint un fichier "données de base", qui contient les données telles qu'elles se présentent après le copier-coller (elles ne sont bien sûr pas complètes).


Maintenant, mon (gros) problème :

Je dois transformer cette liste d'adresses en colonnes (la transposer en gros), afin voir une colonne pour chaque ligne de l'adresse.

J'ai commencé par utiliser la fonction TRANSPOSE(), mais je devais ensuite retoucher le fichier une fois la formule recopiée vers le bas car ca me transposait chaque ligne de l'adresse : La première niquel, les autres avec un bout en moins... du coup obligé de supprimer les lignes en trop manuellement

J'ai donc fait, aidé d'un collègue, une macro mais dès que celle-ci rencontre une anomalie dans une adresse (ligne en moins ou en trop), elle ne marche plus du tout et tout se retrouve décalé...

voila la macro en question :


Sub TRANSPOSE()

Dim i As Integer
Dim ligne As Integer

i = 1
ligne = 1

Do While i < 120



Range("A" & i).Select
Selection.Copy
Range("B" & ligne).Select
ActiveSheet.Paste
Range("A" & i + 1).Select
Application.CutCopyMode = False
Selection.Copy
Range("C" & ligne).Select
ActiveSheet.Paste
Range("A" & i + 2).Select
Application.CutCopyMode = False
Selection.Copy
Range("D" & ligne).Select
ActiveSheet.Paste
Range("A" & i + 3).Select
Application.CutCopyMode = False
Selection.Copy
Range("E" & ligne).Select
ActiveSheet.Paste
Range("A" & i + 4).Select
Application.CutCopyMode = False
Selection.Copy
Range("F" & ligne).Select
ActiveSheet.Paste
Range("A" & i + 5).Select
Application.CutCopyMode = False
Selection.Copy
Range("G" & ligne).Select
ActiveSheet.Paste

i = i + 6
ligne = ligne + 1

Loop


End Sub

en gros elle prend chaque ligne (cellule) de l'adresse et la copie dans une ligne, avant de passer a la suivante.

Je voulais savoir si il était possible d'améliorer cette macro afin qu'elle ne soit pas génée par les anomalies dans les adresses, ou alors s'il existe une autre solution sans utiliser de macro.

Un grand merci !

Bonne fin de journée
 

Pièces jointes

  • Données de base.xlsx
    10.3 KB · Affichages: 46

Lolote83

XLDnaute Barbatruc
Re : Transposition d'une liste d'adresses en plusieurs colonnes.

Salut Sparga,
Peut être ici un élément de réponse. Voir ma macro transpose2
Cordialement
Lolote83
 

Pièces jointes

  • Copie de Données de base.xls
    45.5 KB · Affichages: 50
  • Copie de Données de base.xls
    45.5 KB · Affichages: 55
  • Copie de Données de base.xls
    45.5 KB · Affichages: 55

sparga

XLDnaute Nouveau
Re : Transposition d'une liste d'adresses en plusieurs colonnes.

Salut,
Merci pour ta réponse !
En effet cela résous mon problème de lignes en trop ou en moins, c'est parfait !
Pourrais-je te demander de m'expliquer quelque peu le fonctionnement de ta macro ?
Un grand merci d'avance !

Bonne soirée
 

Lolote83

XLDnaute Barbatruc
Re : Transposition d'une liste d'adresses en plusieurs colonnes.

Salut Sparga,
Voici le fichier commenté.
En fait, je teste chaque cellule.
Si c'est un numéro, alors cela implique le début d'une nouvelle adresse, je commence alors à ligne+1 et à colonne 2
alors,
Si la cellule est vide, alors on passe à la suivante sinon,
on copie les données de la cellule et on la colle en fonction des variable de ligne et de colonne.
ainsi de suite jusqu'à la fin ....
Cordialement
Lolote83
 

Pièces jointes

  • Copie de Données de base.xls
    39 KB · Affichages: 41
  • Copie de Données de base.xls
    39 KB · Affichages: 40
  • Copie de Données de base.xls
    39 KB · Affichages: 45

Discussions similaires

Réponses
2
Affichages
152