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 :

Extraction d'une partie d'une adresse postale [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 13
    Par défaut Extraction d'une partie d'une adresse postale
    Bonjour à tous,

    J'ai une colonne dans un fichier remplie d'adresses postales, par exemple :

    02 CHEMIN LALANNE
    1 A ALLEE DE VERNEILH
    1 TER RUE DE SEGUES
    1008BIS CHEMIN MATACHOT
    18A ALLEE SOPHIA

    Je souhaite ne récupérer que l'adresse, sans le numéro, dans une nouvelle colonne :

    CHEMIN LALANNE
    ALLEE DE VERNEILH
    RUE DE SEGUES
    CHEMIN MATACHOT
    ALLEE SOPHIA

    J'ai écrit cette formule (je suis nul en formule excel et en vb) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTNUM(CNUM(GAUCHE(G12;(CHERCHE(" ";G12)-1))));DROITE(G12;(CHERCHE(" ";G12)+1));G12)
    Mais ça ne fonctionne pas, ça ne récupère qu'un bout de la fin de l'adresse.

    Quelqu'un peut-il m'aider svp ?
    Merci par avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible avec ce fichier à adapter. Celui-ci, contient une feuille paramètres où se trouvent les occurrences des voies. Le code ci-dessous cherche l'occurrence dans l'adresse brute, le cas échéant l'adresse tronquée est copiée dans la colonne suivant celle de l'adresse. Les minuscules, majuscules ne sont pas à distinguer, les caractères accentués doivent l'être.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Option Explicit
     
    Sub TransformerLesAdressesBrutes()
     
    Dim TypesDeVoies As Range
    Dim CelluleVoies As Range
     
    Dim ListeAdressesBrutes As Range
    Dim CelluleAdresses As Range
     
    Dim DerniereLigneParametres As Long
    Dim DerniereLigneAdresses As Long
    Dim I As Long
     
        ' Chargement des types de voies
        With Sheets("Paramètres")
            DerniereLigneParametres = .Cells(.Rows.Count, 1).End(xlUp).Row
            Set TypesDeVoies = .Range(.Cells(11, 1), .Cells(DerniereLigneParametres, 1))
        End With
     
        ' Définition de l'aire des adresses à traiter
        With Sheets("Adresses")
            DerniereLigneAdresses = .Cells(.Rows.Count, 1).End(xlUp).Row
            Set ListeAdressesBrutes = .Range(.Cells(2, 1), .Cells(DerniereLigneAdresses, 1))
        End With
     
        For Each CelluleAdresses In ListeAdressesBrutes
            For Each CelluleVoies In TypesDeVoies
                If Len(CelluleAdresses) > Len(CelluleVoies) Then
                    For I = 1 To Len(CelluleAdresses)
                        Select Case LCase(Mid(CelluleAdresses, I, Len(CelluleVoies)))
                            Case LCase(CelluleVoies)
                                CelluleAdresses.Offset(0, 1) = Mid(CelluleAdresses, I)
                                Exit For
                        End Select
                    Next I
                End If
            Next CelluleVoies
        Next CelluleAdresses
     
       Set ListeAdressesBrutes = Nothing
       Set TypesDeVoies = Nothing
     
    End Sub
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 13
    Par défaut
    Je viens de tester.
    J'ai copié votre macro dans mon fichier excel, nommé les feuilles et colonnes de la même manière mais cela ne fonctionne pas.
    J'ai donc fait l'inverse et copié mes colonnes dans votre fichier excel et là, à quelques exceptions près, cela fonctionne.
    Auriez-vous une idée du problème par rapport à mon fichier ? Je souhaiterai à terme pouvoir utiliser la macro dans d'autres fichiers.
    Merci de votre réponse.
    Cordialement.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par alain.terieur12 Voir le message
    Auriez-vous une idée du problème par rapport à mon fichier ? Je souhaiterai à terme pouvoir utiliser la macro dans d'autres fichiers.
    Si le nom des feuilles est identique (majuscules, minuscules respectées), il ne peut s'agir que de la ligne de démarrage sur la feuille "Paramètres". J'ai pour habitude de mettre mes titres en ligne 10, la liste des types de voie ne commence donc qu'à la ligne 11. Pour la feuille Adresses, j'ai supposé que votre tableau démarrait en toute logique à la ligne 1, la liste des adresses ne commence donc qu'en ligne 2. Dans les deux feuilles, les colonnes de référence sont les colonnes A.

    Sinon, vos fichiers sont-ils bien avec une extension .xls ou .xlsm ?

    Cordialement.

  5. #5
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 13
    Par défaut
    Merci pour vos précisions.
    Cela fonctionne effectivement en faisant démarrer à la ligne 11 les types de voies.
    Merci de votre aide.
    Cordialement,

  6. #6
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Décembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 13
    Par défaut
    Bonjour,
    Je reviens vers vous pour une précision.
    Quand j'ai une adresse comme : 50 CHEMIN ST JOSEPH je récupère seulement ST JOSEPH
    Par contre avec 50 RUE ST PIERRE je récupère bien RUE ST PIERRE
    J'ai constaté, en général, que lorsque l'adresse contient un ST, la chaine n'est récupérée qu'à partir de ce ST.
    Mes connaissances en vb et macro étant plus que limitées, pourriez vous me dire ce qu'il faut modifier (si toutefois cela se limite à un paramètre de la fonction actuelle) ?
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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