Partager via

Impression VBA

Anonyme
2021-08-30T16:08:15+00:00

Bonjour

j'aimerai utiliser

Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

au lieu de:

Application.Dialogs(xlDialogPrint).Show

dans la macro ci-dessus:

en effet une fois executé je recois un message d'erreur qui met en jaune ExecuteMso

Sub Print_Workstow()

'
Application.EnableEvents = False

 Sheets("Workstow").Visible = True
 Sheets("Workstow").Select
 Range("A5").Select
 MsgBox "1 page à imprimer. Specifier le nombre de copie que vous avez besoin"
 
'Application.Dialogs(xlDialogPrint).Show

Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
 
 Sheets("Workstow").Visible = False
 Sheets("Select Options").Select
'
    Range("A5").Select
   
Application.EnableEvents = True
'
End Sub

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

  1. Anonyme
    2021-09-14T14:48:14+00:00

    je viens de regler le problème:

    rien mettre dans Sheet2

    seulement mettre dans workbook:

    Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Application.OnTime Now, "my_Procedure"

    End Sub

    AfterPrint comme my_Procedure, autremnent dit il y avait conflit entre AfterPrint et my_Procedure. je croyais que AfterPrint est un event standard du VBA

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

  1. Anonyme
    2021-09-14T13:55:48+00:00

    Bonjour

    pour quitter le module d'impression je met le code suivant dans Sheet2:

    Sub AfterPrint()

    Sheets("Sheet1").Select 
    

    End Sub

    puis dans le workbook je met ce code:

    Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Application.OnTime Now, "AfterPrint" 
    

    End Sub

    effectivement je quitte le module d'impression avec succès et je reviens à Sheet1, mais je recois ce message :

    cannot run the macro http://chemin et non du fichier.xlsm!AfterPrint . The Macro may not be available in this workbook or all macros may be disabled

    avec vous une idée

    merci d'avance

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

  1. Anonyme
    2021-08-31T17:38:26+00:00

    j'ai resolu le problème de cette facon:

    j'ai crée deux autres macro: my_Procedure et my_Procedure2:

    Sub Print_Workstow()

    ' Bouton pour lancer l'impression qui appelle la macro my_Procedure

    Application.OnTime Now + TimeValue("00:00:02"), "my_Procedure"

    End Sub

    puis la macro my_Procedure qui appelle la macro my_Procedure2

    Sub my_Procedure()

    '

    ' my_Procedure Macro

    '

    MsgBox "1 page à imprimer. Specifier le nombre de copie que vous avez besoin, vous avez 15 seconde pour imprimer"

    Sheets("Sheet2").Visible = True

    Sheets("Sheet2").Select

    Range("A5").Select

    Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

    Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure2"

    End Sub

    et finalement la macro my_Procedure2

    Sub my_Procedure2()

    '

    ' my_Procedure2 Macro

    '

    Sheets("Sheet2").Visible = False

    '

    End Sub

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire

19 réponses supplémentaires

  1. Anonyme
    2021-08-30T16:31:16+00:00

    Effectivement ça fonctionne je vien de voir le premier problème, mais la page d’impression qui apparaît dans le module d’impression n’est pas workstow mais la page où se trouve le bouton lié à la macro

    Cordialement

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. DanielCo 107.7K Points de réputation
    2021-08-30T16:22:11+00:00

    Bonjour,

    Ca fonctionne ici. Quelle est le message d'erreur ?

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire