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 chaîne à partir d'une autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut Extraction d'une chaîne à partir d'une autre
    Salut tout le monde

    Ma question peut vous paraître banale mais je ne suis pas parvenue à trouver une solution :/

    Ma question est la suivante:
    je veux extraire une chaîne à partir d'une autre sachant que la chaîne que je veux extraire se trouve entre les deux premiers "," de la chaîne originale.
    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str1= " 01 (Marie, femme, Paris, 33 ans, mariée) "
    A partir de str1, je veux extraire le mot "femme"
    J'ai essayé comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mid(str1, InStr(str1, ",") + 1, InStr(str1, ","))
    Mais cela ne fonctionne pas correctement puisque le résultat de retour est " femme, Par"
    SVP, si quelqu'un a une solution qu'il me la donne, c'est vraiment urgent.

    Merci à l'avance

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

    Un petit truc avec la fonction Split.

    Fonction à coller dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function Extract(strChaine As String) As String
        'déclaration
        Dim Eclat() As String
        Eclat = Split(strChaine, ",")
        Extract = Eclat(1)
    End Function
    Ensuite dans ton code tu l'utilises de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim StrResult as String
    StrResult = Extract(str1)
    Philippe

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut
    Merci Philippe et rdurupt

    Mais ne voyez-vous pas une autre solution sans utiliser le "split" car je n'ai pas vraiment envie que ma chaîne retournée soit de type Tableau ?

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Dans mon cas la fonction Extract retourne un chaine et non un tableau. Le tableau est utilisé uniquement à l'intérieur de la fonction.

    Philippe

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut
    Oui Philippe, tu as raison

    Mais le problème c'est que je n'ai pas pu adapter la solution que tu m'as proposé à mon cas.
    Je repose la question avec plus de détails:
    En effet, j'ai une variable Var que j'ai "splitté" à chaque retour de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VarSplit=Split(var, vblf)
    c'est à partir des éléments de la variable VarSplit (qui sont tous de la même forme) que je veux extraire les chaînes entre deux "," càd j'ai:
    VarSplit(1)=" 01 (Marie, femme, Paris, 33 ans, mariée) "
    VarSplit (2)=" 02 (jean, homme, Nice, 50 ans, veuf) "
    ....
    VarSplit(n)=" 0n (sophie, femme, Grenoble, 25 ans, célibataire) "

    j'espère que j'était claire et j'attends vos réponses.
    Merci

  6. #6
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut extraction d'une chaine à partir d'une autre
    bonsoir,

    Sub extrac()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim chaine As String
    Dim pos1 As Integer
    Dim pos2 As Integer
     
    chaine = "01 (Marie, femme, Paris, 33 ans, mariée)"
     
    pos1 = InStr(chaine, ",") + 1
    pos2 = InStr(pos1, chaine, ",")
    sChaine = Mid(chaine, pos1, (pos2 - pos1))
    Cells(4, 1) = sChaine
    End Sub
    cordialement.

  7. #7
    Invité
    Invité(e)
    Par défaut Bonjour, test ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub test()
    str1 = " 01 (Marie, femme, Paris, 33 ans, mariée) "
    str1 = Replace(str1, "(", ",")
    str1 = Replace(str1, ")", "")
    str1 = Replace(str1, " ", "")
    MonTable = Split(str1, ",")
    For i = 0 To UBound(MonTable)
        Debug.Print MonTable(i)
    Next
    End Sub

Discussions similaires

  1. VBA extraction d'une chaîne à partir d'une autre
    Par rebelious dans le forum Excel
    Réponses: 6
    Dernier message: 17/05/2013, 17h21
  2. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  3. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  4. Réponses: 5
    Dernier message: 22/05/2008, 14h42
  5. Obtenir une chaîne à partir d'une énumération
    Par zidenne dans le forum Langage
    Réponses: 1
    Dernier message: 12/11/2005, 10h39

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