Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1020 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macros MS Publisher 2007 (Topic Unique ?)

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Macros MS Publisher 2007 (Topic Unique ?)

n°2427703
demars
Posté le 01-10-2022 à 17:36:11  profilanswer
 

[: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
mood
Publicité
Posté le 01-10-2022 à 17:36:11  profilanswer
 

n°2427704
demars
Posté le 01-10-2022 à 17:36:29  profilanswer
 

-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
n°2427705
demars
Posté le 01-10-2022 à 17:36:37  profilanswer
 

réservé bis

n°2427898
rufo
Pas me confondre avec Lycos!
Posté le 03-10-2022 à 20:14:07  profilanswer
 

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
n°2427903
demars
Posté le 03-10-2022 à 21:24:34  profilanswer
 

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
n°2427930
rufo
Pas me confondre avec Lycos!
Posté le 04-10-2022 à 09:29:56  profilanswer
 

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
n°2427933
TotalRecal​l
Posté le 04-10-2022 à 10:00:13  profilanswer
 

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
n°2427960
demars
Posté le 04-10-2022 à 11:52:32  profilanswer
 

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
n°2428042
demars
Posté le 04-10-2022 à 22:20:06  profilanswer
 

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
n°2428049
rufo
Pas me confondre avec Lycos!
Posté le 04-10-2022 à 23:00:31  profilanswer
 

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
mood
Publicité
Posté le 04-10-2022 à 23:00:31  profilanswer
 

n°2428080
demars
Posté le 05-10-2022 à 11:22:00  profilanswer
 

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
n°2428151
rufo
Pas me confondre avec Lycos!
Posté le 05-10-2022 à 18:54:13  profilanswer
 

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
n°2428152
demars
Posté le 05-10-2022 à 19:02:24  profilanswer
 

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

n°2428154
rufo
Pas me confondre avec Lycos!
Posté le 05-10-2022 à 19:53:47  profilanswer
 

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
n°2428155
demars
Posté le 05-10-2022 à 20:27:01  profilanswer
 

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

n°2428704
demars
Posté le 09-10-2022 à 17:30:50  profilanswer
 

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
n°2428705
rufo
Pas me confondre avec Lycos!
Posté le 09-10-2022 à 21:38:59  profilanswer
 

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
n°2429425
demars
Posté le 16-10-2022 à 13:59:05  profilanswer
 

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
n°2429431
rufo
Pas me confondre avec Lycos!
Posté le 16-10-2022 à 16:27:23  profilanswer
 

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
n°2429432
demars
Posté le 16-10-2022 à 16:34:24  profilanswer
 

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
n°2429433
rufo
Pas me confondre avec Lycos!
Posté le 16-10-2022 à 16:46:13  profilanswer
 

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
n°2429434
demars
Posté le 16-10-2022 à 17:11:53  profilanswer
 

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]

n°2429438
rufo
Pas me confondre avec Lycos!
Posté le 16-10-2022 à 18:26:09  profilanswer
 

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
n°2429441
demars
Posté le 16-10-2022 à 19:03:27  profilanswer
 

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 !

n°2429444
demars
Posté le 16-10-2022 à 19:16:49  profilanswer
 

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

n°2429445
demars
Posté le 16-10-2022 à 19:17:36  profilanswer
 

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

n°2429460
rufo
Pas me confondre avec Lycos!
Posté le 17-10-2022 à 07:50:13  profilanswer
 

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
n°2429504
demars
Posté le 17-10-2022 à 11:48:28  profilanswer
 

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 !

n°2429538
demars
Posté le 17-10-2022 à 17:55:56  profilanswer
 

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

n°2429541
rufo
Pas me confondre avec Lycos!
Posté le 17-10-2022 à 18:41:38  profilanswer
 

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
n°2429543
demars
Posté le 17-10-2022 à 18:56:07  profilanswer
 

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]

n°2429563
gatsu35
Blablaté par Harko
Posté le 17-10-2022 à 22:16:55  profilanswer
 

Publisher 2007, le coût d'une licence publisher 2022 serait ridicule pour ta boite, c'est quoi ce bordel ?


---------------
Blablaté par Harko
n°2429564
demars
Posté le 17-10-2022 à 22:38:55  profilanswer
 

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)

n°2429571
gatsu35
Blablaté par Harko
Posté le 18-10-2022 à 06:26:57  profilanswer
 

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
n°2429581
rufo
Pas me confondre avec Lycos!
Posté le 18-10-2022 à 10:39:28  profilanswer
 

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
n°2429587
demars
Posté le 18-10-2022 à 11:57:49  profilanswer
 

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]

n°2429588
slr56
Tout problème a sa solution.
Posté le 18-10-2022 à 12:00:13  profilanswer
 

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
n°2429589
demars
Posté le 18-10-2022 à 12:06:59  profilanswer
 

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]

n°2429604
TotalRecal​l
Posté le 18-10-2022 à 13:46:38  profilanswer
 

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
n°2429615
rufo
Pas me confondre avec Lycos!
Posté le 18-10-2022 à 15:01:38  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macros MS Publisher 2007 (Topic Unique ?)

 

Sujets relatifs
[BATCH MS-DOS] Code retour ERRORLEVEL différent suivant mode lancementPiloté en VBA, Word 2013 se comporte différemment que Word 2007/10
Souci de conversion de code 2007 vers 2013[Divers]Cherche compileur C++ sur MS Windows 7 32bits : => portmidi
Build sur Gnu/Linux pour MS Windows et/ou MacSelection de valeurs d'un champ TCD fonctionne sur 2007 mais pas 2010
[Excel 2007] Problème pour trouver le nombre de ligne d'une feuilleProblème Macro excel 2007
Boucle et opération sur string en MS-DOSComment répartir aléatoirement 500h par an avec EXCEL 2007?
Plus de sujets relatifs à : Macros MS Publisher 2007 (Topic Unique ?)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR