Bloquer Impression si champs vide(s)

Christophe

XLDnaute Occasionnel
Bonjour le forum,

Je souhaite pouvoir bloquer l'impression d'un document si tous les champs obligatoires ne sont pas renseignés. Exemple dans le fichier joint si un des 6 champs en vert n'étaient pas complétés. Idéalement une messagebox s'afficherait pour alerter l'utilisateur.

Merci par avance de votre iade. Bonne journée.

Christophe
 

Pièces jointes

  • Forum Impression.xls
    13.5 KB · Affichages: 75

wilfried_42

XLDnaute Barbatruc
Re : Bloquer Impression si champs vide(s)

Bonjour

Macro evennementielle
à placer dans le module Thisworkbook

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
      if activesheet.name = "Feuil1" then
            if range("B3")="" then cancel = true : exit sub
            if range("B4")="" then cancel = true : exit sub
            if range("B6")="" then cancel = true : exit sub
            if range("B7")="" then cancel = true : exit sub
            if range("B8")="" then cancel = true : exit sub
            if range("B10")="" then cancel = true : exit sub
     end if
End Sub
 

Christophe

XLDnaute Occasionnel
Re : Bloquer Impression si champs vide(s)

Bonjour Wilfried,

Merci de ton aide. Le code bloque effectivement l'impression.
Par contre mon ajout d'une ligne pour faire apparaître la Msgbox ne fonctionne pas :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Base" Then
If Range("D8") = "" Then Cancel = True: Exit Sub
MsgBox "Il manque le nom !"

End If
End Sub

Peux-tu stp em dire pourquoi ? Par avance merci.

Christophe
 

nicotlse31

XLDnaute Nouveau
Re : Bloquer Impression si champs vide(s)

Bonjour,
Super boulot pour le blocage d'impression du cas précédent !
J'ai une nouvelle étude de cas.
J'ai fait une macro pour imprimer le graphique correspondant à l'îlot en pré-définissant des zones d'impression pour facilter l'impression.
Le risque est d'avoir des valeurs différentes "Meilleur niveau atelier" (du mois en-cours) sur les graphiques si chacun imprime l'indicateur de son îlot sans attendre que tous le monde est remplis sa note du mois...
Le champ "Meilleur niveau atelier" U7 est une valeur max des cellules T7:T23
T7:T23 sont des recherhes horizontales pour afficher sur le graph la note du mois en-coursDans l'excel joint, j'aimerais bloquer l'impression des graphs de chaque îlot lorsqu'un ou plusieurs îlots n'a pas rempli sa note du mois en-cours !
Les graphs de chaque îlots commencent à la ligne 45
Merci d'avance
Nicolas
 

Pièces jointes

  • Bilan_2015 transmettre.xlsm
    89.8 KB · Affichages: 41
  • Bilan_2015 transmettre.xlsm
    89.8 KB · Affichages: 46
  • Bilan_2015 transmettre.xlsm
    89.8 KB · Affichages: 36

nicotlse31

XLDnaute Nouveau
Re : Bloquer Impression si champs vide(s)

Bonjour,
Vous m'aviez bien aidé à mettre au point une macro qui devait bloquer l'impression en cas de non remplissage de la valeur du mois en-cours.
Je voudrais modifier en bloquant l'impression uniquement pour le mois précédent (M-1)
Quels paramètres dois je changer à la macro du fichier joint?
Actuellement la macro est la suivante :
Sub Bouton1_Cliquer()
Dim Mois As Variant
Bis:
Mois = Month(Date)
Mois = InputBox("Entrée le n° du mois à imprimer", "Attente saisie", Mois) ' Peut être mis en commentaire aprés les tests
If Mois <> "" Then
If Not IsNumeric(Mois) Then MsgBox "Saisir le mois sous forme d'un nombre de 1 à 12": GoTo Bis
If CLng(Mois) <> Int(Mois) Then MsgBox "Saisir le mois sous forme d'un nombre de 1 à 12 sans décimal": GoTo Bis
If Mois < 1 Or Mois > 12 Then MsgBox "Saisir un nombre de 1 à 12 pour le numéro de mois": GoTo Bis

Mois = Mois - 1
If [D7].Offset(0, Mois + 1) & [D11].Offset(0, Mois + 1) & [D15].Offset(0, Mois + 1) & [D19].Offset(0, Mois + 1) & [D23].Offset(0, Mois + 1) <> "" Then
MsgBox "Le choix du mois est erronné"
GoTo Bis
End If

If [D7].Offset(0, Mois) = "" Or [D11].Offset(0, Mois) = "" Or [D15].Offset(0, Mois) = "" Or [D19].Offset(0, Mois) = "" Or [D23].Offset(0, Mois) = "" Then
MsgBox ("Une note n'a pas été remplie, relancer l'agent de maîtrise correspondant")
Exit Sub
End If
Mois = Mois + 1
If [D7].Offset(0, Mois) <> "" And [D11].Offset(0, Mois) <> "" And [D15].Offset(0, Mois) <> "" And [D19].Offset(0, Mois) <> "" And [D23].Offset(0, Mois) <> "" Then
MsgBox "Le choix du mois est erronné"
GoTo Bis
End If

With Rows("38:93")
.Hidden = False
With ActiveSheet
.PageSetup.PrintArea = "$B$38:$N$93"
.PrintPreview
End With
.Hidden = True
End With
End If
End Sub



Merci d'avance pour votre aide
 

Pièces jointes

  • Bilan_2015 à transmettre.xlsm
    100 KB · Affichages: 40
  • Bilan_2015 à transmettre.xlsm
    100 KB · Affichages: 34
  • Bilan_2015 à transmettre.xlsm
    100 KB · Affichages: 42

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2