delf_28
Messages postés11Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 9 mai 2007
-
30 avril 2007 à 15:12
delf_28
Messages postés11Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 9 mai 2007
-
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 2 mai 2007 à 08:50
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 2 mai 2007 à 11:40
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
delf_28
Messages postés11Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 9 mai 2007 2 mai 2007 à 10:26
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 2 mai 2007 à 10:41
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]
delf_28
Messages postés11Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 9 mai 2007 2 mai 2007 à 11:37
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
delf_28
Messages postés11Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 9 mai 2007 2 mai 2007 à 11:51
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