Imprimer si condition

Bonjour le forum

J'ai une macro qui ne fonctionne pas, voilà

Je voudrais imprimer que si toutes les cellules en jaune soient remplies,

si une seule cellule est vide alors je ne peux imprimer.

Merci

8cmo-2563.xlsm (15.63 Ko)

Salut,

Je crois qu'avec ces deux instructions placées un peu partout, ça correspond à ce que tu désires

Cancel = True
Exit Sub

Cordialement

16cmo-2563-v1.xlsm (15.57 Ko)

Bonsoir,

Un peu plus concis :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim PlgOblig
Dim I As Byte
Dim Rep As Integer
PlgOblig = Array("B2", "B9", "C17", "C21", "D4", "F13", "G6")
For I = 0 To UBound(PlgOblig)
    If Range(PlgOblig(I)) = "" Then
        MsgBox "Insérer une donnée dans la cellule " & Range(PlgOblig(I)).Address
        Cancel = True
    End If
Next I
If Not Cancel Then Rep = MsgBox("Etes vous sûr de vouloir imprimer cette feuille?", vbYesNo + vbQuestion, "")
If Rep = vbYes Then Cancel = False Else Cancel = True
End Sub

Bonne soirée

Bonsoir Yvouille & cousinhub

C'est super, ça fonctionne, j'ai rajouté 2 checboxs et je voudrais m'inspirer du même principe

si une des checkboxs n'est pas coché "true" annulera l'action d'imprimer

Merci

13cmo-2563.xlsm (22.49 Ko)

Bonsoir,

Essaie ainsi :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim PlgOblig
Dim I As Byte
Dim Rep As Integer
Dim ObjChk As OLEObject

PlgOblig = Array("B2", "B9", "C17", "C21", "D4", "F13", "G6")
For I = 0 To UBound(PlgOblig)
    If Range(PlgOblig(I)) = "" Then
        MsgBox "Insérer une donnée dans la cellule " & Range(PlgOblig(I)).Address
        Cancel = True
    End If
Next I
For Each ObjChk In Sheets("Week15").OLEObjects
    If TypeOf ObjChk.Object Is MSForms.CheckBox Then
        If ObjChk.Object.Value = True Then Cancel = False: Exit For
    End If
    Cancel = True
Next ObjChk

If Not Cancel Then Rep = MsgBox("Etes vous sûr de vouloir imprimer cette feuille?", vbYesNo + vbQuestion, "")
If Rep = vbYes Then Cancel = False Else Cancel = True
End Sub

Bonne soirée

PS, si tu as d'autres impératifs, mets-les tous de suite....

Bonjour cousinhub

Tout d'abord un big Merci

J'ai rajouté un Msgbox, mais il affiche 2 messages,

peut-on y remedier et faire qu'un seul message avec " Vous devez cocher la case oui ou la case Non "

l'explication dans la feuille excel

Merci

9cmo-2563.xlsm (47.46 Ko)

Bonjour,

Tu mets ta ligne de code MsgBox comme ceci :

For Each ObjChk In Sheets("Week15").OLEObjects
    If TypeOf ObjChk.Object Is MSForms.CheckBox Then
        If ObjChk.Object.Value = True Then Cancel = False: Exit For
    End If
    MsgBox "Vous devez cocher la case " & ObjChk.Name
    Cancel = True
Next ObjChk

PS : non testé....

Re cousinhub

ça ne fonctionne pas, il y a toujours 2 fenêtres qui s'ouvre

Re-,

Je savais que j'aurais du tester....

Peut-être comme ça :

    Dim I As Byte
For Each ObjChk In Sheets("Week15").OLEObjects
    If TypeOf ObjChk.Object Is MSForms.CheckBox Then
        If Not ObjChk.Object Then I = I + 1
    End If
    If I = 2 Then Cancel = True: MsgBox "Vous devez cocher une case oui/non"
Next ObjChk
     

Toujours pas testé.....

Re cousinhub

J'ai testé mais en vain, si je coche "Non" je peux imprimer ma feuille

en revanche si je coche "Oui", alors le système me demande de cocher !!!

Merci

12cmo-2563.xlsm (58.26 Ko)

Re-,

Il n'a jamais été question auparavant que ces boutons d'option valideraient ou non l'impression...

Pour moi, il suffisait de cliquer sur l'un des deux....

Avant que je ne te réponde, il faut que tu me donnes "TOUTES" tes conditions....

Ce sera la dernière fois que je répondrai, car j'ai horreur des questions à tiroir....(ça commence par un problème, et au bout du fil, on a fait tout un fichier, avec une centaine de fils.......)

@ te relire

Rechercher des sujets similaires à "imprimer condition"