Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

adresses

6 réponses
Avatar
claude
bonjour à tous
j'essaye de mettre de l'ordre dans un fichier type carnet d'adresses
l'auteur a trouvé bon - n'y connaissant pas grand chose- de mettre l'adresse
complète dans une seule cellule ...
du genre
38 rue de la paix 12350 machin les roses

j'aimerai faire une macro pour mettre proprement les adresse dans 3 cellules
adresse, CP, ville
mais je vois pas trop l'angle d'attaque du problème
j'ai pensé à :
* tout ce qui est à gauche du groupe de 5 chiffres = adresse
* le groupe de 5 chiffres= CP
* tout ce qui est à droite du groupe de 5 chiffres = ville
mais comment écrire çà en VBA ??? (ou en formule dans la feuille)

j'aurai bien besoin d'un coup de main
:))
merci d'avance
claude

6 réponses

Avatar
isabelle
bonjour Claude,

Function LesAdresse(cellule As Range, choix As Integer) As String
For i = 1 To Len(cellule)
y = Mid(cellule, i, 1)
If IsNumeric(Mid(cellule, i, 1)) Then x = x + 1 Else x = 0
If x = 5 Then Exit For
Next
Select Case choix
Case 1: LesAdresse = Left(cellule, i - 5)
Case 2: LesAdresse = Mid(cellule, i - 4, 6)
Case 3: LesAdresse = Right(cellule, Len(cellule) - i - 1)
End Select
End Function

=LesAdresse($A$1;1)
=LesAdresse($A$1;2)
=LesAdresse($A$1;3)

le deuxième argument de la fonction est 1, 2 ou 3
pour :

1 = adresse
2 = CP
3 = ville

isabelle



claude a écrit :
bonjour à tous
j'essaye de mettre de l'ordre dans un fichier type carnet d'adresses
l'auteur a trouvé bon - n'y connaissant pas grand chose- de mettre l'adresse
complète dans une seule cellule ...
du genre
38 rue de la paix 12350 machin les roses

j'aimerai faire une macro pour mettre proprement les adresse dans 3 cellules
adresse, CP, ville
mais je vois pas trop l'angle d'attaque du problème
j'ai pensé à :
* tout ce qui est à gauche du groupe de 5 chiffres = adresse
* le groupe de 5 chiffres= CP
* tout ce qui est à droite du groupe de 5 chiffres = ville
mais comment écrire çà en VBA ??? (ou en formule dans la feuille)

j'aurai bien besoin d'un coup de main
:))
merci d'avance
claude





Avatar
garnote
Salut Claude,

En supposant que :
1) ton texte soit en A1
2) CP contienne 5 chiffres
3) qu'il y a un au moins un espace avant et après ton CP
cette macro devrait (?) convenir :

Sub Adresse_Dans_Trois_Colonnes()
ad = Range("A1").Value
ad = Trim(ad)
For i = Len(ad) To 1 Step -1
v = Mid(ad, i, 1)
If IsNumeric(v) Then
ici = InStr(i, ad, v)
Exit For
End If
Next i
cp = Mid(ad, ici - 4, 5)
Range("B1") = Left(ad, ici - 6)
Range("C1") = cp
Range("D1") = Right(ad, Len(ad) - ici - 1)
End Sub

Serge


"claude" a écrit dans le message de news:
4a1072bc$0$16983$
bonjour à tous
j'essaye de mettre de l'ordre dans un fichier type carnet d'adresses
l'auteur a trouvé bon - n'y connaissant pas grand chose- de mettre
l'adresse complète dans une seule cellule ...
du genre
38 rue de la paix 12350 machin les roses

j'aimerai faire une macro pour mettre proprement les adresse dans 3
cellules
adresse, CP, ville
mais je vois pas trop l'angle d'attaque du problème
j'ai pensé à :
* tout ce qui est à gauche du groupe de 5 chiffres = adresse
* le groupe de 5 chiffres= CP
* tout ce qui est à droite du groupe de 5 chiffres = ville
mais comment écrire çà en VBA ??? (ou en formule dans la feuille)

j'aurai bien besoin d'un coup de main
:))
merci d'avance
claude




Avatar
garnote
ReBonsoir,

Avec ceci, Restrictions :
1) Un CP de 5 chiffres sans espaces entre les chiffres.
2) L'adrese ne se termine pas par un chiffre
3) Le nom de la ville ne commence pas par un chiffre.

Sub Adresse_Dans_Trois_Colonnes()
ad = Range("A1").Value
ad = Trim(ad)
For i = Len(ad) To 1 Step -1
v = Mid(ad, i, 1)
If IsNumeric(v) Then
ici = InStr(i, ad, v)
Exit For
End If
Next i
cp = Mid(ad, ici - 4, 5)
Range("B1") = Trim(Left(ad, ici - 5))
Range("C1") = cp
Range("D1") = Trim(Right(ad, Len(ad) - ici))
End Sub

Serge


"garnote" a écrit dans le message de news:

Salut Claude,

En supposant que :
1) ton texte soit en A1
2) CP contienne 5 chiffres
3) qu'il y a un au moins un espace avant et après ton CP
cette macro devrait (?) convenir :

Sub Adresse_Dans_Trois_Colonnes()
ad = Range("A1").Value
ad = Trim(ad)
For i = Len(ad) To 1 Step -1
v = Mid(ad, i, 1)
If IsNumeric(v) Then
ici = InStr(i, ad, v)
Exit For
End If
Next i
cp = Mid(ad, ici - 4, 5)
Range("B1") = Left(ad, ici - 6)
Range("C1") = cp
Range("D1") = Right(ad, Len(ad) - ici - 1)
End Sub

Serge


"claude" a écrit dans le message de news:
4a1072bc$0$16983$
bonjour à tous
j'essaye de mettre de l'ordre dans un fichier type carnet d'adresses
l'auteur a trouvé bon - n'y connaissant pas grand chose- de mettre
l'adresse complète dans une seule cellule ...
du genre
38 rue de la paix 12350 machin les roses

j'aimerai faire une macro pour mettre proprement les adresse dans 3
cellules
adresse, CP, ville
mais je vois pas trop l'angle d'attaque du problème
j'ai pensé à :
* tout ce qui est à gauche du groupe de 5 chiffres = adresse
* le groupe de 5 chiffres= CP
* tout ce qui est à droite du groupe de 5 chiffres = ville
mais comment écrire çà en VBA ??? (ou en formule dans la feuille)

j'aurai bien besoin d'un coup de main
:))
merci d'avance
claude








Avatar
garnote
Autre restriction :
Le nom de la ville ne doit pas contenir de chiffres.

Un bon souper m'attend et je n'ai plus le temps de
concocter une macro plus compétente !

Serge


"garnote" a écrit dans le message de news:

ReBonsoir,

Avec ceci, Restrictions :
1) Un CP de 5 chiffres sans espaces entre les chiffres.
2) L'adrese ne se termine pas par un chiffre
3) Le nom de la ville ne commence pas par un chiffre.

Sub Adresse_Dans_Trois_Colonnes()
ad = Range("A1").Value
ad = Trim(ad)
For i = Len(ad) To 1 Step -1
v = Mid(ad, i, 1)
If IsNumeric(v) Then
ici = InStr(i, ad, v)
Exit For
End If
Next i
cp = Mid(ad, ici - 4, 5)
Range("B1") = Trim(Left(ad, ici - 5))
Range("C1") = cp
Range("D1") = Trim(Right(ad, Len(ad) - ici))
End Sub

Serge


"garnote" a écrit dans le message de news:

Salut Claude,

En supposant que :
1) ton texte soit en A1
2) CP contienne 5 chiffres
3) qu'il y a un au moins un espace avant et après ton CP
cette macro devrait (?) convenir :

Sub Adresse_Dans_Trois_Colonnes()
ad = Range("A1").Value
ad = Trim(ad)
For i = Len(ad) To 1 Step -1
v = Mid(ad, i, 1)
If IsNumeric(v) Then
ici = InStr(i, ad, v)
Exit For
End If
Next i
cp = Mid(ad, ici - 4, 5)
Range("B1") = Left(ad, ici - 6)
Range("C1") = cp
Range("D1") = Right(ad, Len(ad) - ici - 1)
End Sub

Serge


"claude" a écrit dans le message de news:
4a1072bc$0$16983$
bonjour à tous
j'essaye de mettre de l'ordre dans un fichier type carnet d'adresses
l'auteur a trouvé bon - n'y connaissant pas grand chose- de mettre
l'adresse complète dans une seule cellule ...
du genre
38 rue de la paix 12350 machin les roses

j'aimerai faire une macro pour mettre proprement les adresse dans 3
cellules
adresse, CP, ville
mais je vois pas trop l'angle d'attaque du problème
j'ai pensé à :
* tout ce qui est à gauche du groupe de 5 chiffres = adresse
* le groupe de 5 chiffres= CP
* tout ce qui est à droite du groupe de 5 chiffres = ville
mais comment écrire çà en VBA ??? (ou en formule dans la feuille)

j'aurai bien besoin d'un coup de main
:))
merci d'avance
claude












Avatar
JB
Bonjour,


=GAUCHE(A1;NBCAR(A1)-EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;NBCAR(A1)-LIGNE
($1:$255);1)));0)-5)
valider avecmaj+ctrl+entrée

=STXT(A1;NBCAR(A1)-EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;NBCAR(A1)-LIGNE
($1:$255);1)));0)-4;5)
valider avecmaj+ctrl+entrée

=STXT(A1;NBCAR(A1)-EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;NBCAR(A1)-LIGNE
($1:$255);1)));0)+2;99)
valider avecmaj+ctrl+entrée

http://cjoint.com/?fsgrip1mwB

JB
http://boisgontierjacques.free.fr/



On 17 mai, 22:24, "claude" wrote:
bonjour à tous
j'essaye de mettre de l'ordre dans un fichier type carnet d'adresses
l'auteur a trouvé bon - n'y connaissant pas grand chose- de mettre l'ad resse
complète dans une seule cellule ...
du genre
38 rue de la paix 12350 machin les roses

j'aimerai faire une macro pour mettre proprement les adresse dans 3 cellu les
adresse, CP, ville
mais je vois pas trop l'angle d'attaque du problème
j'ai pensé à :
* tout ce qui est à gauche du groupe de 5 chiffres = adresse
* le groupe de 5 chiffres= CP
* tout ce qui est à droite du groupe de 5 chiffres =  ville
mais comment écrire çà en VBA ??? (ou en formule dans la feuille)

j'aurai bien besoin d'un coup de main
:))
merci d'avance
claude


Avatar
JB
VBA:

Function CodePostal(chaine)
p = 1
CodePostal = ""
Do While p <= Len(chaine) - 4 And CodePostal = ""
If Mid(chaine, p, 5) Like "#####" Then CodePostal = Mid(chaine, p,
5) Else p = p + 1
Loop
End Function

Function Rue(chaine)
p = 1
Do While p <= Len(chaine) - 4 And Rue = ""
If Mid(chaine, p, 5) Like "#####" Then Rue = Left(chaine, p - 2)
Else p = p + 1
Loop
End Function

Function Ville(chaine)
p = 1
Do While p <= Len(chaine) - 4 And Ville = ""
If Mid(chaine, p, 5) Like "#####" Then Ville = Mid(chaine, p + 6)
Else p = p + 1
Loop
End Function

JB
On 18 mai, 06:18, JB wrote:
Bonjour,

=GAUCHE(A1;NBCAR(A1)-EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;NBCAR(A1)-LIGNE
($1:$255);1)));0)-5)
valider avecmaj+ctrl+entrée

=STXT(A1;NBCAR(A1)-EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;NBCAR(A1)-LIGNE
($1:$255);1)));0)-4;5)
valider avecmaj+ctrl+entrée

=STXT(A1;NBCAR(A1)-EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;NBCAR(A1)-LIGNE
($1:$255);1)));0)+2;99)
valider avecmaj+ctrl+entrée

http://cjoint.com/?fsgrip1mwB

JBhttp://boisgontierjacques.free.fr/

On 17 mai, 22:24, "claude" wrote:



> bonjour à tous
> j'essaye de mettre de l'ordre dans un fichier type carnet d'adresses
> l'auteur a trouvé bon - n'y connaissant pas grand chose- de mettre l' adresse
> complète dans une seule cellule ...
> du genre
> 38 rue de la paix 12350 machin les roses

> j'aimerai faire une macro pour mettre proprement les adresse dans 3 cel lules
> adresse, CP, ville
> mais je vois pas trop l'angle d'attaque du problème
> j'ai pensé à :
> * tout ce qui est à gauche du groupe de 5 chiffres = adresse
> * le groupe de 5 chiffres= CP
> * tout ce qui est à droite du groupe de 5 chiffres =  ville
> mais comment écrire çà en VBA ??? (ou en formule dans la feuille)

> j'aurai bien besoin d'un coup de main
> :))
> merci d'avance
> claude- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -