Desactiver l'impression

Bonjour, j'ai un bout de code pour verrouiller l'impression mais je voudrais le faire par mon bouton sauf que cela verrouille tout

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Cancel = True

End Sub

je voudrais deverrouiller le verrouillage et a la fin reverrouiller l'impression

mon bouton

Private Sub CommandButton1_Click()

Dim i As Byte

Dim plage As Range

Unload Me

For i = 1 To 12

If Controls("checkbox" & i) = True Then Range(Controls("checkbox" & i).Tag).PrintOut

' impression en couleurs

With ActiveSheet.PageSetup.BlackAndWhite = False

End With

Next

End Sub

merci

Bonjour,

Utilises un variable servant d'interrupteur pour autoriser ou interdire l'impression :

Public Annuler As Boolean '<--- déclarée "Public" dans le module standard

Private Sub CommandButton1_Click()

    Dim i As Byte
    Dim plage As Range

    Annuler = False 'passer à faux avant l'impression...

    For i = 1 To 12

        If Controls("checkbox" & i) = True Then Range(Controls("checkbox" & i).Tag).PrintOut

        ' impression en couleurs
        ActiveSheet.PageSetup.BlackAndWhite = False

    Next

    Annuler = True '...puis à vrai après !

    Unload Me

End Sub

et dans le module du classeur :

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Cancel = Annuler

End Sub

oui ca j'ai trouvé mais je ne peux pas imprimer avec mon bouton

comment je l'integre dans ma macro

cela ne verrouille pas l'impression mais j'ai du mal positionné les informations

ou mettre cela exactement

Public Annuler As Boolean '<--- déclarée "Public" dans le module standard

et cela c'est bien dans le workbook

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Cancel = Annuler

End Sub

merci

Re,

et cela c'est bien dans le workbook

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Cancel = Annuler

End Sub

Oui, ce code doit être mis dans le module du classeur (ThisWorkbook) !

Public Annuler As Boolean '<--- déclarée "Public" dans le module standard

concernant la déclaration de la variable "Annuler", il faut ajouter un module standard (Insertion--->Module (pas module de classe)) et coller cette ligne de code tout en haut du module afin que la portée de cette variable soit de niveau classeur (accessible en tout point, autre module standard, module de classe, module du classeur et module des feuilles) la valeur de la variable sera ainsi modifiée dans ton code "Private Sub CommandButton1_Click()"

ça marche presque ça bloque après la fenêtre apercu

Private Sub CommandButton1_Click()

Dim i As Byte

Dim plage As Range

Annuler = False 'passer à faux avant l'impression...

For i = 1 To 12

If Controls("checkbox" & i) = True Then Range(Controls("checkbox" & i).Tag).PrintPreview

' impression en couleurs

ActiveSheet.PageSetup.BlackAndWhite = False

Next

Annuler = True '...puis à vrai après !

Unload Me

End Sub

Bonjour,

Postes un fichier exemple, une copie de ton fichier mais anonymisé (ça évite de devoir bricoler par la suite pour que le code fonctionne sur l'original)

voila

13planning.xlsm (158.12 Ko)
10planning-ep.xlsm (82.65 Ko)

Re,

Tout d'abords, le code modifié :

Private Sub CommandButton1_Click()

    Dim i As Byte
    Dim plage As Range

    Annuler = False 'passer à faux avant l'impression...

    For i = 1 To 12

        If Controls("checkbox" & i) = True Then

            With Worksheets("planning")

                With .PageSetup

                    'supprime pour définir la suivante
                    .PrintArea = ""
                    'défini la zone
                    .PrintArea = Range(Controls("checkbox" & i).Tag).Address
                    ' impression en couleurs
                    .BlackAndWhite = False

                End With

                '.PrintPreview
                .PrintOut

            End With

        End If

    Next

    'la boucle finie, supprime la zone d'impression
    Worksheets("planning").PageSetup.PrintArea = ""

    Annuler = True '...puis à vrai après !

    Unload Me

End Sub

ensuite, affiche l'UserForm en mode non modal (nécessaire pour fermer l'aperçu avant impression, mettre la propriété "ShowModal" à False) et pour finir, supprime l'espace parasite à la fin du nom de la feuille "planning" et après ça, ça devrait fonctionner

Rechercher des sujets similaires à "desactiver impression"