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
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