répliquer un texte à plusieurs endroits ( sans signets si possible ! )
répliquer un texte à plusieurs endroits ( sans signets si possible ! ) - VB/VBA/VBS - Programmation
MarshPosté le 17-08-2011 à 12:11:10
Bonjour,
L'objectif est le suivant :
* un document excel qui sert de proposition commerciale financière * un document word qui permet de décrire la proposition financière
1er étape : Je remplis mon document excel. Je rempli les cellules : NomClient (qui doit être répéter plusieurs fois dans le document word) NomProjet Chargé d'Affaires etc...
Je voudrais réutiliser le contenu de la cellule pour réinsérer dans mon word et le générer à partir d'un document type. J'ai essayé les signets mais il déforme mon document word et cela ne marche pas très bien. J'ai épluché le net, j'ai entendu parler de Autotext, de publipostage.. mais je ne vois pas comment le mettre en oeuvre. Le publipostage me demande une liste de destinataires etc...
J'aimerai réalisé cela au travers d'une macro. Je possède Word et Excel 2010. Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Sub Export()
'-- ouverture d'un document word
Dim WordApp As Word.Application Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application" ) '-- ouvre une session Word WordApp.Visible = True WordApp.WordBasic.DisableAutoMacros 1 WordApp.Activate Set WordDoc = WordApp.Documents.Open("C:\Users\Desktop\DocProposition.docx", ReadOnly:=True)
' ControleSiWordOuvert
Dim ChampP As String Dim ChampC As String Dim ChampA As String Dim ChampAM As String
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Sub RemplirSignet(S As String, T As String, WordDoc2 As Word.Document) ' Remplit le signet S avec le texte T sans détruire S On Error GoTo rien Dim Place As Long Place = WordDoc2.Bookmarks(S).Range.Start WordDoc2.Bookmarks(S).Range.Text = T WordDoc2.Bookmarks.Add Name:=S, _ Range:=WordDoc2.Range(Place, Place + Len(T)) rien:
End Sub
J'ai lu la partie publipostage. Mais cela me le fait avec l'assistant word moi ce que j'aimerai
C quand je lance ma macro, c'est que cela se fait à ce moment là en code. -> Ouvrir le fichier word de référence -> Faire les modifications -> Faire un Save As sous un autre nom...
Marsh Posté le 17-08-2011 à 12:11:10
Bonjour,
L'objectif est le suivant :
* un document excel qui sert de proposition commerciale financière
* un document word qui permet de décrire la proposition financière
1er étape : Je remplis mon document excel. Je rempli les cellules :
NomClient (qui doit être répéter plusieurs fois dans le document word)
NomProjet
Chargé d'Affaires etc...
Je voudrais réutiliser le contenu de la cellule pour réinsérer dans mon word et le générer à partir d'un document type. J'ai essayé les signets mais il déforme mon document word et cela ne marche pas très bien. J'ai épluché le net, j'ai entendu parler de Autotext, de publipostage.. mais je ne vois pas comment le mettre en oeuvre. Le publipostage me demande une liste de destinataires etc...
J'aimerai réalisé cela au travers d'une macro. Je possède Word et Excel 2010. Voici le code :
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
Sub Export()
'-- ouverture d'un document word
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("Word.Application" ) '-- ouvre une session Word
WordApp.Visible = True
WordApp.WordBasic.DisableAutoMacros 1
WordApp.Activate
Set WordDoc = WordApp.Documents.Open("C:\Users\Desktop\DocProposition.docx", ReadOnly:=True)
' ControleSiWordOuvert
Dim ChampP As String
Dim ChampC As String
Dim ChampA As String
Dim ChampAM As String
' Variable NomClient
ChampC = Sheets("Etape 2 - Récapitulatif" ).Range("B10" )
' Variable NomProjet
ChampP = Sheets("Etape 2 - Récapitulatif" ).Range("B15" )
' Variable Chargé d'affaire
ChampA = Sheets("Etape 2 - Récapitulatif" ).Range("F12" )
' Insertion des signets
RemplirSignet "NomClient", ChampC, WordDoc
RemplirSignet "NomProjet", ChampP, WordDoc
RemplirSignet "ChargeAffaire", ChampA, WordDoc
WordDoc.Fields.Update
Set WordApp = Nothing
End Sub
Voici la fonction RemplirSignet
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
Public Sub RemplirSignet(S As String, T As String, WordDoc2 As Word.Document)
' Remplit le signet S avec le texte T sans détruire S
On Error GoTo rien
Dim Place As Long
Place = WordDoc2.Bookmarks(S).Range.Start
WordDoc2.Bookmarks(S).Range.Text = T
WordDoc2.Bookmarks.Add Name:=S, _
Range:=WordDoc2.Range(Place, Place + Len(T))
rien:
End Sub
J'ai lu la partie publipostage. Mais cela me le fait avec l'assistant word moi ce que j'aimerai
C quand je lance ma macro, c'est que cela se fait à ce moment là en code.
-> Ouvrir le fichier word de référence
-> Faire les modifications
-> Faire un Save As sous un autre nom...