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 :

Séparation dans une chaine de caractères [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
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut Séparation dans une chaine de caractères
    Bonjour,

    Je cherche une solution pour séparer dans une chaîne de caractères, les caractères entre parenthèses.
    Ex: Vaugirard (Boulevard Vaugirard) j'essaie d'isoler dans une cellule la chaîne (Boulevard Vaugirard). Dans chaque chaîne de caractères il y a un espace entre le premier mot et la première parenthèse.
    Merci à tous ceux qui ont une petite idée.

    Cordialement
    Lucien

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut
    Bonjour,

    Tu peux regarder du côté des fonctions: Instr() et InstrRev() qui renvoient la position d'une sous-chaine dans une chaine. Les parenthèses dans ton exemple.

    Puis utilise la fonction Mid() qui permet d'extraire une sous-chaine d'une chaine.

  3. #3
    Invité
    Invité(e)
    Par défaut Avec la fonction AVaugirardOnCoupeLeLard
    Bonjour,

    Avec la fonction AVaugirardOnCoupeLeLard...

    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
     
     
    Function AVaugirardOnCoupeLeLard(ChaineATraiter As String)
     
    Dim CtrI As Integer
    Dim DebutDeChaine As Integer
    Dim FinDeChaine As Integer
     
      DebutDeChaine = 0
      FinDeChaine = 0
      AVaugirardOnCoupeLeLard = ""
     
      For CtrI = 1 To Len(ChaineATraiter) - 1
                If Mid(ChaineATraiter, CtrI, 2) = "( " Then DebutDeChaine = CtrI + 2
     
      Next CtrI
     
      For CtrI = 1 To Len(ChaineATraiter)
                If Mid(ChaineATraiter, CtrI, 1) = ")" Then FinDeChaine = CtrI
      Next CtrI
     
      If DebutDeChaine > 0 And FinDeChaine > 0 Then
      AVaugirardOnCoupeLeLard = Mid(ChaineATraiter, DebutDeChaine, FinDeChaine - DebutDeChaine)
     
      End If
     
     
    End Function
    Et pour tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub TestAVaugirardOnCoupeLeLard()
     
      MsgBox (AVaugirardOnCoupeLeLard("Vaugirard ( Boulevard Vaugirard)"))
     
    End Sub

    Cordialement.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Regarde si ça convient :
    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 Test()
     
        Dim Chaine As String
        Dim Nom1 As String
        Dim Nom2 As String
     
        Chaine = "Vaugirard (Boulevard Vaugirard) ici suite de la chaine si existante..."
     
        Chaine = Mid(Chaine, InStr(Chaine, "(") + 1, InStr(Chaine, ")") - InStr(Chaine, "(") - 1)
     
        Nom1 = Split(Chaine, " ")(0)
        Nom2 = Split(Chaine, " ")(1)
     
        MsgBox Nom1 & vbCrLf & Nom2
     
    End Sub
    Hervé.

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    p'tite variante :
    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
    Function Extrait$(Chaine$, CarD$, CarF$, Optional B As Boolean = False)
        S$ = Application.Trim(Chaine$)
        D& = InStr(S$, CarD$)
     
        If D& Then
            F& = InStr(D& + 1, S$, CarF$)
            If F& Then Extrait$ = Mid$(S$, D& - B, F& - D& + 1 + B * 2)
        End If
    End Function
     
     
    Sub Demo()
        Test$ = "   Vaugirard   (Boulevard     Vaugirard)   "
        MsgBox Extrait$(Test$, "(", ")") & vbLf & vbLf & Extrait$(Test$, "(", ")", True)
    End Sub

    _______________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Par défaut
    Merci pour vos réponses rapides

    Lucien

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Réponses: 7
    Dernier message: 17/09/2005, 23h38
  3. Récuperer un nombre dans une chaine de caractère
    Par ColonelHati dans le forum C
    Réponses: 4
    Dernier message: 27/04/2005, 14h50
  4. [VB.NET] Recherche dans une chaine de caractères
    Par Pleymo dans le forum Windows Forms
    Réponses: 12
    Dernier message: 09/04/2005, 10h25
  5. [C#] Une variable dans une chaine de caractères...
    Par GlorfindelHebril dans le forum Windows Forms
    Réponses: 9
    Dernier message: 31/03/2005, 14h30

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