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 PowerPoint Discussion :

[Impression] Detection imprimante sélectionnée


Sujet :

VBA PowerPoint

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut [Impression] Detection imprimante sélectionnée
    Bonjour à tous, c'est la première fois que je poste sur ce Forum mais il m'a toujours été d'une grande aide !

    Je suis débutante en VBA et je travaille sur le débogage d'une macro existante sur PowerPoint qui permet d'imprimer en Noir&Blanc, 2 slides/page. En voici le principe:

    Lorsqu'on clique sur le bouton "ImpressionECOLO", une fenêtre de dialogue s'ouvre et on peut sélectionner les paramètres Noir&Blanc et 2 slides/page grâce à des radio boutons. Lorsqu'on valide les paramètres, ils sont enregistrés et le bouton "ImpressionECOLO" devient vert et est déclaré comme "Activé". Les paramètres sont bien pris en compte à l'impression. Tout ceci fonctionne très bien.

    Le problème intervient lorsque l'on sélectionne une autre imprimante (Fichier --> Imprimer --> Imprimante). Les paramètres d'impression sont réinitialisés (le document va s'imprimer en couleur) mais le bouton "ImpressionECOLO" lui reste Activé, ce qui est trompeur pour l'utilisateur.

    J'ai cherché comment détecter le changement de sélection d'imprimante, ou le clic sur le bouton de sélection d'imprimante, (afin de mettre le bouton en "Désactivé" lorsque ces événements arrivent) mais je n'ai pas trouvé quelque chose qui fonctionne

    Lorsque je teste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ImprimanteSelectionnee()
    ImprimanteActive = Application.ActivePrinter
     
    MsgBox (ImprimanteActive)
     
    End Sub
    Cela ne fonctionne pas car même lorsque l'on sélectionne une autre imprimante, l'imprimante active reste la même ! (J'ai testé en exécutant la commande ? Application.ActivePrinter mais quelque soit l'imprimante que je choisie, j’obtiens toujours la réponse "PDFCreator"). Et même si la valeur changeait, je ne saurais pas comment la tester étant donné que je ne connais pas la liste d'imprimante auxquelles auront accès les utilisateurs).

    Avez-vous une idée de la manière dont je peux procéder ? Votre aide me serait d'un grand secours !

  2. #2
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 909
    Par défaut
    Bonjour,

    Cette fonction renvoie l'imprimante sélectionnée par défaut de l'ordinateur.

    Je te conseille de regarder sur cette partie du forum où tu trouveras beaucoup de choses, je pense : http://www.developpez.net/forums/d43...ro-pdfcreator/

    La personne qui a écrit ce sujet propose des codes pour manipuler les pdf et les imprimantes.

    En espérant que cela t'aide,

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut
    Bonjour et merci pour ta réponse.

    J'ai regardé sur le lien la manière dont il enregistre l'imprimante active, et j'ai essayé cela:

    Dans une macro qui est censée s’exécuter une seule fois au début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub InitializeApp()
    Dim ImprimanteParDefaut As String
    ImprimanteParDefaut = Application.ActivePrinter
    End Sub
    Dans la macro qui contrôle l'image du bouton, ( je fais apparaitre un message pour tester dans un premier temps):

    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
    '#ImpressionGreen
    Sub GetImageBouton(control As IRibbonControl, ByRef image)
    ' détecte l'imprimante active
    ImprimanteActive = Application.ActivePrinter
     
        'Paramètre stocké dans les registres sui teste si le mode ImpressionECOLO a été sélectionné
        If GetSetting("HKEY_CURRENT_USER\Software\ImpressionECOLO", "activation") = "1" Then
            'Si oui, un trait vert apparait
            image = "AcceptInvitation"
        Else
            'Si non, une croix rouge apparait
            image = "DeclineInvitation"
        End If
     
        'Teste si l'imprimante active est la même que celle au départ
        If ImprimanteActive <> ImprimanteParDefaut Then
            MsgBox ("Vous avez changé d'imprimante active")
        End If
     
    End Sub
    Mais cela ne fonctionne pas, la boite de dialogue apparait à des moments incongrus (par exemple quand je clique sur Fichier) mais pas lorsque je sélectionne une autre imprimante.

    Je suis preneuse de toute autre piste de résolution

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut Autre piste
    Re-bonjour,

    J'essaye une autre méthode pour arriver au résultat: utiliser un évènement. Voici mon code dans un module de classe:

    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
    26
    27
    28
    29
    Option Explicit
     
    Public WithEvents App As Application
     
    ''J'essaye de régler le problème suivant : si l'utilisateur change d'imprimante active, les options sont comme "réinitialisées"
    ''(couleur...). Par conséquent, si l'utilisateur imprime de suite, même avec l'option écolo activée, la fiche sera imprimée en couleur.
    ''Cette fonction se lance à chaque début d'impression de PowerPoint. Du coup, juste avant l'impression on reprend
    ''en compte les critères écolo et donc l'impression est écolo. Normalement ! Mais ça ne marche pas.
     
    Private Sub App_PresentationPrint(ByVal Pres As Presentation)
     
    'Test si l'option écolo a été sélectionnée
    If GetSetting("HKEY_CURRENT_USER\Software\ImpressionEcolo", "activation") = 1 Then
     
        ActivePresentation.PrintOptions.FitToPage = msoTrue
     
       ' Met le document en noir et blanc
        ActivePresentation.PrintOptions.PrintColorType = ppPrintBlackAndWhite
     
        ' Met 2 slides/page
         Application.ActivePresentation.PageSetup.SlideOrientation = msoOrientationHorizontal
         Application.ActivePresentation.PageSetup.NotesOrientation = msoOrientationVertical
         Application.ActivePresentation.PrintOptions.OutputType = ppPrintOutputTwoSlideHandouts
     
          MsgBox "L'impression écolo a bien été prise en compte", vbMsgBoxHelpButton
     
    End If
     
    End Sub
    Mais le code ne fonctionne pas , Il est bien parcouru puisque lorsque je clique sur Imprimer, j'ai le message "L'impression écolo a bien été prise en compte" qui s'affiche, pourtant l'impression sort en couleur. Voyez-vous d'où vient le problème ??

Discussions similaires

  1. Impression sur une imprimante sélectionnée au préalable
    Par Spanish_ dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/04/2008, 11h23
  2. Procédure pour impression sur imprimante matricielle
    Par snakers13 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/10/2006, 17h55
  3. Réponses: 6
    Dernier message: 18/04/2006, 09h25
  4. pb detection imprimante
    Par fgo dans le forum Windows XP
    Réponses: 8
    Dernier message: 08/03/2006, 12h45
  5. [CR][ASP.NET] Impression sur imprimante partagée
    Par Frusciante8 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 27/01/2005, 12h03

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