Convertir adresse complète dans une cellule en plusieurs colonnes!
5 réponses
IssamIdj
Bonjour à tous,
Je m'arrache les cheveux pour essayer d'automatiser sur 800 adresses complètes chacune compilée dans une cellule et savoir arriver à isoler les différents éléments dans plusieurs colonnes, je m'explique, j'ai des cellules comme suit:
"7 rue du 29 juillet 75001 PARIS"
"74 rue Costes et Bellonte 57152 MARLY CEDEX"
"92 Boulevard sebastopol 75003 PARIS"
"Avenue de la motte 59811 LESQUIN CEDEX"
Et il me faudrait plusieurs colonnes avec:
1ère colonne: Adresse: Ex: 7 rue du 29 juillet
2ème colonne: Code postal: 75001
3ème colonne: Ville
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour, J'ai supposé que tes données étaient en Colonne A et débutaient à la ligne 1 et que le nom de l'onglet de la feuille de calcul était "Feuil1" Tu ouvres l'éditeur de code : Raccourci clavier : ALT + F11 et dans l'un des modules du projetVBA, tu copies cette macro. Attention, tu dois adapter le nom de l'onglet de la feuille si différent de "Feuil1", La lettre A pour la colonne où sont tes données et le 1 dans A1 pour le numéro de la ligne où débutent les données dans cette ligne de code. Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row) '------------------------------------------- Sub test() Dim Rg As Range, C As Range Dim X As String, V As String, T As String With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row) End With For Each C In Rg If C <> "" Then T = C.Value Do While Not IsNumeric(X) X = Split(T, " ")(UBound(Split(T, " "))) If IsNumeric(X) Then Exit Do V = X & " " & V T = Replace(T, " " & X, "") Loop C.Offset(, 3) = Left(V, Len(V) - 1) C.Offset(, 2) = X C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "") T = "": X = "": V = "" End If Next End Sub '------------------------------------------- MichD
Bonjour,
J'ai supposé que tes données étaient en Colonne A et débutaient à la
ligne 1 et que le nom de l'onglet de la feuille de calcul était "Feuil1"
Tu ouvres l'éditeur de code : Raccourci clavier : ALT + F11 et dans l'un
des modules du projetVBA, tu copies cette macro.
Attention, tu dois adapter le nom de l'onglet de la feuille si
différent de "Feuil1", La lettre A pour la colonne où sont tes données
et le 1 dans A1 pour le numéro de la ligne où débutent les données dans
cette ligne de code. Set Rg = .Range("A1:A" & .Range("A" &
.Rows.Count).End(xlUp).Row)
'-------------------------------------------
Sub test()
Dim Rg As Range, C As Range
Dim X As String, V As String, T As String
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
For Each C In Rg
If C <> "" Then
T = C.Value
Do While Not IsNumeric(X)
X = Split(T, " ")(UBound(Split(T, " ")))
If IsNumeric(X) Then Exit Do
V = X & " " & V
T = Replace(T, " " & X, "")
Loop
C.Offset(, 3) = Left(V, Len(V) - 1)
C.Offset(, 2) = X
C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "")
T = "": X = "": V = ""
End If
Next
End Sub
'-------------------------------------------
Bonjour, J'ai supposé que tes données étaient en Colonne A et débutaient à la ligne 1 et que le nom de l'onglet de la feuille de calcul était "Feuil1" Tu ouvres l'éditeur de code : Raccourci clavier : ALT + F11 et dans l'un des modules du projetVBA, tu copies cette macro. Attention, tu dois adapter le nom de l'onglet de la feuille si différent de "Feuil1", La lettre A pour la colonne où sont tes données et le 1 dans A1 pour le numéro de la ligne où débutent les données dans cette ligne de code. Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row) '------------------------------------------- Sub test() Dim Rg As Range, C As Range Dim X As String, V As String, T As String With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row) End With For Each C In Rg If C <> "" Then T = C.Value Do While Not IsNumeric(X) X = Split(T, " ")(UBound(Split(T, " "))) If IsNumeric(X) Then Exit Do V = X & " " & V T = Replace(T, " " & X, "") Loop C.Offset(, 3) = Left(V, Len(V) - 1) C.Offset(, 2) = X C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "") T = "": X = "": V = "" End If Next End Sub '------------------------------------------- MichD
MichD
En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes d'où sont tes données. Attention, si ces colonnes ont déjà des données à conserver! MichD
En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes
d'où sont tes données. Attention, si ces colonnes ont déjà des données à
conserver!
En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes d'où sont tes données. Attention, si ces colonnes ont déjà des données à conserver! MichD
Jacquouille
Bonjour Denis Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je suppose être le code postal. 92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 / 75003 / PARIS Déjà merci Jacques, testeur " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qnnd3d$14qm$ En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes d'où sont tes données. Attention, si ces colonnes ont déjà des données à conserver! MichD
Bonjour Denis
Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je
suppose être le code postal.
92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 /
75003 / PARIS
Déjà merci
Jacques, testeur
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qnnd3d$14qm$2@gioia.aioe.org...
En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes
d'où sont tes données. Attention, si ces colonnes ont déjà des données à
conserver!
Bonjour Denis Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je suppose être le code postal. 92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 / 75003 / PARIS Déjà merci Jacques, testeur " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qnnd3d$14qm$ En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes d'où sont tes données. Attention, si ces colonnes ont déjà des données à conserver! MichD
MichD
Le 10/10/19 à 12:13, Jacquouille a écrit :
Bonjour Denis Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je suppose être le code postal. 92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 / 75003 / PARIS Déjà merci Jacques, testeur " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qnnd3d$14qm$ En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes d'où sont tes données. Attention, si ces colonnes ont déjà des données à conserver! MichD
Bonjour Jacquouille, Oui, je sais...il manque une ligne de code...Lorsque je donne un code parfait, les gens ne reviennent pas, ils ont ce qu'ils voulaient. Pourquoi perdre du temps à remercier? Ceci étant dit, ça fait longtemps que je me suis fait à cette démarche. Ma réponse, pourquoi ne pas y glisser un bogue de temps à autre? ;-)) La macro complète devrait être celle-ci : '-------------------------------------- Sub test() Dim Rg As Range, C As Range Dim X As String, V As String, T As String With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row) End With For Each C In Rg If C <> "" Then T = C.Value Do While Not IsNumeric(X) X = Split(T, " ")(UBound(Split(T, " "))) If IsNumeric(X) Then Exit Do V = X & " " & V T = Replace(T, " " & X, "") Loop C.Offset(, 3) = Left(V, Len(V) - 1) C.Offset(, 2) = X T = Replace(T, " " & X, "") 'C'était la ligne manquante! C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "") T = "": X = "": V = "" End If Next End Sub '-------------------------------------- MichD
Le 10/10/19 à 12:13, Jacquouille a écrit :
Bonjour Denis
Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je
suppose être le code postal.
92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 /
75003 / PARIS
Déjà merci
Jacques, testeur
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qnnd3d$14qm$2@gioia.aioe.org...
En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes
d'où sont tes données. Attention, si ces colonnes ont déjà des données à
conserver!
MichD
Bonjour Jacquouille,
Oui, je sais...il manque une ligne de code...Lorsque je donne un code
parfait, les gens ne reviennent pas, ils ont ce qu'ils voulaient.
Pourquoi perdre du temps à remercier? Ceci étant dit, ça fait longtemps
que je me suis fait à cette démarche. Ma réponse, pourquoi ne pas y
glisser un bogue de temps à autre? ;-))
La macro complète devrait être celle-ci :
'--------------------------------------
Sub test()
Dim Rg As Range, C As Range
Dim X As String, V As String, T As String
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
For Each C In Rg
If C <> "" Then
T = C.Value
Do While Not IsNumeric(X)
X = Split(T, " ")(UBound(Split(T, " ")))
If IsNumeric(X) Then Exit Do
V = X & " " & V
T = Replace(T, " " & X, "")
Loop
C.Offset(, 3) = Left(V, Len(V) - 1)
C.Offset(, 2) = X
T = Replace(T, " " & X, "") 'C'était la ligne manquante!
C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "")
T = "": X = "": V = ""
End If
Next
End Sub
'--------------------------------------
Bonjour Denis Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je suppose être le code postal. 92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 / 75003 / PARIS Déjà merci Jacques, testeur " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qnnd3d$14qm$ En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes d'où sont tes données. Attention, si ces colonnes ont déjà des données à conserver! MichD
Bonjour Jacquouille, Oui, je sais...il manque une ligne de code...Lorsque je donne un code parfait, les gens ne reviennent pas, ils ont ce qu'ils voulaient. Pourquoi perdre du temps à remercier? Ceci étant dit, ça fait longtemps que je me suis fait à cette démarche. Ma réponse, pourquoi ne pas y glisser un bogue de temps à autre? ;-)) La macro complète devrait être celle-ci : '-------------------------------------- Sub test() Dim Rg As Range, C As Range Dim X As String, V As String, T As String With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row) End With For Each C In Rg If C <> "" Then T = C.Value Do While Not IsNumeric(X) X = Split(T, " ")(UBound(Split(T, " "))) If IsNumeric(X) Then Exit Do V = X & " " & V T = Replace(T, " " & X, "") Loop C.Offset(, 3) = Left(V, Len(V) - 1) C.Offset(, 2) = X T = Replace(T, " " & X, "") 'C'était la ligne manquante! C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "") T = "": X = "": V = "" End If Next End Sub '-------------------------------------- MichD
Jacquouille
Bonjour Denis, Il est vrai qu'au niveau du suivi et des mercis, c'est assez rare ces temps-ci. On ne sait même pas si le demandeur a lu la ou les réponses. Autre temps, autres moeurs. Merci d'avoir ré-écrit ta partition, rien que pour mon test. La nouvelle ligne a bien sa place, bien au chaud. - PS HS: J'ai vu une émission télé avec 2 de tes compatriotes: Messmer et R. Charlebois. j'adore leur accent. Bonne journée, voire bon WE. Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qno13l$4re$ Le 10/10/19 à 12:13, Jacquouille a écrit :
Bonjour Denis Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je suppose être le code postal. 92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 / 75003 / PARIS Déjà merci Jacques, testeur " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qnnd3d$14qm$ En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes d'où sont tes données. Attention, si ces colonnes ont déjà des données à conserver! MichD
Bonjour Jacquouille, Oui, je sais...il manque une ligne de code...Lorsque je donne un code parfait, les gens ne reviennent pas, ils ont ce qu'ils voulaient. Pourquoi perdre du temps à remercier? Ceci étant dit, ça fait longtemps que je me suis fait à cette démarche. Ma réponse, pourquoi ne pas y glisser un bogue de temps à autre? ;-)) La macro complète devrait être celle-ci : '-------------------------------------- Sub test() Dim Rg As Range, C As Range Dim X As String, V As String, T As String With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row) End With For Each C In Rg If C <> "" Then T = C.Value Do While Not IsNumeric(X) X = Split(T, " ")(UBound(Split(T, " "))) If IsNumeric(X) Then Exit Do V = X & " " & V T = Replace(T, " " & X, "") Loop C.Offset(, 3) = Left(V, Len(V) - 1) C.Offset(, 2) = X T = Replace(T, " " & X, "") 'C'était la ligne manquante! C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "") T = "": X = "": V = "" End If Next End Sub '-------------------------------------- MichD
Bonjour Denis,
Il est vrai qu'au niveau du suivi et des mercis, c'est assez rare ces
temps-ci. On ne sait même pas si le demandeur a lu la ou les réponses.
Autre temps, autres moeurs.
Merci d'avoir ré-écrit ta partition, rien que pour mon test.
La nouvelle ligne a bien sa place, bien au chaud.
- PS HS: J'ai vu une émission télé avec 2 de tes compatriotes: Messmer et R.
Charlebois. j'adore leur accent.
Bonne journée, voire bon WE.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qno13l$4re$1@gioia.aioe.org...
Le 10/10/19 à 12:13, Jacquouille a écrit :
Bonjour Denis
Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je
suppose être le code postal.
92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 /
75003 / PARIS
Déjà merci
Jacques, testeur
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qnnd3d$14qm$2@gioia.aioe.org...
En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes
d'où sont tes données. Attention, si ces colonnes ont déjà des données à
conserver!
MichD
Bonjour Jacquouille,
Oui, je sais...il manque une ligne de code...Lorsque je donne un code
parfait, les gens ne reviennent pas, ils ont ce qu'ils voulaient.
Pourquoi perdre du temps à remercier? Ceci étant dit, ça fait longtemps
que je me suis fait à cette démarche. Ma réponse, pourquoi ne pas y
glisser un bogue de temps à autre? ;-))
La macro complète devrait être celle-ci :
'--------------------------------------
Sub test()
Dim Rg As Range, C As Range
Dim X As String, V As String, T As String
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
For Each C In Rg
If C <> "" Then
T = C.Value
Do While Not IsNumeric(X)
X = Split(T, " ")(UBound(Split(T, " ")))
If IsNumeric(X) Then Exit Do
V = X & " " & V
T = Replace(T, " " & X, "")
Loop
C.Offset(, 3) = Left(V, Len(V) - 1)
C.Offset(, 2) = X
T = Replace(T, " " & X, "") 'C'était la ligne manquante!
C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "")
T = "": X = "": V = ""
End If
Next
End Sub
'--------------------------------------
Bonjour Denis, Il est vrai qu'au niveau du suivi et des mercis, c'est assez rare ces temps-ci. On ne sait même pas si le demandeur a lu la ou les réponses. Autre temps, autres moeurs. Merci d'avoir ré-écrit ta partition, rien que pour mon test. La nouvelle ligne a bien sa place, bien au chaud. - PS HS: J'ai vu une émission télé avec 2 de tes compatriotes: Messmer et R. Charlebois. j'adore leur accent. Bonne journée, voire bon WE. Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qno13l$4re$ Le 10/10/19 à 12:13, Jacquouille a écrit :
Bonjour Denis Tu as testé ce filet de macro? Chez moi, il y a une redite de ce que je suppose être le code postal. 92 Boulevard sebastopol 75003 PARIS / 92 Boulevard sebastopol 75003 / 75003 / PARIS Déjà merci Jacques, testeur " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : qnnd3d$14qm$ En passant, la macro inscrit le résultat dans les 3 colonnes adjacentes d'où sont tes données. Attention, si ces colonnes ont déjà des données à conserver! MichD
Bonjour Jacquouille, Oui, je sais...il manque une ligne de code...Lorsque je donne un code parfait, les gens ne reviennent pas, ils ont ce qu'ils voulaient. Pourquoi perdre du temps à remercier? Ceci étant dit, ça fait longtemps que je me suis fait à cette démarche. Ma réponse, pourquoi ne pas y glisser un bogue de temps à autre? ;-)) La macro complète devrait être celle-ci : '-------------------------------------- Sub test() Dim Rg As Range, C As Range Dim X As String, V As String, T As String With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row) End With For Each C In Rg If C <> "" Then T = C.Value Do While Not IsNumeric(X) X = Split(T, " ")(UBound(Split(T, " "))) If IsNumeric(X) Then Exit Do V = X & " " & V T = Replace(T, " " & X, "") Loop C.Offset(, 3) = Left(V, Len(V) - 1) C.Offset(, 2) = X T = Replace(T, " " & X, "") 'C'était la ligne manquante! C.Offset(, 1) = Replace(T, " " & V & " " & X & " ", "") T = "": X = "": V = "" End If Next End Sub '-------------------------------------- MichD