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 :

Décomposer le contenu (une adresse) d'une cellule en 2 ou 3 cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 10
    Par défaut Décomposer le contenu (une adresse) d'une cellule en 2 ou 3 cellules
    Bonjour,

    j'ai le problème suivant : je dispose d'un fichier excel avec une colonne qui contient des adresses (genre "3 rue des plantes" ou 12 bis rue St Martin")

    je souhaite décomposer chaque cellule pour récupérer le n° de rue (ici "3" ou "12") afin de le copier dans une nouvelle cellule.

    Puis je souhaite copier le reste de l'adresse ("rue des plantes" ou "bis rue St Martin") dans une autre cellule.

    Comme ca je décompose l'adresse.
    L'ideal serait également mais la ca me semble impossible qu'un test soit fait pour vérifier si il y a une mention "bis" ou "ter" ou "quater" afin de le copier aussi dans une cellule à part.

    Merci de vos lumières.

  2. #2
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    on peut tout faire avec des chaînes avec pas mal d'effort, il y a cependant des outils spécialisés pour ça : les expressions regulières.

    un ptit coup d'oeil sur mon tutoriel :
    http://cafeine.developpez.com/access/tutoriel/regexp/

    et deux exemples :
    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
    allregexp "12 bis rue saint martin","(\d+)\s(bis|ter|quater)?(.*)", _
               "numéro : $1" & vbcrlf & "bis/ter : $2" & vbcrlf & "voie : $3"
    ==================================
          Travaux liés à .Execute
    ==================================
    nombre d'occurences : 1
    source >>     12 bis rue saint martin
    [$1]          12
    [$2]          bis
    [$3]           rue saint martin
    ==================================
            Travaux liés à .Test
    ==================================
    Vrai
    ==================================
          Travaux liés à .Replace
    ==================================
    numéro : 12
    bis/ter : bis
    voie :  rue saint martin
    et

    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
    allregexp "3 rue des plantes","(\d+)\s(bis|ter|quater)?(.*)", _
               "numéro : $1" & vbcrlf & "bis/ter : $2" & vbcrlf & "voie : $3"
    ==================================
          Travaux liés à .Execute
    ==================================
    nombre d'occurences : 1
    source >>     3 rue des plantes
    [$1]          3
    [$2]          
    [$3]          rue des plantes
    ==================================
            Travaux liés à .Test
    ==================================
    Vrai
    ==================================
          Travaux liés à .Replace
    ==================================
    numéro : 3
    bis/ter : 
    voie : rue des plantes

  3. #3
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    cf le fichier joint
    Fichiers attachés Fichiers attachés

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 10
    Par défaut
    Merci bcp pour vos réponses. Je teste ca demain matin et vous tiens au courant.

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Coucou Cafeine, j'ai une question :
    VBscript est-il installé avec Office ou avec VB... ou les deux ? J'ai les deux si bien que je n'en sais rien.
    Merci de ta réponse .

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    Une solution par formule, si la chaîne est en A1:

    En B1 tu saisies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(A1;CHERCHE(" ";A1;1)-1)

    En C1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU(GAUCHE(STXT(A1;NBCAR(B1)+2;NBCAR(A1));CHERCHE(" ";STXT(A1;NBCAR(B1)+2;NBCAR(A1));1)-1)="BIS";GAUCHE(STXT(A1;NBCAR(B1)+2;NBCAR(A1));CHERCHE(" ";STXT(A1;NBCAR(B1)+2;NBCAR(A1));1)-1)="TER");GAUCHE(STXT(A1;NBCAR(B1)+2;NBCAR(A1));CHERCHE(" ";STXT(A1;NBCAR(B1)+2;NBCAR(A1));1)-1);STXT(A1;NBCAR(B1)+2;NBCAR(A1)))

    En D1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU(C1="BIS";C1="TER");DROITE(A1;NBCAR(A1)-NBCAR(B1)-NBCAR(C1)-2);"")


    bonne journée
    michel

  7. #7
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Je t'avoue que j'ignore avec quoi est installé MS VBscript Regular Expressions ...
    Citation Envoyé par ouskel'n'or Voir le message
    Coucou Cafeine, j'ai une question :
    VBscript est-il installé avec Office ou avec VB... ou les deux ? J'ai les deux si bien que je n'en sais rien.
    Merci de ta réponse .

  8. #8
    Membre chevronné Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Par défaut
    on va essayer quelque chose

    en supposant que les adresses completes soient dans la cellule A

    tu peux faire comme ceci .. (pas de gestion d'erreurs)
    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
    Sub separerardresse()
     
        For i = 1 To Range("A65536").End(xlUp).Row ' parcours la colonne A
            taAdresse = Split(Range("A" & i), " ")
            Range("A" & i) = taAdresse(0)
            If UCase(taAdresse(1)) = "BIS" Then MsgBox ("Un bis trouvé ligne " & i)
            If UCase(taAdresse(1)) = "TER" Then MsgBox ("Un ter trouvé ligne " & i)
            AutreAdresse = ""
            For k = 1 To UBound(taAdresse)
                AutreAdresse = AutreAdresse & " " & taAdresse(k)
            Next
            AutreAdresse = Trim(AutreAdresse)
            Range("B" & i) = AutreAdresse
        Next
    End Sub
    plantera dans le cas ou ton adresse n'est formée que d'un mot ou commence par une lettre ^^

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 11h17
  2. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  3. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  5. Réponses: 2
    Dernier message: 31/05/2006, 16h15

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