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 :

bloquer menu imprimer [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut bloquer menu imprimer
    Bonjour.

    Est-il possible de faire en sorte qu'à l'ouverture d'un fichier Excel le code annule la possibilité d'imprimer via le menu "Fichier-Impression" ou par l'icone. Ceci forcera les utilisateurs à utiliser un bouton d'impression ayant des fonctions utiles pour l'année suivante.

    Naturellement, à la sortie du fichier, les fonctions devront être disponible à nouveau


    Merci à l'avance

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Il faut intercepter l'événement beforeprint dans le module Thisworkbook.

    Tout appel à l'impression ou l'aperçu sera alors intercepté.

    Code du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
        If printclick <> True Then
            Cancel = True
            Call affmsg("Veuillez utiliser le bouton IMPRESSION.")
        End If
    End Sub
    printclick est une variable public initialisée à true par le bouton Impression, qui lui doit pouvoir aller au bout de l'impression, puis remise à false à l'issue de cette impression contrôlée.

    (dans cet exemple l'affichage ds messages est faite par une procédure d'où le call mais pas indispensable)

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Bloquer impression
    Merci. C'est parfait


  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Bloquer impression
    Le bout de code de 78chris fonctionne bien mais bloque aussi mon bouton d'impression qui doit être utiliser par les responsables de dossiers.

    Le code doit bloquer la possibilité du menu fichier impression ou de l'icone sans bloquer l'impression à partir du bouton que j'ai créé.


    Merci à l'avance

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Relis mon message : il faut une variable public printclick que le code de ton bouton doit gérer comme indiqué.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Bloquer impression
    Alors c'est que je ne comprend pas bien le portion de votre message "variable public printclick que le code de ton bouton doit gérer comme indiqué".

    Je suis novice en vba...

    Merci pour la rapidité à laquelle vous avez répondu...

    dlight

  7. #7
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    vois le lien suivant au chapitre V, si c'est ça qui te pose problème :

    il faut utiliser l'instruction Public et la variable ...

    cordialement,

    Didier

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Bloquer impression
    Merci... Je vais lire et tester les explications en soirée

    Merci encore une fois pour la rapidité de vos réponses ...

    dlight

  9. #9
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Où est situé le code de ton bouton ? dans le module d'une feuille ou dans un module ?

    Tu dois déclarer la variable dans un module (tout en haut).

    Puis dans le code associé à ton bouton tu places tout au début
    et avant le end sub
    cela permet à ton code d'impression de désactiver l'interdiction puis de la remettre dès qu'il a terminé.

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Bloquer impression
    Merci encore une fois pour vos réponses. Votre savoir en VBA m'aide énormément...

    J'ai placé comme indiqué par 78chris le bout de code dans "before print". Si je comprend bien, "call" exécute une procédure sub portant le nom "affmsg" dans laquelle je peux placer, par exemple, un msgbox qui indique à l'utilisateur d'utiliser le bouton d'impression que j'ai créé.

    J'ai placé dans mon code d'impression (qui est dans le module 3) au tout début du code "printclick=true" et la fin "printclick=false".

    Si j'utilise "Fichier - imprimer", l'impression n'a pas lieu et un message m'indiquant d'utiliser mon bouton apparait. Lors de l'utilisation de mon bouton, le code fonctionne mais il m'affiche le message que j'ai indiqué dans affmsg.

    Je crois bien que je ne suis pas très loin de la solution mais j'ai encore besoin de votre aide...


    Merci encore une fois

    dlight le novice !

  11. #11
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Le call affmsg n'est pas nécessaire tu peux le remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Veuillez utiliser le bouton..."
    il ne doit pas être dans le code de ton bouton mais juste dans le code que je t'ai donné.

  12. #12
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Bloquer impression
    Je suis désolé mais aucune impression n'a lieu à la minute où il y a du code dans before print...

    Je résume:
    1- J'ai le sub dans before print. J'ai remplacé le affmsg par msgbox "veuillez..."
    2-Dans mon code de mon bouton, au début et à la fin du code j'ai printclick true/false

    Si je test fichier imprimer, le message apparait. C'est parfait

    Si j'utilise mon bouton, j'ai le même message et sans imprimer. Peut-être que mon code n'est pas bon au moment de l'impression?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.PageSetup.PrintArea = "$A$1:$P$64"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

    Merci encore une fois

    dlight un peu découragé

  13. #13
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Dans le module 3 tu dois avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public printclick As Boolean
    Option Explicit
     
    Sub bimprimer()
        printclick = True
        ActiveSheet.PageSetup.PrintArea = "$A$1:$P$64"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        printclick = False
    End Sub
    bimprimer à remplacer par ton nom de macros.
    Bien associer cette macro là au bouton.

    As-tu déclaré toutes tes variables ?
    Il est préférable de le faire.
    Mettre option explicit et lancer le debug : cela évite aussi une erreur de frappe dans le nom des variables.

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Bloquer Impression
    Merci encore une fois 78chris.

    Cette fois, c'est la bonne.

    Tu avais totalement raison, j'avais un problème dans mes variables et en les déclarants, j'ai rendu le fichier plus sécuritaire.

    Merci encore une fois de ta disponibilité et de tes nombreuses et très rapides réponses à mes noubreuses questions.


    dlight

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

Discussions similaires

  1. Comment ne pas imprimer mon menu, l'entete et le pied de pag
    Par cedre22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/03/2006, 10h36
  2. [HTML]Bloquer menu déroulant
    Par dj-julio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 13/01/2006, 10h51
  3. Réponses: 1
    Dernier message: 27/11/2005, 15h10
  4. Réponses: 1
    Dernier message: 01/11/2005, 04h24
  5. bloquer un tableau menu en haut a gauche
    Par totoranky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 05/10/2004, 02h07

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