Extraire, rechercher numéros adresse

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

  • Extraire.xls
    20 KB · Affichages: 161
  • Extraire.xls
    20 KB · Affichages: 166
  • Extraire.xls
    20 KB · Affichages: 166

Jocelyn

XLDnaute Barbatruc
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

  • Extraire.zip
    3.1 KB · Affichages: 98
  • Extraire.zip
    3.1 KB · Affichages: 94
  • Extraire.zip
    3.1 KB · Affichages: 94
Dernière édition:

cafeine

XLDnaute Nouveau
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

  • RegExp Demo.xls
    32 KB · Affichages: 136

JHA

XLDnaute Barbatruc
Re : Extraire, rechercher numéros adresse

Bonjour à tous,

Ci joint un bon début pour ton soucis reste à gérer les majuscules et minuscules.

JHA
 

Pièces jointes

  • Extraire(1).zip
    3.3 KB · Affichages: 60
  • Extraire(1).zip
    3.3 KB · Affichages: 55
  • Extraire(1).zip
    3.3 KB · Affichages: 78

JHA

XLDnaute Barbatruc
Re : Extraire, rechercher numéros adresse

RE Gagliardi, le forum,

J'ai rajouté un STXT() pour avoir le nom de la voie.

JHA
 

Pièces jointes

  • Extraire(1).zip
    3.6 KB · Affichages: 54
  • Extraire(1).zip
    3.6 KB · Affichages: 68
  • Extraire(1).zip
    3.6 KB · Affichages: 53

JHA

XLDnaute Barbatruc
Re : Extraire, rechercher numéros adresse

Bonjour Gagliardi, le forum,

Ci joint une révision pour accepter les majuscules/minuscule.

JHA
 

Pièces jointes

  • Extraire(1).zip
    3.8 KB · Affichages: 95
  • Extraire(1).zip
    3.8 KB · Affichages: 87
  • Extraire(1).zip
    3.8 KB · Affichages: 90

Gagliardi

XLDnaute Nouveau
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
 

Gagliardi

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
8
Affichages
150
Réponses
3
Affichages
292

Statistiques des forums

Discussions
312 190
Messages
2 086 037
Membres
103 105
dernier inscrit
fofana