Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Remplacer un texte dans Word par une variable Excel

Jilde

XLDnaute Occasionnel
Bonjour à tous !!

Voilà maintenant quelques jours que je me prends la tête à développer une machine à gaz pour ma boite.
Et jusqu'à maintenant, je m'en suis pas trop mal tirer !

La machine en question :
On alimente une base de données sous Excel.
Lorsqu'on a fini de remplir une ligne (nom, prénom, N° de sécu, Société, etc ...) :
1/ on clique sur un bouton,
2/ ça génère entre 4 et 6 fichiers à partir de modèles Word,
3/ ça renomme ces fichiers en fonction des données de la base (nom et prénom par ex),
4/ ça crée un répertoire au nom du client et ça met tous les fichiers Word dedans.

Jusque là, tout va bien, ça marche grâce aux infos que j'ai pu trouver sur ce sacré forum !

Mais maintenant, je bloque ...

Dans chacun des fichiers créés, je souhaite remplacer du texte par des valeurs de la base Excel.
J'ai donc créé des variables reprenant les valeurs de certaines cellules, mais je n'arrive pas à remplacer le texte dans Word par les valeurs de la base Excel ...

Je peux pas joindre les fichiers car ils sont assez important et contiennent des infos confidentielles.

Mais voici une partie du code :
Code:
'Déclaration, affectation et vérification de la variable extraite de la base Excel
'Intersection de la ligne active et de la colonne 14
Dim New_Text
New_Text = Cells(ActiveCell.Row, 14)
MsgBox "Le nouveau texte est :" & New_Text

'On définit un objet Word  :
Set WordApp = CreateObject("Word.application")

'On ouvre le fichier Word "New_Fichier" qui a été créé précédemment :
Set WordDoc = WordApp.Documents.Open(New_Fichier_1er_M3)

'On met Word au premier plan (True) durant la procédure pour voir ce qu'il s'y passe ...
WordApp.Visible = True
            
'C'est à partir de là ou ça merdouille ...
'Recherche dans le document Word le texte à remplacer
WordApp.Selection.Find.ClearFormatting
WordApp.Selection.Find.Text = "TEXTE_A_REMPLACER"

'Remplace le texte à remplacer par le nouveau texte
WordApp.Selection.Find.Replacement.ClearFormatting
WordApp.Selection.Find.Replacement.Text = New_Text

WordApp.Selection.Find.Execute Replace:=Word.WdReplace.wdReplaceAll


'On enregistre et on ferme le document word
WordDoc.Close True
'On laisse au systeme le temps d'enregistrer le fichier
DoEvents

'On quitte Word :
WordApp.Quit

'On vide les objets WordApp & WdDoc :
Set WordApp = Nothing
Set WordDoc = Nothing

Jusqu'à l'ouverture du fichier Word, tout va bien, mais après, Vb me dit "Objet requis" et stoppe.
Mon fichier reste ouvert, mais rien n'a été remplacer dedans ...

Alors je fais appel aux pros du VB pour avoir un coup de main !
S'il vous manque des infos, je ne suis pas loin.

Merci d'avance :; !!
 

myDearFriend!

XLDnaute Barbatruc
Re : Remplacer un texte dans Word par une variable Excel

Bonsoir Jilde, vbacrumble, le Forum,

Le plantage que tu rencontres : tu utilises WordApp au lieu de WordApp2 pour le deuxième document :
Code:
Set WordDoc2 = [B]WordApp[/B].Documents.Open(New_Fichier_M2)
Cela dit, dans ce genre de situation, moi je ferais plutôt quelque chose comme ça :
Code:
[COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]

[COLOR=NAVY]Sub[/COLOR] Test()
    RemplacementWord "C:\MonDocument1.doc", "Lettre_de_Commande", "LeTexteDeRemplacement"
    RemplacementWord "C:\MonDocument2.doc", "LeTexteARemplacer", "LeTexteDeRemplacement"
[COLOR=NAVY]End Sub[/COLOR]

[COLOR=NAVY]Sub[/COLOR] RemplacementWord(Fichier [COLOR=NAVY]As String[/COLOR], TxtAncien [COLOR=NAVY]As String[/COLOR], TxtNouveau [COLOR=NAVY]As String[/COLOR])
    [COLOR=GREEN]'On definit un objet Word puis on l'ouvre :[/COLOR]
    [COLOR=NAVY]Dim[/COLOR] WordApp [COLOR=NAVY]As[/COLOR] Word.Application
    [COLOR=NAVY]Dim[/COLOR] WordDoc [COLOR=NAVY]As[/COLOR] Word.Document
    [COLOR=NAVY]Set[/COLOR] WordApp = CreateObject("Word.application")
    [COLOR=NAVY]Set[/COLOR] WordDoc = WordApp.Documents.[COLOR=NAVY]Open[/COLOR](Fichier)
    WordApp.Visible = [COLOR=NAVY]False[/COLOR]
    
    [COLOR=NAVY]With[/COLOR] WordDoc.Content.Find
        .ClearFormatting
        .Text = TxtAncien
        [COLOR=NAVY]With[/COLOR] .Replacement
            .ClearFormatting
            .Text = TxtNouveau
        [COLOR=NAVY]End With[/COLOR]
        .Execute Replace:=wdReplaceAll
        .Forward = [COLOR=NAVY]True[/COLOR]
        .Wrap = wdFindContinue
    [COLOR=NAVY]End With[/COLOR]
    
    [COLOR=GREEN]'On enregistre et on ferme le document word[/COLOR]
    WordDoc.[COLOR=NAVY]Close True[/COLOR]
    [COLOR=GREEN]'On quitte l'application Word[/COLOR]
    WordApp.Quit
    [COLOR=GREEN]'On vide les objets WordApp & WdDoc[/COLOR]
    [COLOR=NAVY]Set[/COLOR] WordApp = [COLOR=NAVY]Nothing
    Set[/COLOR] WordDoc = [COLOR=NAVY]Nothing
End Sub[/COLOR]
Cordialement,
 

Jilde

XLDnaute Occasionnel
Re : Remplacer un texte dans Word par une variable Excel

Ben c'est impec !!

Il ne me reste plus qu'a recopier du code maintenant, devrait pas y avoir de nouveaux soucis.
Du moins, je l'espère ...

Merci encore Mdf !!
 

Discussions similaires

Réponses
10
Affichages
404
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…