gregml
Messages postés89Date d'inscriptionsamedi 17 mai 2014StatutMembreDernière intervention16 juin 2017
-
19 juin 2014 à 14:38
jordane45
Messages postés37845Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 novembre 2023
-
19 juin 2014 à 15:23
Bonjour,
A chaque jour suffit sa peine...
Aujourd'hui, je me suis lancé dans la recherche et le remplacement de chaînes de caractères dans un document Word.
J'ai fait des recherches et suis tombé sur la portion de code :
Option Strict On
Option Explicit On
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word
Module Module1
Sub Main()
Dim oWord As New Word.Application
oWord.Documents.Open(C:\Users\greg\Desktop\DocumentProjetSimplifieAccolade.docx)
oWord.Visible = True
oWord.ActiveDocument.Content.Find.Execute(FindText:={nom}, Replace:="martin", Replace:=Word.WdReplace.wdReplaceAll)
Console.ReadLine()
oWord.ActiveDocument.Close()
oWord.Visible = False
oWord.Quit()
End Sub
End Module
Jusqu'ici... tout va bien. Dans mon document Word, {nom} a été remplacé par
martin... Super.
Par contre, lorsque j'ai essayé de :
1) remplacer martin par une variable de type String, en faisant :
Dim Mot As String
Mot = martin
...
oword.ActiveDocument.Content.Find.Execute(FindText:="{nom}" ReplaceWith:=Mot, Replace:=Word.WdReplace.wdReplaceAll)
...là, ça n'a plus fonctionné. J'ai tenté la conversion avec CChar(Mot), mais rien n'y fait... Quelqu'un aurait-il une idée s'il vous plaît?
2) "systématiser" cette opération en créant une procédure du genre
Private Sub Remplacer (ByVal motancien As String, Byval motnouveau As String)
oWord.ActiveDocument.Content.Find.Execute(FindText:=motancien, ReplaceWith:=motnouveau, Replace:=Word.WdReplace.wdReplaceAll)
End Sub
...ça n'a pas marché : dans cette procédure, le oWord du début génère une erreur :
'oWord' n'est pas déclaré...
Je reproduis le code que j'ai tenté vainement d'exécuter :
Option Strict On
Option Explicit On
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word
Module Module1
Dim motnouveau As String = "Martin"
Sub Main()
Dim oWord As New Word.Application
oWord.Documents.Open(C:\Users\greg\Desktop\DocumentProjetSimplifieAccolade.docx)
oWord.Visible = True
Remplacer("{nom}","martin")
Console.ReadLine()
oWord.ActiveDocument.Close()
oWord.Visible = False
oWord.Quit()
Sub Remplacer (ByVal motancien As String, Byval motnouveau As String)
oWord.ActiveDocument.Content.Find.Execute(FindText:=motancien, ReplaceWith:=motnouveau, Replace:=Word.WdReplace.wdReplaceAll)
End Sub
End Sub
End Module
Quelqu'un aurait-il la solution à ce désagrément ?
Merci d'avance, Grég
A voir également:
Remplacement d'un mot par un autre dans un document Word
jordane45
Messages postés37845Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 novembre 2023342 19 juin 2014 à 14:43
Il ne te manquerait pas des apostrophes dans ton code ?
Mot = martin
==>
Mot = "martin"
gregml
Messages postés89Date d'inscriptionsamedi 17 mai 2014StatutMembreDernière intervention16 juin 2017 19 juin 2014 à 14:52
Salut Jordane,
Merci encore une fois de venir à mon secours. C'est toujours réconfortant de vous voir arriver et d'être aussi dispos pour les autres.
Pour ce qui est du code, je viens de changer, en mettant des guillemets mais cela ne fonctionne pas davantage...?? J'avoue ne pas bien comprendre..
Option Strict On Option Explicit On Imports Microsoft.office.Interop Imports Microsoft.Office.Interop.Word
Module Module1
Sub Main() Dim oWord As New Word.Application Dim motnouveau As String motnouveau = "Martin" oWord.Documents.Open("C:\Users\greg\Desktop\DocumentProjetSimplifieAccolades.docx") oWord.Visible = True
jordane45
Messages postés37845Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 novembre 2023342 19 juin 2014 à 15:01
Tu n'aurais pas des indications d'erreurs dans ton visual studio ???
Remplace string par object sur la ligne :
Dim motnouveau As Object
motnouveau = "Martin"
gregml
Messages postés89Date d'inscriptionsamedi 17 mai 2014StatutMembreDernière intervention16 juin 2017 19 juin 2014 à 15:03
C'est bon, j'ai remplacé String par Object et ça fonctionne.
jordane45
Messages postés37845Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 novembre 2023342 19 juin 2014 à 15:10
et ça fonctionne.
Je sais... ^^
Tu penses à clore le sujet ?
gregml
Messages postés89Date d'inscriptionsamedi 17 mai 2014StatutMembreDernière intervention16 juin 2017 19 juin 2014 à 15:15
Oui, je clos.
A titre d'information, j'ai aussi déclaré la variable oWord entre le Module1 et la Sub Main() et miracle...ma petite procédure d'appel a fonctionné...
Bientôt la gloire... je plaisante.
Merci encore, Grég
jordane45
Messages postés37845Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 novembre 2023342 19 juin 2014 à 15:23
A titre d'information, j'ai aussi déclaré la variable oWord entre le Module1 et la Sub Main() et miracle...ma petite procédure d'appel a fonctionné...
Oui c'est normal.
Tu as rendu ta variable "Publique" .
Elle est donc accessible partout dans tes sub...
19 juin 2014 à 14:45