• Initiateur de la discussion Initiateur de la discussion m@tix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

m@tix

XLDnaute Occasionnel
Bonsoir,

Considérant une chaîne de caractères de la forme suivante :

Nom, Prénom (Niveau, Groupe, Situation) (ou Nom (Niveau, Groupe, Situation))

Je cherche à récupérer dans des variables distinctes les 4 infos présentes. Je pensais pour cela utiliser la fonction Mid, mais je ne suis pas convaincu que cela soit possible ainsi.

J'y suis parvenu pour extraire le nom :

Code:
extract_nom = Mid(chaine, 1, InStr(1, chaine, "(") - 2)
Pensez-vous que le reste soit faisable ?

Merci d'avance. 🙂
 
Re : Fonction Mid

Bonjour m@tix


Un truc du genre :
VB:
Function toto(s$)
Dim x, y
    Application.Volatile
    x = Split(Replace(s, ")", ""), "(")
    y = Split(x(1), ",")
    toto = Array(Trim(x(0)), Trim(y(0)), Trim(y(1)), Trim(y(2)))
End Function

Ceci dit, sans support...​


ROGER2327
#5607


Vendredi 13 Pédale 139 (Sainte Valburge - fête Suprême Quarte)
17 Ventôse An CCXX, 1,2305h - doronic
2012-W10-3T02:57:11Z
 

Pièces jointes

Re : Fonction Mid

Bonjour ROGER2327 🙂

Merci pour ta réponse, cela semble donner exactement le résultat attendu !
Cependant, je ne parviens pas à l'appliquer sur la macro (je n'utilise pas de formule sur la feuille pour appliquer ta fonction toto en fait). Voici mon code :

Code:
Sub test()

Dim chaine As String
chaine = "Bob (Chef executif, AAA, Paris)"
Dim nom, niveau, groupe, situation As String

'nom =
'niveau =
'groupe =
'situation =

End Sub
Je souhaiterais voir apparaître les bonnes infos dans les variables nom, niveau,etc..
Comment puis-je utiliser ta fonction ainsi ? Je ne m'en sors pas.. 😕
 
Re : Fonction Mid

Re...


La fonction renvoie un tableau. Il suffit d'en prendre l'élément qu'on souhaite.

Par exemple :
VB:
Sub test()

Dim chaine$, nom$, niveau$, groupe$, situation$, x
    chaine = "Bob (Chef executif, AAA, Paris)"

    x = toto(chaine)
    nom = x(0)
    niveau = x(1)
    groupe = x(2)
    situation = x(3)

End Sub

ou, plus lent :
VB:
Sub test2()

Dim chaine$, nom$, niveau$, groupe$, situation$
    chaine = "Bob (Chef executif, AAA, Paris)"

    nom = toto(chaine)(0)
    niveau = toto(chaine)(1)
    groupe = toto(chaine)(2)
    situation = toto(chaine)(3)

End Sub


ROGER2327
#5608


Vendredi 13 Pédale 139 (Sainte Valburge - fête Suprême Quarte)
17 Ventôse An CCXX, 4,1357h - doronic
2012-W10-3T09:55:32Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour