Publipostage Excel

Bonjour à tous et à toutes.

Je souhaite automatiser le publipostage depuis la source de donnees excel. Je vous explique :

J'ai une sources de donnees excel avec 12 onglets pour les 12 mois de l'année. Chaque debut de mois il me faut les attestations pour tous les fournisseurs du mois.Je souhaite insérer un nouvel onglet en début de classeur pour y répertorier les champs correspondants aux mois de l'année. En cliquant sur ces champs j'automatise mon publipostage sans faire toutes les étapes d'un publipostage. Je m'explique. Par exemple je clique sur janvier il va ouvrir la lettre type et effectuer automatiquement le publipostage. Il me renverra à un fichier Word ou toutes les lettres seront générées. Est ce que c'est faisable ? Si oui est ce complique a mettre en oeuvre ? Même pour une novice en macro. Et où puis je me former efficacement en macro et pas cher ? Je vous remercie pour tous vos conseils et idées.

Bonne soirée !

Bonjour Hatchepsout,

je n'ai pas de solution à proposer, mais je voulais juste souhaiter la bienvenue au 5ème souverain de la XVIIIème dynastie de l'Égypte, fille du pharaon Thoutmôsis Ier et de la Grande épouse royale Ahmès.

dhany

Bonjour

Merci ! Et Waou... Quelle connaissances ! Bravo... Mais tu n'as pas de solutions à mon problème ? C'est assez urgent !!! Bonne journée

désolé : si j'avais eu une solution, je te l'aurai indiquée avec le plus grand plaisir ! mais le publipostage, je sais le faire qu'à partir de Word ; continue de surveiller les prochaines réponses qui vont te parvenir : je suis sûr qu'un autre intervenant pourra t'aider !

dhany

Merci quand même.. Bonne journée !

Bonjour à tous,

Pour une demande similaire, j'avais proposé cette démo de publipostage depuis Excel.

Les 2 fichiers sont à placer dans un dossier de son PC, un clic sur le bouton de la feuille Excel lance le publipostage en prenant le doc comme modèle. Le résultat se place dans un sous-dossier qui se créé tout seul.

Le code est un peu commenté, il me semble que ça devrait être facile de le transposer pour un autre besoin.

Bonne journée

Pierre

Bonjour,

Je te remercie,

Par contre, le code ne fonctionne pas car je pense que ma version d'excel est trop ancienne. Je dispose de la version 2003.

Bonne journée

Rebonjour Hatchepsout,

ce n'est pas certain, mais il se pourrait que ton problème vienne juste d'une référence manquante :

a) fais Alt F11 pour aller sur « Visual Basic », et là, choisis : Outils / Références...

b) dans la liste, tu dois trouver et cocher « Microsoft Word 11.0 Object Library »

screen

sur l'image c'est 12.0 car c'est pour ma version d'Office 2007 ; 11.0 est pour Office 2003

après avoir coché la case, clique sur le bouton OK, puis recompile ton projet :

Débogage / Compiler VBAProject (raccourci clavier : Alt d Entrée)

ça devrait passer ; Alt F11 pour retourner sur Excel, et essayer

(j'ai supposé que tu as déjà adapté le code VBA à ton cas réel)

si c'est ça : ok ; sinon, pierrep pourra sans doute t'aider.


si un jour tu décides de passer à Windows 10, sache que Office 2003 ne fonctionnera pas dessus !

dhany

Ah, juste après avoir chargé le zip, je me suis rendu compte d'une erreur.

J'ai donc remis une autre version. Si ça se trouve, tu as la première version buguée.

Je t'invite à réessayer, ça devrait être compatible avec 2003

Pierre

@dhany : pas besoin de référence je code en late binding

bonjour pierrep,

merci pour ton info, MAIS :

ah ? et faut traduire comment « late binding » ?

late = en retard ; pour binding, j'ai trouvé :

nom :

* pour un livre : reliure

* en couture : extrafort

* en fabrication : agglutination, agrégation

* en bitume : liant, agglomérant

* en ski : fixations de sécurité

adjectif :

en droit : obligatoire ➯ retard obligatoire ?

en nourriture : constipant ➯ retard constipant ?


mon dico anglais est "Harrap's Shorter"


alors : nom ? adjectif ?

y'a aucune explication côté informatique !!!

what's the translation, please !!!

dhany

Ah pardon,

En VBA, pour faire appel à des "object" on peut :

* soit cocher des références (early binding - liaison précoce), ce qui permet d'instancier directement du genre :

Dim WordDoc As Word.Document

* soit les instancier en tant qu'object (late binding - liaison tardive) :

Dim WordDoc As Object

La première méthode permet facilement d'utiliser les méthodes et objets prévus dans la bibliothèque et est plus rapide à l’exécution (ceci dit avec les proc récents, ça se mesure en dixième de pouyème de millisec).

En revanche quand on utilise un fichier en early binding sur une autre version d'excel, on se butte à cette question de version de la bibliothèque.

Ainsi, pour éviter les appels de clients du genre "le truc de *#£§! que vous m'avez vendu ne marche pas", tout ça pour juste une case à cocher, j'ai pris le plis de toujours coder en late

Pierre

@Pierre

j'ai lu tout ton message, merci beaucoup pour toutes tes infos :

c'est beaucoup plus clair, et très intéressant !

dhany

@Hatchepsout

ne tiens plus compte de mon message de 15:13, sauf la dernière ligne en rouge, que je remets ici :

⚠ si un jour tu décides de passer à Windows 10, sache que Office 2003 ne fonctionnera pas dessus !


ensuite, lis le post de Pierre de 15:16 : https://forum.excel-pratique.com/viewtopic.php?p=665665#p665665

mais ça marchera pas pour ton Office 2003 ; voir mon post ci-dessous (explication + solution)


bien sûr, tu peux aussi lire tous les autres messages depuis ton dernier post de 13:05

dhany

@Pierre et Hatchepsout

j'viens d'essayer la nouvelle version de Pierre, et ça marche impeccable !

après avoir dézippé le fichier .zip : ouvrir le fichier Excel et cliquer sur le bouton « Publipostage » ➯ message « Publipostage OK » ; après fermeture de la fenêtre, j'ai cru qu'ça marchait pas car j'm'attendais à c'que ça ouvre Word avec dedans le publipostage !

en fait, ça n'ouvre pas Word, mais le résultat du publipostage est déjà tout prêt dans un sous-dossier du dossier où a été copié le fichier Excel ; nom de ce sous-dossier : « SousDossier » (oui, on peut dire que c'est évident ! )

y'a plus qu'à ouvrir avec Word le fichier .docx qui s'y trouve.


mais aïe ! j'viens d'réaliser qu'Hatchepsout pourra pas lire le fichier .xlsm ni le .docx avec son Office 2003 !

j'ai donc converti le .xlsm en .xls et le .docx en .doc :

25bull.zip (116.63 Ko)

plus besoin de dézipper, et naturellement, j'ai modifié le .xls pour qu'il crée un .doc et pas un .docx

l'utilisation est la même que ce qui est indiqué du 2ème au 4ème paragraphe de ce post.

j'ai testé et ça marche impeccable !


n'oublie pas d'remercier Pierre car c'est lui qui a tout fait ; moi, j'ai fait qu'adapter pour Office 2003

dhany

Très bien vu, Dhany, je n'avais pas pensé à ce foutu format 97-2003, indispensable ici.

Merci pour la "traduction"

Pierre

Rechercher des sujets similaires à "publipostage"