Extraire, rechercher numéros adresse

  • Initiateur de la discussion Initiateur de la discussion Gagliardi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Gagliardi

XLDnaute Nouveau
Bonjour
J'ai besoin d'extraire les noms, les prénoms, les n° (chiffres et lettres (avec bis, ter,...)) d'un fichier adresse pour faire un planning de rdv sous excel.
J'ai essayé plusieurs solutions mais je ne parviens pas à extraire le numéro avec bis ou ter dans la même colonne ci-joint un fichier exemple

merci d'avance🙂
 

Pièces jointes

Re : Extraire, rechercher numéros adresse

Bonjour le Forum,
Bonjour Gagliardi,

Un essai en pièce jointe j'ai mis une formule dans le numéro de voie et une nouvelle formule pour la voie

Jocelyn

Edit : oup's bonjour Claude38, Wamme, désolé pour la collision
 

Pièces jointes

Dernière édition:
Re : Extraire, rechercher numéros adresse

Hello,

tu peux toujours faire de multiples test conditionnels, mais selon moi le meilleur moyen est d'utiliser les expressions régulières .. ça fait un peu peur au début mais on s'y habitue ...

je t'ai développé une petite fonction qui nécessite l'ajout de la référence à MS VBscript regular expression 5.5

Code:
Function GetAddressElement(ByVal strAddr As String, _
                           ByVal strPartie As String) As String
                           
Dim reg As VBScript_RegExp_55.RegExp

' on crée l'objet expression régulière
Set reg = New VBScript_RegExp_55.RegExp

reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = False

Select Case strPartie
    Case "numéro"
        ' motif qui définit la recherche de numéro suivi de bis ou ter
        reg.Pattern = "^(\d+( bis| ter)?)"
        If reg.Test(strAddr) Then
            GetAddressElement = reg.Execute(strAddr)(0).SubMatches(0)
        Else
            GetAddressElement = ""
        End If
    
    Case "voie"
        ' motif qui définit la recherche de nom de voie
        reg.Pattern = "(rue|impasse|avenue|boulevard|bvd|allée|allee|chemin|grande rue)"
        If reg.Test(strAddr) Then
            GetAddressElement = reg.Execute(strAddr)(0).SubMatches(0)
        Else
            GetAddressElement = ""
        End If
    
    Case "nom voie"
        reg.Pattern = "(rue|impasse|avenue|boulevard|bvd|allée|allee|chemin|grande rue)(.*)"
        If reg.Test(strAddr) Then
            GetAddressElement = reg.Execute(strAddr)(0).SubMatches(1)
        Else
            GetAddressElement = ""
        End If
    
    
End Select
                           
Set reg = Nothing

End Function

Pour plus d'info sur les RegExp :
Tutoriel Access © cafeine - Les Expressions Rationnelles appliquées en VBA Access - Club d'entraide des développeurs francophones
 

Pièces jointes

Re : Extraire, rechercher numéros adresse

Bonjour le Forum,
Bonjour Gagliardi,

Un essai en pièce jointe j'ai mis une formule dans le numéro de voie et une nouvelle formule pour la voie

Jocelyn

Edit : oup's bonjour Claude38, Wamme, désolé pour la collision
C'EST PRESQUE PARFAIT !
J'ai oublié le cas ou dans l'adresse il y a le n° + une lettre (a ou b ou c...)
Merci
gilles
 
Re : Extraire, rechercher numéros adresse

Hello,

tu peux toujours faire de multiples test conditionnels, mais selon moi le meilleur moyen est d'utiliser les expressions régulières .. ça fait un peu peur au début mais on s'y habitue ...

je t'ai développé une petite fonction qui nécessite l'ajout de la référence à MS VBscript regular expression 5.5

Code:
Function GetAddressElement(ByVal strAddr As String, _
                           ByVal strPartie As String) As String
                           
Dim reg As VBScript_RegExp_55.RegExp

' on crée l'objet expression régulière
Set reg = New VBScript_RegExp_55.RegExp

reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = False

Select Case strPartie
    Case "numéro"
        ' motif qui définit la recherche de numéro suivi de bis ou ter
        reg.Pattern = "^(\d+( bis| ter)?)"
        If reg.Test(strAddr) Then
            GetAddressElement = reg.Execute(strAddr)(0).SubMatches(0)
        Else
            GetAddressElement = ""
        End If
    
    Case "voie"
        ' motif qui définit la recherche de nom de voie
        reg.Pattern = "(rue|impasse|avenue|boulevard|bvd|allée|allee|chemin|grande rue)"
        If reg.Test(strAddr) Then
            GetAddressElement = reg.Execute(strAddr)(0).SubMatches(0)
        Else
            GetAddressElement = ""
        End If
    
    Case "nom voie"
        reg.Pattern = "(rue|impasse|avenue|boulevard|bvd|allée|allee|chemin|grande rue)(.*)"
        If reg.Test(strAddr) Then
            GetAddressElement = reg.Execute(strAddr)(0).SubMatches(1)
        Else
            GetAddressElement = ""
        End If
    
    
End Select
                           
Set reg = Nothing

End Function

Pour plus d'info sur les RegExp :
Tutoriel Access © cafeine - Les Expressions Rationnelles appliquées en VBA Access - Club d'entraide des développeurs francophones
C'est super mais j'ai oublié le cas ou dans l'adresse il y a le n° + une lettre (a ou b ou c...)
Par contre je ne sait pas utiliser ce genre de fonction (ou l'inscrire comment l'ajouter au foncion classique ?)

Merci
gilles
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
487
Réponses
3
Affichages
488
Retour