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

Macros et VBA Excel Discussion :

Détecter impression d'une page [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Par défaut Détecter impression d'une page
    Bonjour,

    J'aimerais détecter en vba le fait qu'une page d'un classeur Excel a été imprimée.
    J'ai utilisé l'événement BeforePrint de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
        If ActiveSheet.Name = "Impression" Then _
            ThisWorkbook.Worksheets("Impression").Cells(3, 8) = "Impression ok"
    End Sub
    Le problème est que si l'utilisateur affiche la boîte de dialogue d'impression puis clique sur 'Annuler' avant d'avoir imprimé, la procèdure ci-dessus s'est tout de même déroulée.
    Existe-t-il un moyen de savoir si la page a réellement été imprimée?

    Merci de votre aide.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Tu pourrais détourner la macros d'impression sur une macros perso qui gérerait l'impression. Tu peu soit imprimer directement sans laisser l'occasion d'annuler ou bien employer la boite de dialogue et intercepter le résultat après.
    A+

  3. #3
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    La mise en code d'une des idées de Leforestier (enfin je crois)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If ActiveSheet.Name = "Impression" Then 
       cancel=true
       Select Case MsgBox("Voulez-vous imprimer?", vbOKCancel + vbQuestion)
       Case vbOK
          Application.EnableEvents = False
         Sheets("Impression").printout
          Application.EnableEvents = true
       Case vbCancel
       MsgBox "annuler"
       End Select
    end if

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour Krovax,
    Sauf que ça devrais être dans un module général avec par exemple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ImprimePerso()
       If MsgBox("Voulez-vous imprimer?", vbOKCancel + vbQuestion) = vbOK Then
         Sheets("Impression").PrintOut
         Sheets("Impression").Cells(3, 8) = "Impression ok"
       End If
    End Sub
    Et assigner cette macro au bouton imprimer d'excel.

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bien compliquer d'assigner une macro perso a un bouton d'excel,non? (je ne sais aps vraiment je ne l'ai jamais fait)
    Mais il est vrai que l'interception de la commande avec un cancel=true est un peu la solution de facilité et sans doute pas la meilleur. Je crois qu'il serais temps que je m'intéresse a ceci. Si je trouve un lien je le transmettrai à rom1_am

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Mais non, mais non,
    >> Affichage >> Barre d'outils >> Personnaliser..
    Laisser la fenêtre ouverte et clic droit sur le bouton Imprimer et changer la macros..
    A+

  7. #7
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 18
    Par défaut
    Ok, désolé, j'avais mal compris.

    En effet, en testant si Application.Dialogs(xlDialogPrint).Show renvoit vrai ou faux, ça correspond tout à fait à ce que je recherchait. Ca marche nickel.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impression d'une page
    Par kcizth dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/06/2006, 12h50
  2. Impression d'une page
    Par davinout dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2006, 16h54
  3. [VB]infos complémentaires pour l'impression d'une page excel avec vb
    Par Jacen dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/04/2006, 15h57
  4. Impression d'une page HTML dans un JTextPane
    Par sozie9372 dans le forum Composants
    Réponses: 1
    Dernier message: 06/12/2005, 03h22

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