Bonjour à tous,
Je maitrise un peu les formules grace aux tutos.
J'ai trouvé des exemple de comptage à partir premier ou du dernier espace mais pas après x espaces.
Mais sur ci-dessous je bloque.
Comment extraire les adresses (numéro et rue) de différents types de cellules comme : 43 RUE NATIONALE 17250 ST PORCHAIRE
CABINET SERMENT 188 RUE PELLISSIER 74700 SALLANCHES 9 RUE PAUL VAILLANT COUTURIER 18400 ST FLORENT SUR CHER 22 RUE DU CHAMP DE MARS 62300 LENS
CABINET DENTAIRE 16 ALLEE DE LA CLAIRIERE 77820 LE CHATELET EN BRIE
Cordialement
Bonjour,
Tout d'abord merci de prendre le temps de m'aider.
J'ai copié ton code dans le vba de mon fichier mais lorsque que je saisi =Ville(C2) dans la cellule D2 j'obtiens #NOM?
Bonjour
c'est un exercice qui a déjà été tenté
il te sera impossible de traiter toutes les forme de chaîne
une adresse peut commencer par un numéro ou pas
ça peut être une rue, un chemin ,un boulevard,une impasse , ou même par le nom d'une résidence
quand aux codes postals il peuvent être à la fin comme avant la ville
et j'en passe et des meilleures
et pour couronner le tout tu es sous MAC ce qui fai que pour gerer un regex c'est possible mais une torture
cela dit si tu y tiens voici 5 fonctions perso utilisable en vba et formule
le complément d'adresse si il y a doit être en premier ensuite le numéro ensuite l'adresse ensuite le cdepostal ensuite la ville
a mettre dans un module
VB:
Function code_Postal(v As String)
Dim T: T = Split(v, " ")
For I = UBound(T) To 0 Step -1
If IsNumeric(T(I)) And Len(T(I)) >= 5 Then code_Postal = Val(T(I))
Next
End Function
Function ville(v As String)
Dim T, I&: T = Split(v, " ")
For I = UBound(T) To 0 Step -1
If IsNumeric(T(I)) And Len(T(I)) >= 5 Then ville = Split(v, T(I))(1): Exit For
Next
End Function
Function adresseX(v As String)
Dim Add$, T, I&: T = Split(v, " ")
For I = 0 To UBound(T)
If IsNumeric(T(I)) And Len(T(I)) < 5 Then Add = Split(v, T(I))(1)
If IsNumeric(T(I)) And Len(T(I)) >= 5 Then Add = Split(Add, T(I))(0)
Next
adresseX = Add
End Function
Function Numero(v As String)
Dim num$, T, I&: T = Split(v, " ")
For I = 0 To UBound(T)
If IsNumeric(T(I)) And Len(T(I)) < 5 Then num = T(I): Exit For
Next
Numero = num
End Function
Function complementADresse(v As String)
Dim cmpad, T, I&: T = Split(v, " ")
For I = 0 To UBound(T)
If IsNumeric(T(I)) Then cmpad = Split(v, T(I))(0): Exit For
Next
complementADresse = cmpad
End Function
exemple pour le numero en formule dans une cellule à étendre à souhait
=numero(A2)
et pareil pour les autre fonctions
Bonjour,
Tout d'abord merci de prendre le temps de m'aider.
J'ai copié ton code dans le vba de mon fichier mais lorsque que je saisi =Ville(C2) dans la cellule D2 j'obtiens #NOM?
Bonjour,
Tout d'abord merci de prendre le temps de m'aider.
J'ai copié ton code dans le vba de mon fichier mais lorsque que je saisi =Ville(C2) dans la cellule D2 j'obtiens #NOM?
Patrick super tes fonctions et hop dans la besace
Patrick ta fonction numéro de rue pourrait être pris en défaut dans le cas des numéros de rue au mètre et les numéro supérieur à 10 000, le cas doit être rare je te l'accorde vers chez moi le plus gros numéro que je connaisse c'est autour de 5 ou 6 000.
VB:
Function Numero(v As String)
Dim num$, T, I&: T = Split(v, " ")
For I = 0 To UBound(T)
If IsNumeric(T(I)) And Len(T(I)) < 5 Then num = T(I): Exit For
Next
Numero = num
End Function
bonjour Phil69970
elle sont pas si exeptionnelles que ça ,j'ai fait beaucoup mieux sur ce sujet
il faudrait que je retrouve les discussion sur dvp et exceldownloads
mais ça ne sera jamais du 100%