Publipostage entre Word et Excel

sadness78

XLDnaute Junior
Bonjour,

J'ai repris cette macro de publipostage sur le forum mais malgré plusieurs changements je ne comprends pas l'erreur de la macro.

Voici une version plus allégée de mon fichier.

Merci d’avance

Regarde la pièce jointe Quittance.zip
 

Pièces jointes

  • Quittance.zip
    40.4 KB · Affichages: 87
  • Quittance.zip
    40.4 KB · Affichages: 86

ruliann

XLDnaute Occasionnel
Re : Publipostage entre Word et Excel

salut,

Je n'y connais pas bcp puisque je viens moi meme demander de l'aide ici

Mais... après avoir ouvert l'éditeur VBA de ton fichier Word et de ton fichier excel, je n'ai trouvé aucune programmation... donc pas étonnant que ca ne fonctionne pas.

Tu veux faire quoi au juste? simplement du publipostage?
 

Modeste

XLDnaute Barbatruc
Re : Publipostage entre Word et Excel

Bonjour sadness78,

Une pensée émue à Tototiti2008 ne changera pas grand chose au fait qu'il n'y a pas plus de code aujourd'hui dans ton fichier, qu'il n'y en avait le 22/12, lorsque ruliann te l'a signalé! :confused:
 

sadness78

XLDnaute Junior
Re : Publipostage entre Word et Excel

Bonjour modeste, bonjour le forum

Bizarre qu'elle ne s'exporte pas.

Pour plus de facilité voici le code :
Code:
Sub publi_Click()
    
    'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
    Dim docWord As Word.Document
    Dim appWord As Word.Application
    Dim NomBase As String
    
    NomBase = "Z:\Appel de cotisation\Taxes\Spécial_Monnaie_différente.xls"
    
    Application.ScreenUpdating = True
    Set appWord = New Word.Application
    appWord.Visible = True
    
    'Ouverture du document principal Word
    Set docWord = appWord.Documents.Open("Z:\Appel de cotisation\Fichier modèle\special_monnaie_differente_lettre.doc")
    
    'fonctionnalité de publipostage pour le document spécifié
    With docWord.mailMerge
    
    'Ouvre la base de données
        .OpenDataSource Name:=NomBase, _
            Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=" & NomBase & "; ReadOnly=True;", _
            SQLStatement:="SELECT * FROM ['Base de données$']"
        
    'Spécifie la fusion vers l'imprimante
    '.Destination = wdSendToPrinter
    '.suppressBlankLines = True
        
    'Prend en compte l'ensemble des enregistrements
        With .DataSource
           .firstRecord = wdDefaultFirstRecord
           .lastRecord = wdDefaultLastRecord
            End With
    'Exécute l'opération de publipostage
        .Execute Pause:=False
    
    End With
    
    Application.ScreenUpdating = True
    
    'Fermeture du document Word
    'docWord.Close False
    'appWord.Quit

End Sub


Et j'ai trouvé la réponse à mon problème je ne sais pas si celà arrivera à d'autre novice mais ne pas confondre ces 2 références dans excel :

Microsoft Word xx.x Object Library
Microsoft Office xx.x Object Library

J'ai fait l'erreur moi même et grâce à un oeil externe j'ai pu trouvé l'erreur qui a résolu mon problème.

Merci à tous.

Cdlt,

Sadness
 

sadness78

XLDnaute Junior
Re : Publipostage entre Word et Excel

Bonjour à tous,

Si je peux continuer mon fil en me posant une nouvelle question concernant le même sujet.

J'aimerais au lieu d'avoir un répertoire de stockage fixe avoir une variable qui s'adapte suivant le lieu de stockage du fichier :

J'ai lu à différents endroits quelques lignes de VBA mais étant novice j'ai une compréhension très succinte si quelqu'un pouvait m'expliquer.

Voici le code trouvé :
Code:
Function GetPathNameFromFile(ByVal sPath As String) As String
    GetPathNameFromFile = Left$(sPath, InStrRev(sPath, "\"))
End Function
'   MsgBox  GetPathNameFromFile("C:\MesData\Classeur1.xls")

Merci d'avance,

Sadness
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Publipostage entre Word et Excel

re-bonjour,

La fonction que tu évoques extrait, d'un chemin d'accès complet + nom de fichier
Code:
"C:\MesData\Classeur1.xls"
... la partie qui précède le nom du fichier, ici:
Code:
"C:\MesData\"
Autrement dit la même chaîne de caractères, sans le nom du fichier. Pas certain que ce soit ce que tu cherches!?

Pour ta question, si tu parles du lieu de stockage de ton fichier Excel (et pour autant que j'aie bien compris) tu peux essayer quelque chose comme:
Code:
chemin = ActiveWorkbook.Path
P.S.: ne pas oublier, le cas échéant, d'ajouter un '\' final
 

sadness78

XLDnaute Junior
Re : Publipostage entre Word et Excel

re bonjour modeste, le forum

Si j'ai bien compris je remplace mon chemin ci-dessous :

Code:
NomBase = "Z:\Appel de cotisation\Taxes\Spécial_Monnaie_différente.xls"

par :

Code:
NomBase = "ActiveWorkbook.Path"

Car en fait la cible du fichier excel pourrait être enregistré sur des ordinateurs différents, le but de mettre une variable serait d'éviter de changer la macro sur chaque ordinateur.

Cdlt,

Sadness
 

Modeste

XLDnaute Barbatruc
Re : Publipostage entre Word et Excel

re-bonjour, bonsoir,

la cible du fichier excel pourrait être enregistré sur des ordinateurs différents
Qu'appelles-tu la cible du fichier? Je dis, pour ma part que si ton fichier Excel (celui où se trouve la macro) est enregistré en un enplacement 'x', l'instruction
l_adresse_de_mon_fichier = ActiveWorkbook.Path
fera que la variable l_adresse_de_mon_fichier contiendra une chaîne de caractères correspondant au chemin d'accès audit fichier.
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 356
Membres
103 528
dernier inscrit
hplus