Bonjour,
Voici la modification à faire dans le code suivant: déplacer les 2 lignes Rows("5:5").AutoFilter et ActiveSheet.Protect derrière le End If
Sub Imp_Commande()
' Application.ScreenUpdating = False
Dim c As Range, choix As Long, Selection As String
WsCde.Select
choix = MsgBox("Voulez-vous imprimer toutes les Fiches de commande ?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "Etendue impression")
If choix = vbCancel Then Exit Sub
If choix = vbNo Then ' imprimer la fiche en cours
' ActiveWindow.SelectedSheets.PrintPreview 'aperçu avant impression
If MsgBox("Le bon de commande est_il au bon nom?, si NON modifier-le dans la cellule C2 et recommencer. ", vbYesNo) = vbNo Then
Range("C2").Select
Exit Sub
Else
ActiveSheet.Unprotect
Rows("5:5").AutoFilter
ActiveSheet.Range("$A$4:$D$60").AutoFilter Field:=4, Criteria1:=">0", Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut ' impression de la fiche
Rows("5:5").AutoFilter
ActiveSheet.Protect
End If
Else ' imprimer tout
Application.ScreenUpdating = False
Selection = [C2]
For Each c In WsS.Range("N_P")
[C2] = c.Value
ActiveSheet.Unprotect
Rows("5:5").AutoFilter
ActiveSheet.Range("$A$4:$D$60").AutoFilter Field:=4, Criteria1:="<>0", Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut ' impression des fiches
' Rows("5:5").AutoFilter
' ActiveSheet.Protect
Next c
End If
Rows("5:5").AutoFilter
ActiveSheet.Protect
MsgBox ("L'impression des bons de commande est terminée.")
Range("C2").Select
End Sub
Cdt
Henri