Parcourir word avec VBA excel [Résolu]

delf_28 11 Messages postés jeudi 29 mars 2007Date d'inscription 9 mai 2007 Dernière intervention - 30 avril 2007 à 15:12 - Dernière réponse : delf_28 11 Messages postés jeudi 29 mars 2007Date d'inscription 9 mai 2007 Dernière intervention
- 2 mai 2007 à 11:51
bonjour,

Je souhaite grâce à une macro VBA sous excel, obtenir le mot situé juste après un mot voulu. J'ai plusieurs mots à rechercher dans plusieurs feuille word. Par exemple ici je cherche le mot qui se trouve après le mot "Vendeur". J'arrive à ouvrir word puis à rechercher le mot mais je bloque pour obtenir le mot suivant

voici le début du code obtenu:

 Set word_app = CreateObject("Word.Application")
               With word_app
                    .Visible = True
                    .WindowState = wdWindowStateMaximize
                End With
                Set word_fichier = word_app.documents.Open(MonFichier)
                    word_app.Selection.Find.ClearFormatting
                    word_app.Selection.Find.Replacement.ClearFormatting
                    With word_app.Selection.Find
                        .Text = "Vendeur"
                        If .Text = "Vendeur" Then

                            'Je bloque ici

                         End If
                    End With
                word_app.Application.Quit 'quitte l'application word
                Set word_fichier = Nothing
end sub

merci pour votre aide

delf! javascript:Insert_Emoticon('/imgs2/smile.gif');
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 2 mai 2007 à 08:50
3
Merci
Salut,
Mais avec ce code tu ne recherches pas encore le mot vendeur il faut utiliser ....Find.Execute
non?

Ensuite tu parcours le contenu du fichier depuis le resultat de Execute en cherchant les espaces pour en resortir le mot suivant
@+: Ju£i?n
Pensez: Réponse acceptée

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 2 mai 2007 à 11:11
3
Merci
Salut,
Ah non c'est peu être parceque tu n'a pas les constantes relative à Word.
Remplace alors wdWord par 2
et aussi wdExtend par 1 (un)

@+: Ju£i?n
Pensez: Réponse acceptée

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 2 mai 2007 à 11:40
3
Merci
Salut,
Je precisais (un) car 1 ressemble aussi a un L minuscule.
Il faut mettre le Chiffre 1
Call word_app.Selection.MoveRight(2, 1, 1
)
@+: Ju£i?n
Pensez: Réponse acceptée

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jrivet
delf_28 11 Messages postés jeudi 29 mars 2007Date d'inscription 9 mai 2007 Dernière intervention - 2 mai 2007 à 10:18
0
Merci
Bonjour,

merci pour ta reponse, c'est j'avais oublier Find.Execute

voici le nouveau code:

Set word_app = CreateObject("Word.Application")
With word_app
.Visible = True
.WindowState = wdWindowStateMaximize
End With

Set word_fichier = word_app.documents.Open(MonFichier)
word_app.Selection.Find.ClearFormatting
word_app.Selection.Find.Replacement.ClearFormatting

With word_app.Selection.Find
word_app.Selection.Find.ClearFormatting
.Text = "Vendeur" & ":" & " " & "*" & " "
.MatchWildcards = True
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
End With

Trouvé = word_app.Selection.Find.Execute

While Trouvé
word_app.Selection.Collapse wdCollapseEnd
Trouvé = word_app.Selection.Find.Execute
Wend

'MsgBox

Windows("Speed_All").Activate
Sheets("Speed").Select

word_app.Application.Quit 'quitte l'application word
Set word_fichier = Nothing


J'aimerai récupérer le mot entre "vendeur: " et " " dans MsgBox ça doit être simple mais je voie pas comment faire.

merci de votre aide.

delf!
Commenter la réponse de delf_28
delf_28 11 Messages postés jeudi 29 mars 2007Date d'inscription 9 mai 2007 Dernière intervention - 2 mai 2007 à 10:26
0
Merci
Désolé pour la présentation je recomence.
Bonjour,
 
Merci pour ta reponse, c'est j'avais oublier Find.Execute.
 Voici le nouveau code:
 
 Set word_app = CreateObject("Word.Application")
                With word_app
                    .Visible = True
                    .WindowState = wdWindowStateMaximize
                End With
               
                Set word_fichier = word_app.documents.Open(MonFichier)
                    word_app.Selection.Find.ClearFormatting
                    word_app.Selection.Find.Replacement.ClearFormatting
                   
                    With word_app.Selection.Find
                        word_app.Selection.Find.ClearFormatting
                        'Je cherche ce qu'il y a entre vendeur et l'espace aprés le mot rechercher
                        .Text = "Vendeur: " & "*" & " "
                        .MatchWildcards = True
                        .Replacement.Text = ""
                        .Forward = True
                        .Wrap = wdFindContinue
                    End With
                   
                    Trouvé = word_app.Selection.Find.Execute
                 
                    While Trouvé
                        word_app.Selection.Collapse wdCollapseEnd
                        Trouvé = word_app.Selection.Find.Execute
                    Wend
                      
                     'MsgBox pour afficher le mot rechercher
                   
                    Windows("Speed_All").Activate
                    Sheets("Speed").Select
                   
                  
                    word_app.Application.Quit 'quitte l'application word
                Set word_fichier = Nothing

J'aimerai récupérer le mot entre "vendeur: " et " " dans MsgBox ça doit être simple mais je voie pas comment faire.

Merci de votre aide.

delf!
Commenter la réponse de delf_28
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 2 mai 2007 à 10:41
0
Merci
Salut,
Tiens teste ceci en espérant que cela te conviennes.
Set word_app = CreateObject("Word.Application")
   With word_app
       .Visible = True
       .WindowState = wdWindowStateMaximize
   End With
   Set word_fichier = word_app.Documents.Open("C:\1.doc")
   word_app.Selection.Find.ClearFormatting
   word_app.Selection.Find.Replacement.ClearFormatting
   With word_app.Selection.Find
       word_app.Selection.Find.ClearFormatting
       .Text = "Vendeur: "
       .MatchWildcards = True
       .Replacement.Text = ""
       .Forward = True
       .Wrap = wdFindContinue
   End With
   Trouvé = word_app.Selection.Find.Execute
   Dim Num As String
   While Trouvé
       'On déplace le curseur a la fin de ce qu'on a trouve
       Call word_app.Selection.MoveRight(wdWord, 1)
       'On deplace le curseur en sélectionnant le text d'un mot
       Call word_app.Selection.MoveRight(wdWord, 1, wdExtend)
       Num = Selection
       'on affiche le résulat
       Call MsgBox(Num)
       Call word_app.Selection.MoveRight(wdWord, 1)
       'on passe au résultat suivant
       Trouvé = word_app.Selection.Find.Execute
   Wend
   'Sheets("Speed").Select
   word_app.Application.Quit
   'quitte l'application word
   Set word_fichier = Nothing
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
delf_28 11 Messages postés jeudi 29 mars 2007Date d'inscription 9 mai 2007 Dernière intervention - 2 mai 2007 à 11:05
0
Merci
Merci pour la rapidité de ta réponse.

J'ai un message d'erreur lorsque le programme arrive sur la ligne:

Call word_app.Selection.MoveRight(wdWord, 1)
'Lorsque je pointe sur wdWord lors du débogage, il est vide

Le message m'indique "Paramètre incorrect". faut t'il écrire une fonction avec "Call"?

Merci

Delf!
Commenter la réponse de delf_28
delf_28 11 Messages postés jeudi 29 mars 2007Date d'inscription 9 mai 2007 Dernière intervention - 2 mai 2007 à 11:37
0
Merci
Merci

Le code fonctionne mieu comme ça.

Pour le code:
 'On déplace le curseur a la fin de ce qu'on a trouve
 Call word_app.Selection.MoveRight(2, 1)
--> ça marche bien, le curseur se met bien devant le mot à trouver

Mais pour le code:
'On deplace le curseur en sélectionnant le text d'un mot
Call word_app.Selection.MoveRight(2, 1, un)
--> Le curseur se déplace bien jusqu'à la fin du mot à trouver mais le sélectionne pas donc me donne pas de mot en retour

merci

Delf!
Commenter la réponse de delf_28
delf_28 11 Messages postés jeudi 29 mars 2007Date d'inscription 9 mai 2007 Dernière intervention - 2 mai 2007 à 11:51
0
Merci
Merci beaucoup pour ton aide et ta rapidité.


Le code fonctionne trés bien. Mais il falait rajouter word_app pour mettre le mot sélectionner dans Num sinon Num été vide:
Num = word_app.Selection


Voici le code final:


              Set word_fichier = word_app.Documents.Open(MonFichier)
                   word_app.Selection.Find.ClearFormatting
                   word_app.Selection.Find.Replacement.ClearFormatting
                   With word_app.Selection.Find
                       word_app.Selection.Find.ClearFormatting
                       .Text = "Vendeur: "
                       .MatchWildcards = True
                       .Replacement.Text = ""
                       .Forward = True
                       .Wrap = wdFindContinue
                   End With
                   Trouvé = word_app.Selection.Find.Execute
                   Dim Num As String
                   While Trouvé
                       'On déplace le curseur a la fin de ce qu'on a trouve
                       Call word_app.Selection.MoveRight(2, 1)
                       'On deplace le curseur en sélectionnant le text d'un mot
                        Call word_app.Selection.MoveRight(2, 1, 1)
                        Num = word_app.Selection
                       'on affiche le résulat
                       MsgBox (Num)
                       Call word_app.Selection.MoveRight(2, 1)
                       'on passe au résultat suivant
                       Trouvé = word_app.Selection.Find.Execute
                   Wend
                   'Sheets("Speed").Select
                   word_app.Application.Quit
                   'quitte l'application word
                   Set word_fichier = Nothing

Merci pour tout

Delf
Commenter la réponse de delf_28

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.