Macros MS Publisher 2007 (Topic Unique ?) - VB/VBA/VBS - Programmation
Marsh Posté le 01-10-2022 à 17:36:29
-1- Exporter un document Publisher en PDF, en X exemplaires
Le nombre à rentrer est en ligne 6, là j'ai mis 8.
Code :
|
-2- Exporter en PDF en X exemplaires, demandé par une boîte de dialogue
Code :
|
-3- Exporter un document Publisher en PDF, en séparant les différentes pages du document
Le but est de créer un fichier PDF avec X fois la page1 puis Y fois la page2, etc...
Attention ! Il faut créer AVANT de lancer la macro, un fichier tempo.pub avec 2 pages (vierges). Je n'ai pas réussi à créer un document PUB temporaire !
Pour cet exemple, j'ai mis 7 et 3 pour les nombres de pages.
Code :
|
-4- Exporter en PDF, en séparant les différentes pages du document, avec boîte de dialogue
Attention ! Il faut créer AVANT de lancer la macro, un fichier tempo.pub avec 2 pages (vierges).
Code :
|
Marsh Posté le 03-10-2022 à 20:14:07
Ca reste du VBA, donc pareil que ce qu'on trouve sur du Word ou Excel. Avec l'aide en ligne de MS pour trouver le nom des objets et des infos sur les paramètres des fonctions, ça te suffit pas
Perso, quand je connais pas le nom de l'objet, je pars de l'objet Application puis je mets le "." et je vois la liste des propriétés, objets et fonctions dispos. Je cherche dans la liste le truc qui, au nom, correspond à ce que je cherche et voilà... Ca marche la plupart du temps. Les mecs ont été un minimum logique sur le nommage des trucs, quand même
Marsh Posté le 03-10-2022 à 21:24:34
Merci de ta réponse.
Alors, Publisher n'a pas exactement les mêmes mots qu'Excel.
Dans excel, on peut, empiriquement, enregistrer des actions puis en faire une macro, et étudier.
Dans Publisher, bernique ! Aucun enregistrement.
De plus, le vocabulaire n'est pas le même et il faut pas mal chercher.
Exemple : Sheet n'existe pas, il faut utiliser Document.
Pour finir, l'aide (via F1) dans Publisher est vraiment pourrie. Il n'y a quasiment rien (9 articles au total) sur les macros et VBA.
Voilà pourquoi je souhaitais passer par de l'aide via HFR. J'ai tenté sur Developpez.com, j'ai trouvé un peu d'aide, mais vu le peu de gens qui utilisent Publisher et a fortiori la version 2007, c'est très vite limité. Sur le net, on trouve quelques dizaines de sujets à ce propos, mais les 3 quarts sont sans réponse...
Sur le site de Microsoft, c'est pas trop mal, mais ^pas super explicite pour un non programmeur, mais surtout je ne trouve pas grand'chose à propos de ExportAsPDF qui semble peu étendue comme fonction (surtout si on veut exporter UNE feuille du document et non pas le document entier).
Marsh Posté le 04-10-2022 à 09:29:56
Tu n'as pas compris ce que je t'ai indiqué je pense.
Bien évidemment que les objets diffèrent entre Exce, Word, Publisher, PowerPoint... vu qu'ils ne font pas les mêmes choses, ne manipulent pas les mêmes données.
Néanmoins, leur logique de fonctionnement reste la même. Tout part de l'objet Application.
Donc, dans l'éditeur de code VBA, quand tu vas créer une fonction, dans le corps de celle-ci, tu vas taper "Application" suivi du "." ce qui va t'afficher par autocomplétion les objets, fonctions et propriétés disponibles. Grâce aux noms affichés, tu devrais pouvoir trouver les objets dont tu as besoin, ainsi que les fonctions.
Après, je parlais de l'aide en ligne sur le site de Microsoft, pas celle locale. Du reste, dans les dernières versions de MS Office, je crois que toute l'aide renvoie sur le web.
Edit : pour ta sauvegarde d'un document Publisher en PDF : https://www.mrexcel.com/board/threa [...] ba.966914/
Après, j'ai pas testé, n'ayant pas Publisher. Ca serait quand même bien que tu postes ton code pour qu'on voit où ça peut coincer...
Marsh Posté le 04-10-2022 à 10:00:13
Un topic sur une techno d'il y a 15 ans et que personne n'utilisait déjà à l'époque, la clé du succès
Même si l'espoir est faible, tu devrais essayer de poser explicitement tes questions et montrer ce qui coince dans tes essais
Marsh Posté le 04-10-2022 à 11:52:32
OK, je vais commencer par poser des problèmes clairs, ce sera sûrement plus simple pour tout le monde
Je poste ça d'ici demain, j'suis au taf, là !
Marsh Posté le 04-10-2022 à 22:20:06
Donc, mon objectif est d'exporter en PDF plusieurs pages d'un classeur Publisher. De plus, je veux pouvoir exporter la 1ère en X exemplaires, la 2ème en Y exemplaires.
Je sais déjà exporter en X exemplaires.
Code :
|
Le "8" tout à la fin est le nombre d'exemplaires.
Maintenant, le problème est que je n'arrive pas à sélectionner une page spécifique pour qu'elle soit exportée en PDF.
Il faut probablement passer par Pages ou Page, mais j'ai du mal à comprendre, surtout pour l'export...
Le code suivant ne marche pas comme je veux. Je pense que c'est PageUN qui n'est pas correct...
Code :
|
Merci pour votre aide !
Marsh Posté le 04-10-2022 à 23:00:31
Pour moi, y'a un pb avec PageUN : tu le déclares en string mais j'ai l'impression que tu cherches à avoir l'objet de la page qui correspond à la page n°1, non ?
T'as quoi comme msg d'erreur ?
Le coup des x exemplaires d'un même page, c'est d'avoir dans le PDF, x exemplaires de la même page à la suite, c'est ça ?
Marsh Posté le 05-10-2022 à 11:22:00
Merci de ta réponse
- oui, je cherche à avoir x exemplaires à la suite dans mon PDF. Je m'explique (parce que ça peut paraître bizarre !).
Je crée des feuilles d'exercices pour mes élèves. Il y a parfois une feuille entière par élève, parfois une feuille contient 2 exercices, parfois 4, parfois 8 etc...
Comme je crée plusieurs sortes d'exercices chaque jour/semaine, je dois aller à la photocopieuse et mettre à chaque fois le nombre de photocopies. C'est un peu long, des fois je me trompe...
En créant des fichiers PDF avec déjà le bon nombre de feuilles dans le PDF, quand j'arrive avec ma clé USB et mes 10 exercices, je peux juste tout sélectionner (1 clic) puis taper sur Imprimer (1 exemplaire de chaque PDF donc). Je gagne pas mal de temps ainsi
Bref, pour l'erreur, je pense aussi que PageUN ne devrait pas être $String, mais je ne sais pas trop quoi faire.
Pour la macro, je n'ai pas de message d'erreur. Il exporte en PDF tout le document publisher (qui possède 3 pages).
Marsh Posté le 05-10-2022 à 18:54:13
Je reste sur mon analyse que PageUN est déclaré string alors que ça devrait probablement être un objet représentant 1 page.
Marsh Posté le 05-10-2022 à 19:02:24
Je suis toujours d'accord avec toi, mais je sais pas comment faire
Marsh Posté le 05-10-2022 à 19:53:47
ben tu cherches le type de l'objet renvoyé par Pages(x).
Sinon, il me semble que tu peux déclarer une variable sans type :
Dim MaVariable
Marsh Posté le 05-10-2022 à 20:27:01
rufo a écrit : ben tu cherches le type de l'objet renvoyé par Pages(x). |
merci, je vais voir ça dès que je retrouve un peu de temps.
A bientôt
Marsh Posté le 09-10-2022 à 17:30:50
Suite des évènements...
Code :
|
Suivant tes conseils, j'ai déclaré PageUN comme une page, puis en-dessous (ligne5) je déclare que PageUN est la 1ère page du document en cours.
Sauf que...
Si je veux écrire PageUN.exportPDF etc... VB ne me propose pas ExportPDF, mais seulement ExportAsEmail + d'autres trucs.
Peut-être est-il impossible d'exporter en PDF une seule page parmi plusieurs ?
(cela dit, j'ai réussi à le faire via Publisher. C'est un peu long mais on peut exporter des pages sélectionnées en PDF).
Citation :
Ou encore, en très lourd : |
Merci de votre aide !!
Marsh Posté le 09-10-2022 à 21:38:59
Je ne pense pas que ça soit possible. Quand avec Word, on veut sauvegarder un fichier en PDF, c'est tout le document et pas juste un.
Par contre, ce que tu peux faire, c'est faire une pacro qu, à partir d'un doc Publisher, va créer un nouveau doc Publisher que tu va remplir avec les pages que tu veux et en nombre que tu veux. Ensuite, tu sauvegarde le ficheir en PDF et après, tu supprimer le doc Publisher temporaire que tu as créé juste pour l'export.
Marsh Posté le 16-10-2022 à 13:59:05
Hello !
Après 1 semaine un peu OFF, j'ai revu ce que tu m'as dit, et j'arrive à pas mal de trucs, mais pas tout
Je rappelle l'objectif :
- créer un PDF avec X fois la 1ère page + Y fois la 2ème page d'un document Publisher.
J'arrive à créer un nouveau Pub (quoique... en réalité j'ouvre un document pub que j'ai mis déjà là (et qui est "vide" ), j'arrive créer les pages, à copier les 2 pages, mais je n'arrive jamais à mettre les X pages1 PUIS les Y pages2 ENSUITE. y a toujours un truc qui colle pas.
Voici mon code, si quelqu'un veut bien checker.
(je me tâte toujours entre utiliser Add ou Duplicate )
Code :
|
Marsh Posté le 16-10-2022 à 16:27:23
Ben faut juste faire plusieurs fois la copie de la page 1 puis plusieurs fois la copie de la page 2. Là, tu le fais qu'une fois la copie des 2 pages, faut donc pas t'étonner de les avoir qu'une fois
Marsh Posté le 16-10-2022 à 16:34:24
Nope !
Je fais (Nex1 - 1) fois la 1ère page (c'est à dire 7 fois, comme annoncé au-dessus). Et (Nex2 - 1) la 2ème page.
Le résultat ?
J'obtiens A B A A A A A A A !!
Au lieu de A A A A A A A B B B
Marsh Posté le 16-10-2022 à 16:46:13
Bizarre, je vois pas la boucle. J'imagine que ça vient du paramètre Count:=(Nex1 - 1)
Pour le coup d'avoir B en 2ème page, ça vient probablement de cette ligne :
Tempo.ActiveDocument.Pages(2).Shapes.Paste
Tu colles la page en page 2. Faut changer l'indice.
Marsh Posté le 16-10-2022 à 17:11:53
rufo a écrit : Bizarre, je vois pas la boucle. J'imagine que ça vient du paramètre Count:=(Nex1 - 1) |
Tu penses au "After:=2" c'est ça ?
J'ai essayé de copier/coller d'abord la page2, et ensuite la page1, mais je me suis emmelé quelque part...
De toutes façons, je pense qu'il y a un problème plus général. Je pensais utiliser Duplicate ou Copy/Paste, mais là il y a les 2. Je crois que j'ai perdu un peu le fil...
Marsh Posté le 16-10-2022 à 18:26:09
Pas du tout, je pense au Tempo.ActiveDocument.Pages(2).Shapes.Paste
Y'a un indice 2 pour le Pages. Je pense qu'il faut changer cet indice. Mais ça peut peut-être se faire effectivement avec le After. Mais ça, c'est de la doc : lis-la pour comprendre exactement comment fonctionnent les fonctions que tu utilises au lieu de tâtonner.
Marsh Posté le 16-10-2022 à 19:03:27
rufo a écrit : Pas du tout, je pense au Tempo.ActiveDocument.Pages(2).Shapes.Paste |
Oui, tu as raison. Le souci, c'est que je fais ça un peu à la va-comme-j'te-pousse mais aussi que la doc est pas top top. Sur le site de Microsoft, la méthode Open n'est pas visible, je l'ai découverte avec la méthode Close
En fait, c'est plus un site pour gens qui savent DEJA programmer plutôt que pour apprendre. Pas grave, j'y arriverai quand même.
Merci encore !
Marsh Posté le 16-10-2022 à 19:16:49
rufo a écrit : Bizarre, je vois pas la boucle. J'imagine que ça vient du paramètre Count:=(Nex1 - 1) |
J'ai essayé de mettre entre parenthèses (Nex1 + 1) ,mais il aime pas.
J'ai tenté de copier d'abord la page(2), et là, ça marche presque !
Code :
|
J'obtiens A A A A A A A B vide vide !
J'ai donc fini par trouver !
DuplicateObjectsOnPage:=1 copiait la 1ère page, alors que je voulais la 2ème page -> valeur = 2
Au final, ça donne :
Code :
|
Marsh Posté le 16-10-2022 à 19:17:36
Ma semaine prochaine, je tente de créer une boîte de dialogue qui me demande combien d'exemplaires je veux, parce que pour l'instant, je modifie la macro à chaque fois
Marsh Posté le 17-10-2022 à 07:50:13
https://learn.microsoft.com/fr-fr/o [...] .pages.add
Elle me paraît plutôt bien faite cette doc : très claire sur ce que font les paramètres
Par contre, oui, elle n'est pas faite pour apprendre : c'est juste pour renseigner sur les objets, méthodes et fonctions. Mais des sites qui apprennent le VBA, tu vas en trouver (openclassroom par ex).
Marsh Posté le 17-10-2022 à 11:48:28
rufo a écrit : https://learn.microsoft.com/fr-fr/o [...] .pages.add |
Je vais effectivement sur la page que tu donnes, c'ets pas mal tant qu'on sait comment chercher
Je ne me souvenais plus pour OpenClassroom, je vais revoir ça, merci !
Marsh Posté le 17-10-2022 à 17:55:56
Openclassroom n'a pas (plus) l'air de faire ça apparemment ! Pas mal de langages, mais il ne connait pas "VBA", ou alors j'ai mal cherché !
Marsh Posté le 17-10-2022 à 18:41:38
Tu peux jeter un oeil ici même si c'est pour Excel : https://www.excel-pratique.com/fr/vba
Marsh Posté le 17-10-2022 à 18:56:07
rufo a écrit : Tu peux jeter un oeil ici même si c'est pour Excel : https://www.excel-pratique.com/fr/vba |
J'étais tombé dessus dans mes recherches.
Merci, je vais voir ça de plus près maintenant que j'ai un peu "démarré".
Marsh Posté le 17-10-2022 à 22:16:55
Publisher 2007, le coût d'une licence publisher 2022 serait ridicule pour ta boite, c'est quoi ce bordel ?
Marsh Posté le 17-10-2022 à 22:38:55
gatsu35 a écrit : Publisher 2007, le coût d'une licence publisher 2022 serait ridicule pour ta boite, c'est quoi ce bordel ? |
Alors :
-1- c'est pas ma boîte, c'est perso
-2- j'ai toujours mon windows 7 qui marche très bien
-3- dès que je change de PC, je passerai à des versions supérieures (mais l'Education Nationale me les paiera pas )
Marsh Posté le 18-10-2022 à 06:26:57
on n'a pas la même notion de Pc qui marche très bien
Et windows 7, il faut vraiment l'upgrade là, car on est vraiment en dehors du temps
Marsh Posté le 18-10-2022 à 10:39:28
Si je te dis que je connais quelques systèmes où je bosse qui sont encore sous Win 3.1, tu vas faire un arrêt cardiaque...
Ce sont des trucs pas portables et encore opérationnels.
Marsh Posté le 18-10-2022 à 11:57:49
Disons que pour de la bureautique (je ne joue plus, ou alors à des vieux jeux, ou alors des simu en ligne en tour par tour), mon PC de 2013 tourne sans problème, mon Win 7 tourne sans jamais planter.
Je n'utilise pas mon PC pour regarder en streaming, je n'ai pas besoin de vitesse ou de gros calculs.
Je n'ai pas de raison objective pour changer. Je ne pensais pas qu'il durerait autant, mais y a rien qui déconne
Marsh Posté le 18-10-2022 à 12:00:13
rufo a écrit : Si je te dis que je connais quelques systèmes où je bosse qui sont encore sous Win 3.1, tu vas faire un arrêt cardiaque... |
A la différence près, c'est ce que ce Windows 3.1 n'est pas en réseau contrairement au PC Windows 7 de ce topic.
demars a écrit : Disons que pour de la bureautique (je ne joue plus, ou alors à des vieux jeux, ou alors des simu en ligne en tour par tour), mon PC de 2013 tourne sans problème, mon Win 7 tourne sans jamais planter. |
Le soucis, ce sont les failles de sécurité. Ton PC est connecté à Internet or il ne bénéficie plus d'aucune mise à jour Windows depuis 2 ans.
Marsh Posté le 18-10-2022 à 12:06:59
C'est pas faux
Mais il marche bien, c'est ça qu'est ennuyeux. Un truc qui marche bien, mais qu'il faudrait changer
Marsh Posté le 18-10-2022 à 13:46:38
Un PC ça ne ralentit pas avec le temps (enfin sauf si on y installe des tas de saloperies), ça devient juste obsolète avec l'apparition des nouveaux logiciels et besoins.
Donc si toi tu en fais la même chose qu'il y a 10 ans, il fonctionnera de façon toute aussi satisfaisante qu'à l'époque .
Concernant les failles logicielles, 99% des risques sont liés à l'utilisation, si ton PC est derrière un routeur correctement configuré et que tu ne lances pas toutes les saloperies que tu reçois par mail, ça ne risque pas grand chose même avec un vieil OS.
Et l'âge du PC n'empêche pas d'avoir un firewall et/ou un antivirus correctement mis à jour.
A la rigueur tu aurais pu faire l'upgrade en Windows 8 ou supérieur, mais je comprends que tu ne veuilles pas changer un truc qui fonctionne pour tes besoins.
Je simplifie en excluant les trucs genre : risques de panne accru avec l'âge, sites Internet de plus en plus lourds, logiciels qui se mettent à jour tous seuls de plus en plus lourds aussi... Sinon le débat devient sans fin.
Marsh Posté le 18-10-2022 à 15:01:38
slr56 a écrit : |
heu...
Marsh Posté le 01-10-2022 à 17:36:11
Je cherche de l'aide sur les macros Publisher (2007 si possible).
Je propose de mettre ici, en tête de topic, les macros trouvées et vérifiées, de telle façon, que si des vieux comme moi s'y intéresse, ils puissent y trouver leur bonheur
En effet, sur le net, très peu de ressources, sachant que Publisher est (très) peu utilisé, notamment au niveau des macros.
Je m'en sers uniquement pour le boulot et je fais souvent des actions qui nécessitent plusieurs clics, et ceci pas mal de fois d'affilée (Save AS, Exporter en PDF, etc...).
J'ai un peu fouiné partout (ici, développez.net, même des newsgroups ^^) mais il y a peu de ressources et/ou de personnes pour aider.
Message édité par demars le 25-10-2022 à 18:45:10