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
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
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
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
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]
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
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