Macros MS Publisher 2007 (Topic Unique ?)

Macros MS Publisher 2007 (Topic Unique ?) - VB/VBA/VBS - Programmation

Marsh Posté le 01-10-2022 à 17:36:11    

[:louisledeboucheur]

 

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
Reply

Marsh Posté le 01-10-2022 à 17:36:11   

Reply

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 :
  1. Sub SauverEnPDF()
  2.     Dim chemin As String
  3.     Dim pdfpathAndName As String
  4.         chemin = ActiveDocument.Name
  5.         pdfpathAndName = Left(chemin, Len(chemin) - 3)
  6.         ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, "D:\Imprimer\" & pdfpathAndName & "pdf", pbIntentPrinting, True, -1, -1, -1, -1, -1, -1, 8
  7. End Sub
 

-2- Exporter en PDF en X exemplaires, demandé par une boîte de dialogue

Code :
  1. Sub SauverPDFAvecBoiteDeDialogue()
  2.     Dim chemin, pdfpathAndName, Doc As Page, Npages As Byte
  3.         Npages = InputBox("Combien ?", "Titre", 1)
  4.             Set Doc = ActiveDocument.Pages(1)
  5.             chemin = ActiveDocument.Name
  6.             pdfpathAndName = Left(chemin, Len(chemin) - 3)
  7.             ActiveDocument.Save
  8.             ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, _
  9.             "D:\Imprimer\" & pdfpathAndName & "pdf", _
  10.             pbIntentPrinting, True, -1, -1, -1, -1, -1, -1, Npages
  11. End Sub
 

-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 :
  1. Sub Sauver2PagesPDF()
  2.     Dim chemin As String, pdfpath As String, page1 As Page, page2 As Page, Tempo As New Publisher.Application, Nex1 As Long, Nex2 As Long, PageNew1 As Page, PageNew2 As Page
  3.     'Tempo est un document temporaire PUb qui sera fermé à la fin de la macro
  4.         Set page1 = ActiveDocument.Pages(1)
  5.         Set page2 = ActiveDocument.Pages(2)
  6.             chemin = ActiveDocument.Name
  7.             pdfpath = Left(chemin, Len(chemin) - 3)
  8.             'les 2 nombres à rentrer (s'il y a 2 pages)
  9.             Nex1 = 7
  10.             Nex2 = 3
  11.             Tempo.Open Filename:="D:\Imprimer\test.pub"
  12.                 With ActiveDocument
  13.                     .Pages(2).Shapes(1).Copy
  14.                     Tempo.ActiveDocument.Pages(2).Shapes.Paste
  15.                     Set PageNew2 = Tempo.ActiveDocument.Pages.Add(Count:=(Nex2 - 1), After:=2, DuplicateObjectsOnPage:=2)
  16.                 End With
  17.                 With ActiveDocument
  18.                     .Pages(1).Shapes(1).Copy
  19.                     Tempo.ActiveDocument.Pages(1).Shapes.Paste
  20.                     Set PageNew1 = Tempo.ActiveDocument.Pages.Add(Count:=(Nex1 - 1), After:=1, DuplicateObjectsOnPage:=1)
  21.                 End With
  22.                        Tempo.ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, "D:\Imprimer\" & pdfpath & "pdf"
  23.         Tempo.ActiveDocument.Close
  24.         Set Tempo = Nothing
  25. End Sub
 

-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 :
  1. Sub Sauver2PagesPDFAvecBoiteDeDialogue()
  2.     Dim chemin, pdfpath As String, page1, page2, PageNew1, PageNew2 As Page, Tempo As New Publisher.Application, _
  3.     Npage1, Npage2 As Long
  4.         Set page1 = ActiveDocument.Pages(1)
  5.         Set page2 = ActiveDocument.Pages(2)
  6.             chemin = ActiveDocument.Name
  7.             pdfpath = Left(chemin, Len(chemin) - 3)
  8.             Npage1 = InputBox("Combien de page1 ?", "Titre", 1)
  9.             Npage2 = InputBox("Combien de page2 ?", "Titre", 1)
  10.                  Tempo.Open Filename:="D:\Imprimer\test.pub"
  11.                     With ActiveDocument
  12.                         .Pages(2).Shapes.Range.Copy
  13.                             Tempo.ActiveDocument.Pages(2).Shapes.Paste
  14.                             Set PageNew2 = Tempo.ActiveDocument.Pages.Add(Count:=(Npage2 - 1), After:=2, DuplicateObjectsOnPage:=2)
  15.                         .Pages(1).Shapes.Range.Copy
  16.                             Tempo.ActiveDocument.Pages(1).Shapes.Paste
  17.                             Set PageNew1 = Tempo.ActiveDocument.Pages.Add(Count:=(Npage1 - 1), After:=1, DuplicateObjectsOnPage:=1)
  18.                     End With
  19.                 Tempo.ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, _
  20.                     "D:\Imprimer\" & pdfpath & "pdf"
  21.             Tempo.ActiveDocument.Close
  22.         Set Tempo = Nothing
  23. End Sub


Message édité par demars le 27-10-2022 à 22:25:40
Reply

Marsh Posté le 01-10-2022 à 17:36:37    

réservé bis

Reply

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 ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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).


Message édité par demars le 03-10-2022 à 21:25:51
Reply

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... :/


Message édité par rufo le 04-10-2022 à 09:32:41

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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 :o
 
Même si l'espoir est faible, tu devrais essayer de poser explicitement tes questions et montrer ce qui coince dans tes essais [:spamafote]


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

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 :D
Je poste ça d'ici demain, j'suis au taf, là !


Message édité par demars le 04-10-2022 à 11:52:45
Reply

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 :
  1. Sub Sauver1()
  2.     Dim chemin As String
  3.     Dim pdfpathAndName As String
  4.         chemin = ActiveDocument.Name
  5.         pdfpathAndName = Left(chemin, Len(chemin) - 3)
  6.         ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, _
  7.         "D:\Imprimer\" & pdfpathAndName & "pdf", _
  8.         pbIntentPrinting, True, -1, -1, -1, -1, -1, -1, 8
  9. End Sub


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 :
  1. Sub Sauver2()
  2.     Dim chemin As String
  3.     Dim pdfpathAndName As String
  4.     Dim PageUN As String
  5.             With ActiveDocument.Pages(1)
  6.             PageUN = .PageNumber
  7.         chemin = ActiveDocument.Name
  8.         pdfpathAndName = Left(chemin, Len(chemin) - 3)
  9.         ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, _
  10.         "D:\Imprimer\" & pdfpathAndName & "pdf", _
  11.         pbIntentPrinting, True, -1, -1, -1, -1, -1, -1, 4
  12.         PageUN.ExportAsFixedFormat pbFixedFormatTypePDF, _
  13.         "D:\Imprimer\" & pdfpathAndName & "1" & "pdf", _
  14.         pbIntentPrinting, True, -1, -1, -1, -1, -1, -1, 8
  15. End Sub


Merci pour votre aide !


Message édité par demars le 04-10-2022 à 22:20:50
Reply

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 ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-10-2022 à 23:00:31   

Reply

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).  [:hotcat]


Message édité par demars le 05-10-2022 à 11:22:48
Reply

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-10-2022 à 19:02:24    

Je suis toujours d'accord avec toi, mais je sais pas comment faire  [:hotcat]

Reply

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


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-10-2022 à 20:27:01    

rufo a écrit :

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


merci, je vais voir ça dès que je retrouve un peu de temps.
A bientôt ;)

Reply

Marsh Posté le 09-10-2022 à 17:30:50    

Suite des évènements...

 
Code :
  1. Sub Sauver2()
  2.     Dim chemin As String
  3.     Dim pdfpathAndName As String
  4.     Dim PageUN As Page
  5.         Set PageUN = ActiveDocument.Pages(1)
  6.             chemin = ActiveDocument.Name
  7.         pdfpathAndName = Left(chemin, Len(chemin) - 3)
  8.         ActiveDocument.Save
  9.         ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, _
  10.         "D:\Imprimer\" & pdfpathAndName & "pdf", _
  11.         pbIntentPrinting, True, -1, -1, -1, -1, -1, -1, 1
  12. End Sub


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 :


Si c'est bien impossible, me reste-t-il la possibilité de :
- dupliquer une (ou plusieurs) pages
- de créer un nouveau fichier PUB avec ce(s) page(s)
- d'exporter en PDF ce fichier

 

Ou encore, en très lourd :
- de dupliquer X fois ma page 1 DANS le même fichier
- de dupliquer X fois ma page 2 DANS le même fichier
etc...
- puis d'exporter ce fichier (méga-lourd) en PDF ?


Merci de votre aide !!
:jap:


Message édité par demars le 09-10-2022 à 17:31:06
Reply

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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  [:mur]
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  [:madoxav] )

Code :
  1. Sub Sauver2PagesPDF()
  2.     Dim chemin As String, pdfpath As String, page1 As Page, page2 As Page, Tempo As New Publisher.Application, _
  3.     Nex1 As Long, Nex2 As Long, lngPageID As Long, PageNew1 As Page, PageNew2 As Page
  4.         Set page1 = ActiveDocument.Pages(1)
  5.         Set page2 = ActiveDocument.Pages(2)
  6.             chemin = ActiveDocument.Name
  7.             pdfpath = Left(chemin, Len(chemin) - 3)
  8.             Nex1 = 7
  9.             Nex2 = 3
  10.             Tempo.Open Filename:="D:\Imprimer\test.pub"
  11.                 With ActiveDocument
  12.                     .Pages(1).Shapes(1).Copy
  13.                     Tempo.ActiveDocument.Pages(1).Shapes.Paste
  14.                     Set PageNew1 = Tempo.ActiveDocument.Pages.Add(Count:=(Nex1 - 1), After:=1, DuplicateObjectsOnPage:=1)
  15.                 End With
  16.                 With ActiveDocument
  17.                     .Pages(2).Shapes(1).Copy
  18.                     Tempo.ActiveDocument.Pages(2).Shapes.Paste
  19.                     Set PageNew2 = Tempo.ActiveDocument.Pages.Add(Count:=(Nex2 - 1), After:=2, DuplicateObjectsOnPage:=1)
  20.                 End With
  21.             Tempo.ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, _
  22.                     "D:\Imprimer\" & pdfpath & "pdf"
  23.                         Tempo.ActiveDocument.Close
  24.                         Set Tempo = Nothing
  25. End Sub


:jap:


Message édité par demars le 16-10-2022 à 13:59:29
Reply

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 :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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


Message édité par demars le 16-10-2022 à 16:35:52
Reply

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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)
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.


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...  [:vizera]

Reply

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-10-2022 à 19:03:27    

rufo a écrit :

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.


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 :o
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 !

Reply

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)
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.


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 :
  1. With ActiveDocument
  2.                     .Pages(2).Shapes(1).Copy
  3.                     Tempo.ActiveDocument.Pages(2).Shapes.Paste
  4.                     Set PageNew2 = Tempo.ActiveDocument.Pages.Add(Count:=(Nex2 - 1), After:=2, DuplicateObjectsOnPage:=1)
  5.                 End With
  6.                 With ActiveDocument
  7.                     .Pages(1).Shapes(1).Copy
  8.                     Tempo.ActiveDocument.Pages(1).Shapes.Paste
  9.                     Set PageNew1 = Tempo.ActiveDocument.Pages.Add(Count:=(Nex1 - 1), After:=1, DuplicateObjectsOnPage:=1)
  10.                 End With


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 :
  1. Sub Sauver2PagesPDF()
  2.     Dim chemin As String, pdfpath As String, page1 As Page, page2 As Page, Tempo As New Publisher.Application, _
  3.     Nex1 As Long, Nex2 As Long, PageNew1 As Page, PageNew2 As Page
  4.         Set page1 = ActiveDocument.Pages(1)
  5.         Set page2 = ActiveDocument.Pages(2)
  6.             chemin = ActiveDocument.Name
  7.             pdfpath = Left(chemin, Len(chemin) - 3)
  8.             Nex1 = 7
  9.             Nex2 = 3
  10.             Tempo.Open Filename:="D:\Imprimer\test.pub"
  11.                 With ActiveDocument
  12.                     .Pages(2).Shapes(1).Copy
  13.                     Tempo.ActiveDocument.Pages(2).Shapes.Paste
  14.                     Set PageNew2 = Tempo.ActiveDocument.Pages.Add(Count:=(Nex2 - 1), After:=2, DuplicateObjectsOnPage:=2)
  15.                 End With
  16.                 With ActiveDocument
  17.                     .Pages(1).Shapes(1).Copy
  18.                     Tempo.ActiveDocument.Pages(1).Shapes.Paste
  19.                     Set PageNew1 = Tempo.ActiveDocument.Pages.Add(Count:=(Nex1 - 1), After:=1, DuplicateObjectsOnPage:=1)
  20.                 End With
  21.                        Tempo.ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, _
  22.                        "D:\Imprimer\" & pdfpath & "pdf"
  23.         Tempo.ActiveDocument.Close
  24.         Set Tempo = Nothing
  25. End Sub

Reply

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 ;)

Reply

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 :o
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).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 17-10-2022 à 11:48:28    

rufo a écrit :

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 :o
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).


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 !

Reply

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é !

Reply

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


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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é".
 [:swedish chef]

Reply

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 ?


---------------
Blablaté par Harko
Reply

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 :D)

Reply

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 :D


---------------
Blablaté par Harko
Reply

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... :whistle:  
Ce sont des trucs pas portables et encore opérationnels.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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  [:souk]

Reply

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... :whistle:
Ce sont des trucs pas portables et encore opérationnels.

 


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.
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  [:souk]

 


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.

Message cité 1 fois
Message édité par slr56 le 18-10-2022 à 12:01:24

---------------
Configurations type du moment : https://forum.hardware.fr/hfr/Hardw [...] 1331_1.htm  https://www.jouannetphotographe.com
Reply

Marsh Posté le 18-10-2022 à 12:06:59    

C'est pas faux :D
Mais il marche bien, c'est ça qu'est ennuyeux. Un truc qui marche bien, mais qu'il faudrait changer  [:fabien27]

Reply

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 [:spamafote].

 

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.

Message cité 1 fois
Message édité par TotalRecall le 18-10-2022 à 13:47:47

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 18-10-2022 à 15:01:38    

slr56 a écrit :


 
 
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.
 


heu... :whistle:  


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed