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 :

Travail sur chaîne de caractères en VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut Travail sur chaîne de caractères en VBA
    Bonjour à tous,

    Dans la cellule A1, j'ai un texte qui peux être variable mais qui contient TOUJOURS la chaînes Commentaire :

    Grâce à la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DROITE(A1;(NBCAR(A1)-NBCAR(GAUCHE(A1;TROUVE("Commentaire :";A1)+13))))
    j'arrive à extraire tout ce qui suit Commentaire : et ce, quel que soit la longueur de la chaîne avant ce mot.

    Et voilà le problème
    Je n'arrive pas à mettre cette formule en VBA. Le but étant de supprimer tout ce qui précède Commentaire : et y compris ce mot.

    J'ai vu que Gauche et Droite sont à remplacer par Right et Left, que LEN remplace NBCAR et que FIND remplace TROUVE... mais ça ne fonctionne pas.

    Merci d'avance pour une aide toujours aussi précieuse.

    Bonne journée.
    Curt

  2. #2
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 16
    Par défaut
    Tu peux trouver ton bonheur ici :
    http://silkyroad.developpez.com/VBA/...nesCaracteres/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DROITE(A1;(NBCAR(A1)-NBCAR(GAUCHE(A1;TROUVE("Commentaire :";A1)+13))))
    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
     
    Sub Extraction()
     
    Dim MyString, MyOccur As String
    Dim MyStringLength, MyoccurLength, MyStringOccur As Double
     
    MyString = "abcdefgh. Commentaire :description." 'Définition de ta chaîne de caractères
    MyOccur = "Commentaire :" 'Définition de l'occurence à rechercher
     
    MyStringLength = Len(MyString) 'retourne la longueur de ta chaîne de caractères
    MyoccurLength = Len(MyOccur) 'retourne la longueur de l'occurence
     
    MyStringOccur = InStr(MyString, "Commentaire :") - 1 'Renvoie la position de la première occurrence de la chaîne "Commentaire :" dans la variable MyString
     
    MyString = Right(MyString, MyStringLength - MyStringOccur - MyoccurLength)
    MsgBox (MyString)
     
    End Sub

  3. #3
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Bonjour Tenanio,

    je seuis sur cet excellent tuto depuis 2 jours.... et je ne parviens pas à trouver la formule qui va bien...

    Mais merci tout de même.

    Curt

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    une piste brouillon à adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub soluce()
     
    toto = "Cet exemple se passe de tout commentaires et fonctionne"
     
    long1 = Len(toto)
    long2 = Len("commentaires")
    long3 = InStr(toto, "commentaires")
     
    Result = Mid(toto, long2 + long3)
     
    End Sub
    cordialement,

    Didier

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 16
    Par défaut
    Regarde ci-dessus. J'ai modifié mon post au moment où tu postais...

  6. #6
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Slt, le forum,
    pour poursuivre l'exemple d'ormonth qui fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    Dim val As String, i As Integer
    i = InStr([A1].Value, "Commentaire :") + 13
    val = Mid([A1].Value, i)
    MsgBox val
    End Sub
    @+

    EDIT: ou bien directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim val As String
    val = Mid([A1], InStr([A1], "Commentaire :") + Len("Commentaire :"))
    MsgBox val

  7. #7
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Bonjour à vous tous

    et merci pour vos multiples réponses qui fonctionnent.

    J'ai retenu celle de Ormonth pour sa simplicité. J'ai juste adapté pour éviter les variables et ça donne ça dans mon module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Fields("Commentaire") = Mid(Array1(x, 12), Len("Commentaire : ") + InStr(Array1(x, 12), "Commentaire : "))
    Merci à tous pour l'aide toujours aussi précieuse !

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

Discussions similaires

  1. Travail sur chaines de caractères
    Par g.greg45 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2006, 19h11
  2. [Tableaux] Opération sur chaîne de caractères
    Par kespy13 dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2006, 14h32
  3. Travail sur chaine de caractère
    Par corben dallas dans le forum Access
    Réponses: 4
    Dernier message: 02/01/2006, 19h22
  4. Comment découper une chaîne de caractères en VBA
    Par TomPad dans le forum Access
    Réponses: 3
    Dernier message: 23/06/2005, 09h58

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