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 :

[VBA-E] item et word en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut [VBA-E] item et word en VBA
    Bonjour,

    Je souhaiterais, dans une cellule, sélectionner par son rang un mot situé dans un phrase.
    Je ne trouve pas d'instruction du genre item(n) ou word(n).
    Comment cela se fait-il en VBA ?
    Merci à qui pourrait m'aider.

  2. #2
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    Split() permet de découper une chaine en mot mais avec un seul séparateur ...

    Voici une fonction personnalisée qui permet d'intégrer plusieurs séparateurs.
    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
    29
    30
    31
    Type typeMOT
        Count As Long
        Item() As String
    End Type
    Function Mot(ByVal strPhrase As String, _
                 Optional ByVal strSep As String = " ,?;.:/!}])\|[(-'") As typeMOT
     
    Dim i As Long
    Dim strCurWord As String
    Dim tmpMOT As typeMOT
     
    For i = 1 To Len(strPhrase)
        If InStr(strSep, Mid(strPhrase, i, 1)) Then
            If strCurWord & "" <> "" Then
                tmpMOT.Count = tmpMOT.Count + 1
                ReDim Preserve tmpMOT.Item(tmpMOT.Count)
                tmpMOT.Item(tmpMOT.Count) = strCurWord
                strCurWord = vbNullString
            End If
        Else
            strCurWord = strCurWord & Mid(strPhrase, i, 1)
     
        End If
    Next i
     
    tmpMOT.Count = tmpMOT.Count + 1
    ReDim Preserve tmpMOT.Item(tmpMOT.Count)
    tmpMOT.Item(tmpMOT.Count) = strCurWord
    Mot = tmpMOT
     
    End Function
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    toto = "Bonjour, je m'appelle Bernard-Aristide, et vous ? Moi c'est Marcel"
    ?mot(toto).Item(4)
    appelle

  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Merci caféine.

    Il n'existe donc pas de mot clé du genre: item(3) ou word(3)
    ou item 3 of "Texte" ?

    Je dois donc passer par la fonction que tu me donnes ?

    Cordialement.

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour flamel ... tu nous as pas précisé avec qu'elle application tu utiliser ton VBA...? et où étaient tes textes ...?

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Bonjour bbil.
    J'utilise VBA avec Excel.
    Le texte est dans une cellule (ou dans une variable).
    Il s'agit de prénom et nom, séparés par "/" que j'ai remplacé ensuite par " " avec une petite routine.
    Je veux extraire séparément les mots comme on peut le faire dans d'autres langages avec 'word' ou 'item'.
    Je veux utiliser le logiciel Gedcom (qui permet la liaison entre différents logiciels de généalogie) pour faire la liaison avec un logiciel que j'avais écrit à l'aide de ce bon vieux HYPERCARD sur MAC.
    Exemple:
    J'ai "Jean/Dupont" devenu "Jean Dupont" d'où je veux extraire "Jean" et "Dupont", étant entendu que les mots n'ont pas tous la même longueur, puisqu'il y a quelques centaines de "Prénom/Nom" différents à traiter.
    S'il n'y a pas d'autre moyen , j'utiliserai la fonction que nous a donnée caféine.

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben tu n'enléve pas le / ... c'est pas la peine est tu utilise split comme on te la proposé plus haut...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub test()
    Dim st As String
    Dim t() As String
    st = "Jean/Dupont"
    t = Split(st, "/")
    MsgBox t(0)
    MsgBox t(1)
     
    End Sub

  7. #7
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Comme te le dit bbil, soit c'est Split() soit c'est une fonction personnalisée comme celle que je t'ai donnée.

    Citation Envoyé par flamel
    Merci caféine.

    Il n'existe donc pas de mot clé du genre: item(3) ou word(3)
    ou item 3 of "Texte" ?

    Je dois donc passer par la fonction que tu me donnes ?

    Cordialement.

  8. #8
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Merci pour split()
    Mais j'ai encore un ennui.

    voici l'exemple, en recopiant le modèle donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            xNom2 = Selection
            st = xNom2
            t = Split(st, "/")
            Prenom = t(0)
            Nom = t(1)
            MsgBox Prenom & "  " & Nom
    Or, s'il n'y a pas de deuxième article, la présence de t(1) génére une erreur.
    Le nombre de "/" peut être variable. Comment gérer ce problème ?
    Si je mets la condition : if t(1) is true ... etc, ça ne marche pas.

  9. #9
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    J'ai réglé le problème en ajoutant :

    On Error Resume Next

    devant l'instruction Nom = t(1) etc...

    Merci les amis.
    Cordialement.

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

Discussions similaires

  1. [VBA-A]ouverture fichier word
    Par drangip dans le forum VBA Word
    Réponses: 2
    Dernier message: 25/02/2006, 12h44
  2. [VBA-E]Coller dans word
    Par tarmin dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/01/2006, 13h07
  3. [Access][VBA] Ouvrir un document word existant
    Par NicoNGRI dans le forum Access
    Réponses: 1
    Dernier message: 16/12/2005, 12h39
  4. Traitement des tableaux de word avec VBA: balise index
    Par Invité dans le forum VBA Word
    Réponses: 20
    Dernier message: 29/11/2005, 15h39
  5. Réponses: 4
    Dernier message: 16/06/2005, 09h27

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