IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Problème Macro Publisher 2021 (anciennement sur Pub 2007)


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Août 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Août 2015
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Problème Macro Publisher 2021 (anciennement sur Pub 2007)
    Bonjour,
    Je viens d'installer Publisher 2021 sur mon nouveau PC et essayé de lancer une macro qui fonctionnait très bien (ou presque) sur mon vieux PC (Win7 - Pub 2007). C'ets une macro qui crée un fichier PDF regroupant toutes les feuilles que je veux imprimer (ensuite sur photocopieuse) afin de gagner du temps.
    Or, cette macro fonctionne désormais bizarrement !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Sub Sauver2PagesPDF_Box()
        Dim chemin, pdfpath As String, page1, page2, PageNew1, PageNew2 As Page, Tempo As New Publisher.Application, _
        Npage1, Npage2 As Long
            Set page1 = ActiveDocument.Pages(1)
            Set page2 = ActiveDocument.Pages(2)
                chemin = ActiveDocument.Name
                pdfpath = Left(chemin, Len(chemin) - 3)
                Npage1 = InputBox("Combien de page1 ?", "Titre", 1)
                Npage2 = InputBox("Combien de page2 ?", "Titre", 1)
                    Tempo.Open Filename:="D:\Autres\Imprimer\test.pub"
                        With ActiveDocument
                            .Pages(2).Shapes.Range.Copy
                                Tempo.ActiveDocument.Pages(2).Shapes.Paste
                                Set PageNew2 = Tempo.ActiveDocument.Pages.Add(Count:=(Npage2 - 1), After:=2, DuplicateObjectsOnPage:=2)
                            .Pages(1).Shapes.Range.Copy
                                Tempo.ActiveDocument.Pages(1).Shapes.Paste
                                Set PageNew1 = Tempo.ActiveDocument.Pages.Add(Count:=(Npage1 - 1), After:=1, DuplicateObjectsOnPage:=1)
                        End With
                    Tempo.ActiveDocument.ExportAsFixedFormat pbFixedFormatTypePDF, _
                        "E:\Autres\Imprimer\" & pdfpath & "pdf"
                Tempo.ActiveDocument.Close
            Set Tempo = Nothing
    	ActiveDocument.Save	
    End Sub
    Si je lance la macro en étant sur la 1ère page, et que je demande 5 pages 1 et 3 pages 2, la pdf est bien créé mais les pages 1 sont vides !
    Si je lance la macro depuis la page 2, les pages 2 sont vides !

    Auriez-vous une idée de ce qui peut bien se passer ? J'ai fait ces macros il y a 2 ans environ, et j'ai déjà un peu oublié certaines choses, mais je ne pensais pas que ça marcherait moins bien avec la nouvelle version de Pub.

    Merci d'avance !

  2. #2
    Membre éprouvé Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 627
    Points : 991
    Points
    991
    Par défaut
    Hello,

    je n'ai pas publisher et ne programme pas avec, mais 2 ou 3 petites choses me gène dans la logique de cette macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim    Dim chemin, pdfpath As String... etc
    - Quand une déclaration de variable n'est pas suivi d'un type, elle devient automatiquement un variant. Pas grave en soit, mais ici seul pdfpath est un string, chemin est un variant... idem pour les autres déclarations où vous ne spécifiez pas explicitement ce que c'est.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim chemin As String, pdfpath As String
        Dim page1 As Page, page2 As Page
        Dim PageNew1 As Page, PageNew2 As Page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Dim Npage1 as Byte , Npage2 As Byte
    devrait suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Dim Tempo As New Publisher.Application
    - Si je ne me trompe pas, "Tempo As New Publisher.Application" permet de créer une nouvelle instance de publisher, non ? Pourquoi ne pas simplement ouvrir le document en plus et passer de l'un à l'autre dans la même instance ?
    - Qu'y a t'il dans "test.pub" ?
    - Ensuite c'est l'ordre des copies. Pourquoi commencer par la page 2 ?
    - Si vous mettez 1 dans les boites de dialogues rien ne sera copié. Par exemple : si Npage1 = 1 comme vous écrivez (Npage1 - 1) ça fait 0 page
    - Et enfin "Tempo.ActiveDocument" ça ça me fait frissonner. On ne sais pas si c'est le doc temporaire ou le doc actif qui est utilisé.

    Perso j'ajouterais avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Pages(1).Shapes.Range.Copy
    pour être sûr de copier les bonnes shapes

    Bon courage
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  3. #3
    Futur Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Août 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Août 2015
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Quelle réponse détaillée, merci !!

    Citation Envoyé par Nain porte koi Voir le message
    je n'ai pas publisher et ne programme pas avec, mais 2 ou 3 petites choses me gène dans la logique de cette macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim    Dim chemin, pdfpath As String... etc
    - Quand une déclaration de variable n'est pas suivi d'un type, elle devient automatiquement un variant. Pas grave en soit, mais ici seul pdfpath est un string, chemin est un variant... idem pour les autres déclarations où vous ne spécifiez pas explicitement ce que c'est.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim chemin As String, pdfpath As String
        Dim page1 As Page, page2 As Page
        Dim PageNew1 As Page, PageNew2 As Page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Dim Npage1 as Byte , Npage2 As Byte
    devrait suffire
    C'ets ce je faisais au tout début, mais en voyant d'autres bouts de codes avec cette façon de faire plus rapide, je pensais que c'était plus "logique". Je vais revenir à la base, merci pour l'explication.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Dim Tempo As New Publisher.Application
    - Si je ne me trompe pas, "Tempo As New Publisher.Application" permet de créer une nouvelle instance de publisher, non ? Pourquoi ne pas simplement ouvrir le document en plus et passer de l'un à l'autre dans la même instance ?
    - Qu'y a t'il dans "test.pub" ?
    - Ensuite c'est l'ordre des copies. Pourquoi commencer par la page 2 ?
    - Si vous mettez 1 dans les boites de dialogues rien ne sera copié. Par exemple : si Npage1 = 1 comme vous écrivez (Npage1 - 1) ça fait 0 page
    - Et enfin "Tempo.ActiveDocument" ça ça me fait frissonner. On ne sais pas si c'est le doc temporaire ou le doc actif qui est utilisé.
    Dans Publisher il n'y a pas plusieurs onglets comme dans Excel par exemple. Il y a UN document qui peut contenir X pages, mais pas plusieurs documents. C'est pourquoi j'avais créé dans un répertoire un test.pub qui ne contient qu'une page vide et rien d'autre (et pour la macro avec 2 pages, 2 pages vides).
    J'avais commencé par la page 2, car je ne m'en sortais pas en commençant par la 1, de mémoire.
    Pour l'histoire du 1, effectivement ça posait problème, mais *pour l'instant*, ce n'est pas le plus ennuyeux.
    Tempo, c'est le temporaire. A ce propos, en relisant mes vieux posts, je me souviens que je n'avais pas réussi à créer un document Publisher avec la macro...
    Perso j'ajouterais avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Pages(1).Shapes.Range.Copy
    pour être sûr de copier les bonnes shapes
    Je vais voir cette semaine (je n'ai pas le temps ce soir), merci encore !

Discussions similaires

  1. vb6 ou vba - lenteur execution macro sur excel 2007
    Par Enigme dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/03/2010, 14h50
  2. Macros ouverture fenetre sur outlook 2007
    Par fastml dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 07/10/2008, 12h00
  3. Réponses: 8
    Dernier message: 29/09/2008, 21h23
  4. Pb d'insertion d'image avec une macro sur Excel 2007
    Par tigrou42 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/05/2007, 01h48
  5. [2007-VBA]Pb de macro d'ACCESS 2003 sur ACCESS 2007
    Par BORDEAUX4 dans le forum Access
    Réponses: 6
    Dernier message: 04/04/2007, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo