Private Sub Workbook_BeforePrint(Cancel As Boolean)
Const msg As String = "Impression annulée, bilan mensuel incomplet dans "
Dim feuille As Worksheet
For Each feuille In ThisWorkbook.Windows(1).SelectedSheets
With feuille
If .[A44] = "Bilan mensuel à remplir par le salarié :" Then
If Application.CountA(Union(.[D47], .[A51], .[A55])) <> 3 Then
Cancel = True
MsgBox msg & feuille.Name
Exit Sub
Else
If (LCase(.[D47] = "non") And .[B48] = "") Or (LCase(.[D51] = "non") And .[B52] = "") Or (LCase(.[D55] = "non") And .[B56] = "") Then
Cancel = True
MsgBox msg & feuille.Name
Exit Sub
End If
End If
End If
End With
Next feuille
End Sub
J'ai prévu le contrôle de toutes les feuilles sélectionnées en cas de sélection multiple.
Par contre si le choix est imprimer tout le classeur ça sortira. J'ai supposé qu'il pouvait y avoir des feuilles prêtes d'avance et par conséquent non remplies.
Si besoin complète en testant toutes les feuilles.
eric
Au final je me rend compte que j'ai toujours un problème.
En effet si le salarié ne renseigne pas toutes les questions il peut quand même imprimer.
Je souhaiterais qu'il soit obligé de dire oui ou non dans chacune des questions (et si non obligé de mettre le motifs)
Actuellement s'il en rempli 1 ou 2 il peut imprimer alors qu'il doit être obligé de remplir les 3.
Par expérience, je peux te garantir que la méthode de loin la plus efficace est de ne pas leur verser leur salaire tant que la fiche n'est pas correctement remplie : C'est radical ! Au bout de 2 mois de ce régime, les documents arrivent dans les délais, remplis, commentés et signés ...
Alt+F11 pour aller dans VBE.
Double-clic dans ThisWorkbook de ton projet et y coller le code.
eric
Au final je me rend compte que j'ai toujours un problème.
En effet si le salarié ne renseigne pas toutes les questions il peut quand même imprimer.
Je souhaiterais qu'il soit obligé de dire oui ou non dans chacune des questions (et si non obligé de mettre le motifs)
Actuellement s'il en rempli 1 ou 2 il peut imprimer alors qu'il doit être obligé de remplir les 3.
Merci
Ah oui. Un oubli de modification suite à un copié-collé.
Remplace :
par :
qui est sur les bonnes cellules.
eric
effectivement maintenant cela fonction au top.