IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Adresse postale dans cellule [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut Adresse postale dans cellule
    bonjour le forum

    j'ai un petit problème sur un formatage de fichier adresse postale
    j'ai une colonne qui contient toute les informations d'une adresse
    bat, résidence rue etc ... comme ci dessous

    résid Gray d'Albion Bâtiment 35 45 Bis Rue perso

    j'ai trouvé une macro qui permet de faire un premier écrémage (mais qui me pose un problème car il ne met pas le numéro du batiment)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub Extraire_ADRESSES_CODESPOSTAUX_VILLES()
    Dim c As Range, t As Integer
    Set c = Range("d2")
    Do While c <> ""
    For t = InStr(InStr(c, " "), c, " ") To Len(c)
    Select Case Mid(c, t, 1)
    Case "0" To "9"
    Exit For
    End Select
    Next t
    c(1, 2) = Mid(c, 1, t - 1)
    c(1, 3) = Mid(c, t, 5) & Mid(c, t + 6) '.NumberFormat = "00000"
    'c(1, 4) =
    Set c = c(2, 1)
    Loop
    End Sub
    en effet la macro splitte la cellule dès le premier chiffre trouvé et donne
    résid Gray d'Albion Bâtiment

    pour la seconde partie de l'adresse j'ai réalisé cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(C2;NBCAR(GAUCHE(C2;NBCAR(D2)))+1;45)
    qui logiquement me sort
    35 45 Bis Rue perso

    cela me pose donc un problème car je n'arrive à trouver une solution pour ne récupérer que les chiffres si par exemple
    suite comme suit 35 45 pour ne prendre que 35 puisque 45 correspond à la rue et 35 au numéro du bâtiment

    j'espère avoir été clair

    merci d'avance pour votre aide

    David

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    Le probleme de gestion des adresses, c'est la profusion de combinaisons foireuses entre les noms et les mots.

    As-tu la possibilite par exemple de forcer la separation a base de virgules ?
    résid Gray d'Albion, Bâtiment 35, 45 Bis Rue perso

    Tu peux regarder dans le fait que tu aies le Bis qui apparaisse pour forcer le numero precedent comme numero d'adresse et non de batiment, mais ca ne sera pas suffisant si tu as un

    résid Gray d'Albion Bâtiment 35 45 Rue perso
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    merci de ta réponse mais non je ne peux rien modifier à la cellule excel
    de plus comment lui indiquer ou mettre une virgule
    l'idéal en fait serait de modifier la macro pour qu'elle prenne les chiffres en partant de la droite et non pas l'inverse comme c'est le cas
    donc tester jusqu'au premier chiffre trouvé puis coupé dès le premier espace après le chiffre remonté
    cela permettrait par la suite de faire une fonction stxt je pense
    mais bon pour la macro je ne vois pas trop comment le prendre pour réaliser cette opération

    si quelqu'un a une idée...

    merci d'avance

    david

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Tu peux utiliser InstrRev pour trouver le dernier chiffre dans la chaine, et aller "a reculons" dans ton texte
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    j'ai modifié le code comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Sub Extraire_ADRESSES_CODESPOSTAUX_VILLES()
    Dim c As Range, t As Integer
    Set c = Range("c2")
    Do While c <> ""
     
    For t = InStrRev(InStrRev(c, " "), c, " ") To Len(c)
    Select Case Mid(c, t, 1)
    Case "0" To "9"
    Exit For
    End Select
    Next t
    c(1, 8) = Mid(c, 1, t - 1)
    'c(1, 3) = Mid(c, t, 5) & Mid(c, t + 6) '.NumberFormat = "00000"
    'c(1, 4) =
    Set c = c(2, 1)
    Loop
    End Sub
    mais cela me met 'incompatibilité de type'

    j'ai loupé quelquechose ?

    merci d'avance de vos conseils avisés

    david

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Tu as ecris 2 fois InstrRev sur ta boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InStrRev(InStrRev(c, " "), c, " ")
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    en ne l'écrivant qu'un fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For t = InStrRev(c, " ") To Len(c)
    il me sort l'intégralité de l'adresse sans se soucier du premier nombre qu'il trouve depuis la droite

    ??

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Alors attention, InStrRev fonctionne de la meme facon que Instr, sauf qu'il part de la fin de ton texte

    Du coup si tu veux chopper le dernier chiffre, il te faut faire

    InStrRev(tontext,"0")
    qui retournera par exemple dans cet exemple
    01234567890 => 11
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    ok j'ai compris
    dans ce cas comme tu dois t'en douter je n'ai pas que qu'un chiffre
    je peux avoir 1, 2 ou 55

    comment lui indiquer dans la macro que j'utilise, les nombres sont isolés par le case si j'ai bien compris
    ou dois je le mettre dans ce cas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Extraire_ADRESSES_CODESPOSTAUX_VILLES()
    Dim c As Range, t As Integer
    Set c = Range("d2")
    Do While c <> ""
    For t = InStr(InStr(c, " "), c, " ") To Len(c)
    Select Case Mid(c, t, 1)
    Case "0" To "9"
    Exit For
    End Select
    Next t
    c(1, 2) = Mid(c, 1, t - 1)
    c(1, 3) = Mid(c, t, 5) & Mid(c, t + 6) '.NumberFormat = "00000"
    'c(1, 4) =
    Set c = c(2, 1)
    Loop
    End Sub

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    j'ai modifié le code comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Extraire_ADRESSES_CODESPOSTAUX_VILLES()
    Dim c As Range, t As Integer
    Set c = Range("c2")
    Do While c <> ""
    For t = InStrRev(c, "0") To Len(c)
    'For t = InStrRev(InStrRev(c, " "), c, " ") To Len(c)
     Select Case Mid(c, t, 1)
    Case "0" To "9"
    Exit For
    End Select
    Next t
    c(1, 8) = Mid(c, 1, t - 1)
    'c(1, 3) = Mid(c, t, 5) & Mid(c, t + 6) '.NumberFormat = "00000"
    'c(1, 4) =
    Set c = c(2, 1)
    Loop
    End Sub
    et j'ai le message
    Argument ou appel de procédure incorrect

  11. #11
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Il suffit ici de passer par une formule Max

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim x as Integer
    x = Application.worksheetfunction.max(InStrRev(c, "0"),InStrRev(c, "1"),InStrRev(c, "2"),InStrRev(c, "3"),InStrRev(c, "4"),InStrRev(c, "5"),InStrRev(c, "6"),InStrRev(c, "7"),InStrRev(c, "8"),InStrRev(c, "9"))
     
    'x contient donc l'emplacement du dernier chiffre dans ton adresse
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    je l'ai appliquée comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Extraire_ADRESSES_CODESPOSTAUX_VILLES()
    Dim c As Range, t As Integer
    Set c = Range("c2")
    Do While c <> ""
    Dim x As Integer
    x = Application.WorksheetFunction.Max(InStrRev(c, "0"), InStrRev(c, "1"), InStrRev(c, "2"), InStrRev(c, "3"), InStrRev(c, "4"), InStrRev(c, "5"), InStrRev(c, "6"), InStrRev(c, "7"), InStrRev(c, "8"), InStrRev(c, "9"))
    For t = InStrRev(c, x) To Len(c)
    'For t = InStrRev(InStrRev(c, " "), c, " ") To Len(c)
     Select Case Mid(c, t, 1)
    Case "0" To "9"
    Exit For
    End Select
    Next t
    c(1, 8) = Mid(c, 1, t - 1)
    'c(1, 3) = Mid(c, t, 5) & Mid(c, t + 6) '.NumberFormat = "00000"
    'c(1, 4) =
    Set c = c(2, 1)
    Loop
    End Sub
    mais toujours le même message
    Argument ou appel de procédure incorrect
    sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Case Mid(c, t, 1)

  13. #13
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    x represente l'emplacement, donc pas la peine de l'utiliser ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For t = InStrRev(c, x) To Len(c)
    Mai directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For t = x To Len(c)
    'va parcourir toutes les lettres apres ton dernier chiffre, ton dernier chiffre y compris
    exemple

    "02345678 abc 1 ef" => "1 ef"

    de plus ton Mid est faux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mid("tontext",numerodebut,nombrecaracteres)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    désolé je ne comprends ce qui pose problème dans mon 'mid'
    j'essaie toutes les combinaisons et rien n'y fait je n'obtiens pas ce que je voudrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Extraire_ADRESSES_CODESPOSTAUX_VILLES()
    Dim c As Range, t As Integer
    Set c = Range("c2")
    Do While c <> ""
    Dim x As Integer
    x = Application.WorksheetFunction.Max(InStrRev(c, "0"), InStrRev(c, "1"), InStrRev(c, "2"), InStrRev(c, "3"), InStrRev(c, "4"), InStrRev(c, "5"), InStrRev(c, "6"), InStrRev(c, "7"), InStrRev(c, "8"), InStrRev(c, "9"))
    'For t = InStrRev(c, x) To Len(c)
    For t = x To Len(c)
    'For t = InStrRev(InStrRev(c, " "), c, " ") To Len(c)
     Select Case Mid(c, 1, t)
    Case "0" To "9"
    Exit For
    End Select
    Next t
    c(1, 2) = Mid(c, 1, t)
    'c(1, 3) = Mid(c, t, 5) & Mid(c, t + 6) '.NumberFormat = "00000"
    'c(1, 4) =
    Set c = c(2, 1)
    Loop
    End Sub
    j'ai bien modifié ce qu'il fallait mais le mid j'avoue que je comprends pas
    s'agit il du mid en rouge dans le code ?

  15. #15
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Tu inverses ton t et ton 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Case Mid(c, t, 1)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  16. #16
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    une autre façon d'aborder le problème.
    Lancer un traitement spécial si un mot d'une liste apparait dans la chaine.
    Ta liste de mots serait "bat ","bât ","bat. ","batiment " etc
    Si un de ces mot apparait, tu sais que ton séparateur doit se situer sur l'espace suivant pour inclure un mot supplémentaire.
    eric

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    salut

    désolé de ma réponse tardive
    après test la macro ne semble pas fonctionner comme prévue
    25 Rue toto Laty 25
    résid Cannes Parc Bâtiment A 10 Impasse toto résid Cannes Parc Bâtiment A 10
    résid Fontainebleau B 13 Avenue Paul toto résid Fontainebleau B 13
    86 Avenue persoville 86
    résid le Blois 4 Rue perso résid le Blois 4

    il ne me sort pas les adresses depuis la droite a priori, il prend tout ce qui est avant les numéros de rues

    j'ai pourtant appliqué la macro ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
    Sub Extraire_ADRESSES_CODESPOSTAUX_VILLES()
    Dim c As Range, t As Integer
    Set c = Range("c2")
    Do While c <> ""
    Dim x As Integer
    x = Application.WorksheetFunction.Max(InStrRev(c, "0"), InStrRev(c, "1"), InStrRev(c, "2"), InStrRev(c, "3"), InStrRev(c, "4"), InStrRev(c, "5"), InStrRev(c, "6"), InStrRev(c, "7"), InStrRev(c, "8"), InStrRev(c, "9"))
     
    For t = x To Len(c)
     
     Select Case Mid(c, t, 1)
    Case "0" To "9"
    Exit For
    End Select
    Next t
    c(1, 2) = Mid(c, 1, t)
     
    Set c = c(2, 1)
    Loop
    End Sub
    de plus si dans la rue il n'y a pas de numéro la macro plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    résid Age d'Or Boulevard Croisette

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    merci eric de ta proposition mais le traitement serait aléatoire et qui plus est très complexe a mettre en place car tellement d'orthographe différente....

  19. #19
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,
    Pour ton cas
    résid Age d'Or Boulevard Croisette
    mis a part une expression reguliere, c'est une tannee a determiner ce dont tu as besoin

    Sur mon code, tu aurais voulu recuperer quoi ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    désolé pour le code demandé

    en fait j'ai besoin d'extraire tout ce qui est à droite des chiffres
    donc tester jusqu'au dernier chiffre, stopper dès qu'il y a un espace puis retourner l'information
    si pas de chiffre laisser tel que (boucle supplémentaire permettant de tester les valeurs ?)
    donc pour
    25 Rue toto Laty 25 Rue toto Laty
    résid Cannes Parc Bâtiment A 10 Impasse toto 10 Impasse toto
    résid Fontainebleau B 13 Avenue Paul toto 13 Avenue Paul toto
    86 Avenue persoville 86 Avenue persoville
    résid le Blois 4 Rue perso 4 Rue perso

    pour le reste je pense pouvoir m'en sortir avec une formule stxt et gauche ou droite sur les valeurs extraites via la macro

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. [AC-2007] Adapter l'adresse postale dans un état
    Par macgyver44 dans le forum IHM
    Réponses: 1
    Dernier message: 15/11/2011, 09h34
  2. Inscrit l'adresse d'une cellule sélectionnée dans une autre cellule
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/05/2008, 22h26
  3. Réponses: 5
    Dernier message: 26/12/2007, 10h51
  4. Réponses: 2
    Dernier message: 14/05/2007, 10h22
  5. Réponses: 4
    Dernier message: 11/09/2006, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo