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

détecter par macro les cinq chiffres consécutifs du code postal dans une cellule

5 réponses
Avatar
Antoine
Bonjour à tous

J'ai une autre petit problème que je ne sais pas résoudre par macro, à
savoir :

Dans une feuille, j'ai une cellule unique qui contient une adresse qui
comporte le N° et le nom de la rue, et, soit " - " soit un chr(10) et le
code postal et la ville en minuscule.
- Est-il possible de détecter par macro les cinq chiffres consécutifs du
code postal pour pouvoir mettre tout ce qui suit (= la ville) en majuscule.
- D'autre part, est-il possible de détecter, lorsque devant le code postal
il n'y a pas de retour chariot mais un "espace/tiret/espace", de remplacer
ce triplet de caractères par un chr(10).

N.B. il peut y avoir un tiret à d'autres endroits de la cellule comme par
exemple : "25, rue lepic - Apt#55 - 75000 Paris sur Seine"

Merci à tous

Antoine

5 réponses

Avatar
JB
Bojour,

Sub essai()
chaine = [A1] ' adresse en A1
p = Len(chaine)
Do While Not IsNumeric(Mid(chaine, p, 1)) And p > 1
p = p - 1
Loop
Mid(chaine, p + 1) = UCase(Mid(chaine, p + 1)) 'majuscules
chaine = Left(chaine, p - 8) & Application.Substitute(Mid(chaine, p -
7), " - ", Chr(10))
[B1] = chaine
End Sub

JB


Bonjour à tous

J'ai une autre petit problème que je ne sais pas résoudre par macro, à
savoir :

Dans une feuille, j'ai une cellule unique qui contient une adresse qui
comporte le N° et le nom de la rue, et, soit " - " soit un chr(10) et le
code postal et la ville en minuscule.
- Est-il possible de détecter par macro les cinq chiffres consécutifs du
code postal pour pouvoir mettre tout ce qui suit (= la ville) en majusc ule.
- D'autre part, est-il possible de détecter, lorsque devant le code pos tal
il n'y a pas de retour chariot mais un "espace/tiret/espace", de remplacer
ce triplet de caractères par un chr(10).

N.B. il peut y avoir un tiret à d'autres endroits de la cellule comme p ar
exemple : "25, rue lepic - Apt#55 - 75000 Paris sur Seine"

Merci à tous

Antoine


Avatar
Antoine
Superbe !

Cela fonctionne exactement comme je pouvais l'attendre.
Quoique j'ai du mal à comprendre comment elle fonctionne pour la recherche
des cinq chiffres consécutifs !

Un grand merci

Antoine
"JB" a écrit dans le message de news:

Bojour,

Sub essai()
chaine = [A1] ' adresse en A1
p = Len(chaine)
Do While Not IsNumeric(Mid(chaine, p, 1)) And p > 1
p = p - 1
Loop
Mid(chaine, p + 1) = UCase(Mid(chaine, p + 1)) 'majuscules
chaine = Left(chaine, p - 8) & Application.Substitute(Mid(chaine, p -
7), " - ", Chr(10))
[B1] = chaine
End Sub

JB


Bonjour à tous

J'ai une autre petit problème que je ne sais pas résoudre par macro, à
savoir :

Dans une feuille, j'ai une cellule unique qui contient une adresse qui
comporte le N° et le nom de la rue, et, soit " - " soit un chr(10) et le
code postal et la ville en minuscule.
- Est-il possible de détecter par macro les cinq chiffres consécutifs du
code postal pour pouvoir mettre tout ce qui suit (= la ville) en
majuscule.
- D'autre part, est-il possible de détecter, lorsque devant le code postal
il n'y a pas de retour chariot mais un "espace/tiret/espace", de remplacer
ce triplet de caractères par un chr(10).

N.B. il peut y avoir un tiret à d'autres endroits de la cellule comme par
exemple : "25, rue lepic - Apt#55 - 75000 Paris sur Seine"

Merci à tous

Antoine


Avatar
JB
Dans le post précédent, pour repérer le CP, on recherche le premier
caractère numérique de la droite vers la gauche. Ici, on cherche 5
caractères numériques consécutifs.

chaine = [A1]
p = Len(chaine) - 5
Do While Not Mid(chaine, p, 5) Like "#####" And p > 1
p = p - 1
Loop
Mid(chaine, p + 6) = UCase(Mid(chaine, p + 6))
chaine = Left(chaine, p - 4) & Application.Substitute(Mid(chaine, p -
3), " - ", Chr(10))
MsgBox chaine
[B1] = chaine

JB

Superbe !

Cela fonctionne exactement comme je pouvais l'attendre.
Quoique j'ai du mal à comprendre comment elle fonctionne pour la recher che
des cinq chiffres consécutifs !

Un grand merci

Antoine
"JB" a écrit dans le message de news:

Bojour,

Sub essai()
chaine = [A1] ' adresse en A1
p = Len(chaine)
Do While Not IsNumeric(Mid(chaine, p, 1)) And p > 1
p = p - 1
Loop
Mid(chaine, p + 1) = UCase(Mid(chaine, p + 1)) 'majuscules
chaine = Left(chaine, p - 8) & Application.Substitute(Mid(chaine, p -
7), " - ", Chr(10))
[B1] = chaine
End Sub

JB


Bonjour à tous

J'ai une autre petit problème que je ne sais pas résoudre par macro , à
savoir :

Dans une feuille, j'ai une cellule unique qui contient une adresse qui
comporte le N° et le nom de la rue, et, soit " - " soit un chr(10) et le
code postal et la ville en minuscule.
- Est-il possible de détecter par macro les cinq chiffres consécuti fs du
code postal pour pouvoir mettre tout ce qui suit (= la ville) en
majuscule.
- D'autre part, est-il possible de détecter, lorsque devant le code p ostal
il n'y a pas de retour chariot mais un "espace/tiret/espace", de rempla cer
ce triplet de caractères par un chr(10).

N.B. il peut y avoir un tiret à d'autres endroits de la cellule comme par
exemple : "25, rue lepic - Apt#55 - 75000 Paris sur Seine"

Merci à tous

Antoine




Avatar
JB
Pour éliminer les éventuels double-espaces, remplacer:

chaine=[A1] par
chaine = Application.Trim([A1])

JB


Superbe !

Cela fonctionne exactement comme je pouvais l'attendre.
Quoique j'ai du mal à comprendre comment elle fonctionne pour la recher che
des cinq chiffres consécutifs !

Un grand merci

Antoine
"JB" a écrit dans le message de news:

Bojour,

Sub essai()
chaine = [A1] ' adresse en A1
p = Len(chaine)
Do While Not IsNumeric(Mid(chaine, p, 1)) And p > 1
p = p - 1
Loop
Mid(chaine, p + 1) = UCase(Mid(chaine, p + 1)) 'majuscules
chaine = Left(chaine, p - 8) & Application.Substitute(Mid(chaine, p -
7), " - ", Chr(10))
[B1] = chaine
End Sub

JB


Bonjour à tous

J'ai une autre petit problème que je ne sais pas résoudre par macro , à
savoir :

Dans une feuille, j'ai une cellule unique qui contient une adresse qui
comporte le N° et le nom de la rue, et, soit " - " soit un chr(10) et le
code postal et la ville en minuscule.
- Est-il possible de détecter par macro les cinq chiffres consécuti fs du
code postal pour pouvoir mettre tout ce qui suit (= la ville) en
majuscule.
- D'autre part, est-il possible de détecter, lorsque devant le code p ostal
il n'y a pas de retour chariot mais un "espace/tiret/espace", de rempla cer
ce triplet de caractères par un chr(10).

N.B. il peut y avoir un tiret à d'autres endroits de la cellule comme par
exemple : "25, rue lepic - Apt#55 - 75000 Paris sur Seine"

Merci à tous

Antoine




Avatar
Antoine
Merci pour les explications

Quand on sait, cela parfait telement plus simple !

Merci encore

Antoine

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

Pour éliminer les éventuels double-espaces, remplacer:

chaine=[A1] par
chaine = Application.Trim([A1])

JB


Superbe !

Cela fonctionne exactement comme je pouvais l'attendre.
Quoique j'ai du mal à comprendre comment elle fonctionne pour la recherche
des cinq chiffres consécutifs !

Un grand merci

Antoine
"JB" a écrit dans le message de news:

Bojour,

Sub essai()
chaine = [A1] ' adresse en A1
p = Len(chaine)
Do While Not IsNumeric(Mid(chaine, p, 1)) And p > 1
p = p - 1
Loop
Mid(chaine, p + 1) = UCase(Mid(chaine, p + 1)) 'majuscules
chaine = Left(chaine, p - 8) & Application.Substitute(Mid(chaine, p -
7), " - ", Chr(10))
[B1] = chaine
End Sub

JB


Bonjour à tous

J'ai une autre petit problème que je ne sais pas résoudre par macro, à
savoir :

Dans une feuille, j'ai une cellule unique qui contient une adresse qui
comporte le N° et le nom de la rue, et, soit " - " soit un chr(10) et le
code postal et la ville en minuscule.
- Est-il possible de détecter par macro les cinq chiffres consécutifs du
code postal pour pouvoir mettre tout ce qui suit (= la ville) en
majuscule.
- D'autre part, est-il possible de détecter, lorsque devant le code
postal
il n'y a pas de retour chariot mais un "espace/tiret/espace", de
remplacer
ce triplet de caractères par un chr(10).

N.B. il peut y avoir un tiret à d'autres endroits de la cellule comme
par
exemple : "25, rue lepic - Apt#55 - 75000 Paris sur Seine"

Merci à tous

Antoine