re,
votre macro se trouve dans le module de la feuille "Commandes" et ne comprend pas le range, si cela se trouve dans une autre feuille, donc il faut préciser cela. Si vous déplacez la macro vers un module normal, vous n'aurez pas de problèmes. Il faut le savoir. Donc ici, pour le tableau42, j'ai ajouté un "With...End With"-construction avec la feuille "Com Cas Part" et maintenant, la macro comprend "Tableau42".
Je ne sais pas si vous connaissez bien ces "With...End With"-constructions, le point en face de "Range" est vraiment important.
PS. il faut éviter tous ces "Select", cela ne sert à rien et ralentit la macro.
Private Sub CommandButton1_Click()
'Reset: remet à zéro, supprime les codes articles (*2), les commandes et NB (*2), les prix et la date .
If MsgBox("Etes-vous certain de vouloir supprimer toutes les commandes ?", vbOKCancel, "Demande de confirmation") = vbOK Then
With Me 'dans la feuille de cette module
.Range("Tableau4[[C3]:[C25]]").ClearContents
.Range("F6:X6").ClearContents
End With
With Sheets("Com Cas Part")
.Range("Tableau42[[C3]:[C25]]").ClearContents '>>>> le tableau42 qui se trouve dans la feuille "Com Cas Part"
.Range("F6:X6").ClearContents
End With
With Sheets("Articles & Tarifs")
.Range("I4:I41").ClearContents
.Range("M2:P2").ClearContents
'ActiveCell.FormulaR1C1 = "." '???? que voulez-vous faire
End With
Application.Goto Me.Range("F8"), 1
ActiveWorkbook.RefreshAll
MsgBox "Pensez à enregistrer sous un nouveau nom (ou nouvelle date)."
End If
End Sub