Publipostage vers Word piloté par Excel en VBA

jozerebel

XLDnaute Occasionnel
Bonjour,

Je souhaite à partir d'un fichier excel lancer un modèle word qui récupère certaines valeurs de cellules. J'ai bricolé un code VBA, mais lorsque je lance mon publipostage, mes nombres ne sont pas tout le temps repris comme il faut. Par exemple, lorsqu'il y a un chiffre inférieur à 1, Word me le reprend comme une unité (5 à la place de 0.5).

Pour exemple: Je souhaite reprendre la somme de réglements, la somme de factures et la différence. Sur excel cela se fait par des formules. Lors du passage sur Word, pas de souci lorsque tous les nombres sont supérieurs à 1, mais quand j'ai un nombre inférieur, patatra... J'ai de grandes incohérences..;

Je rajoute que j'aimerais également que la macro puisse renommer le fichier word en prenant des valeurs de cellules (nom, prénom, date)


J'espère avoir été clair. Merci de m'aider.
Voici mon code:

Sub publi()


'ouvrir application word publipostage

'Nécessite d'activer la référence "Microsoft Word xx.x Object Library" 'ca c ok'
Dim docWord As Word.Document
Dim appWord As Word.Application
Dim NomBase As String
Dim Fichier As String
Dim nom As String
Dim prenom As String
nom = Range("b26").Value
prenom = Range("b27").Value


Fichier = nom & prenom







SITUATION = "k:\Outils CAD\situations de comptes\valerie.xls"

Application.ScreenUpdating = False
Set appWord = New Word.Application
appWord.Visible = True

'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("k:\Outils CAD\situations de comptes\modele_situation_valerie.dot")

'fonctionnalité de publipostage pour le document spécifié
With docWord.mailMerge

'Ouvre la base de données
.OpenDataSource Name:=SITUATION, _
Connection:="Driver={Microsoft Excel Driver (*.xlsm)};" & _
"DBQ=" & SITUATION & "; ReadOnly=True;", _
SQLStatement:="SELECT * FROM [PUBLIPOSTAGE!]"


'Prend en compte l'ensemble des enregistrements
With .DataSource
.firstRecord = wdDefaultFirstRecord

End With

'Exécute l'opération de publipostage
.Execute Pause:=False
End With

Application.ScreenUpdating = True

Set documentResultat = appWord.ActiveDocument






'fin ouvrir publipostage

End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 870
dernier inscrit
Dethomas