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 :

Userform / Textbox avec extraction d'un combobox après un séparateur [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut Userform / Textbox avec extraction d'un combobox après un séparateur
    Bonjour le Forum
    Dans un userform, je souhaiterais remplir un textbox (LIBELLE) avec une extraction d'un combobox (POSTE) après un séparateur " - "


    Dans "POSTE" les données se présentes tjrs sous la mm forme, avec un seul séparateur " - " :

    BABA - BUBU BOBO

    La longueur du texte avec et après le séparateur étant variable

    et du coup dans "LIBELLE", cela donnerais par exemple

    BUBU BOBO 01/2016

    par contre, je rame pour faire cette extraction

    avec ma macro j'obtiens :

    BABA - BUBU BOBO 01/2016

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub POSTE_Change()
     
    LIBELLE.Value = POSTE.Value & " " & Month(Date) & "/" & Year(Date)
    End Sub
    Qui aurais une idée ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pour extraire une sous-chaine située dans une chaine dont les différents composants sont tous délimités par le même séparateur, tu peux utiliser la fonction Split().

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub UnMorceau()
    Dim LaChaine As String
    Dim LeSeparateur As String
    Dim LeResultat As String
        LaChaine = "BABA - BUBU BOBO"
        LeSeparateur = " - "
        LeResultat = Split(LaChaine, LeSeparateur)(1)
        MsgBox LeResultat
    End Sub
    Tu obtiens dans l'exemple "BUBU BOBO"

    regarde l'aide VBA au sujet de Split()

    il retourne un tableau (base 0) avec l'ensemble des portions de la chaine principale.

    Split(LaChaine, LeSeparateur)(i) renvoie l'élément i-1 de la chaine (puisque le split()(0) donne le premier)


    Ps : dans ton exemple, on peut aussi utiliser les fonction Mid() et Instr()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub UnMorceau()
    Dim LaChaine As String
    Dim LeSeparateur As String
    Dim LaPosition As Long
    Dim LeResultat As String
        LaChaine = "BABA - BUBU BOBO"
        LeSeparateur = " - "
        LaPosition = InStr(1, LaChaine, LeSeparateur) + Len(LeSeparateur)
        LeResultat = Mid(LaChaine, LaPosition)
        MsgBox LeResultat
    End Sub
    Je te laisse également regarder l'aide en ligne pour ces deux fonctions

    Mid = extraction d'une portion de chaine de caractère
    Instr = position d'une chaine de caractère dans une autre chaine

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

    Un autre exemple que celui de Joe mais qui utilise également la fonction Split

    Dans un module standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function ValeurApresTiret(ByVal ContenuComboBox As String) As Variant
     
      If ContenuComboBox <> "" Then ValeurApresTiret = Split(ContenuComboBox, "- ")(1) & " " & Format(Date, "mm-yyyy")
     
    End Function

    Dans le Userform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change()
     
            TextBox1 = ValeurApresTiret(ComboBox1)
     
    End Sub


    L'exemple est dans le fichier joint Pièce jointe 197674

    Cordialement.

  4. #4
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    bonjour à tous les deux.

    tout d'abord merci !

    J'ai testé les 2 codes et cela marche nikel !

    Merci à vous

    bonne journée

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

Discussions similaires

  1. [XL-2010] userform / textbox avec date / faire une addition dans une autre textbox
    Par GADENSEB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2014, 17h21
  2. [XL-2003] Pb avec les valeurs sortantes COmbobox dans Userform
    Par FrankCF dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/08/2011, 17h45
  3. UserForm extraction et Filtre ComboBox
    Par lchauvet1 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 15/06/2011, 15h22
  4. [XL-2003] Textbox se remplissant avec une cascade de combobox
    Par avenir80 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/12/2010, 17h54
  5. Réponses: 3
    Dernier message: 27/02/2008, 14h21

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