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