Bonjour à tous,
Alternativement, je vous propose les Sub ci-après.
Il suffit de lier votre forme (la petite poubelle) à la macro ClickClearRow, puis de la c/c sur toutes les lignes.
Ensuite, pour votre demande concernant le nettoyage de toutes les lignes d'un coup, liez un nouveau bouton/forme à la macro ClickClearTable.
Le travail de nettoyage est effectué par la macro ClearRows, qui s'adapte comme vous le vouliez ("factorizable").
Bonne journée
Code à ajouter dans module1 :
' a mettre en haut du module ================
Private Const SHEET_PWD As String = "mdp"
' ===========================================
' Fonction de nettoyage des lignes startR a endR sur la feuille sht, entre les colonnes B et M
Private Sub ClearRows(startR As Long, endR As Long, sht As Worksheet)
If sht.ProtectContents Then
sht.Unprotect SHEET_PWD
End If
sht.Range("B" & startR & ":M" & endR).SpecialCells(xlCellTypeConstants).ClearContents
sht.Protect SHEET_PWD
End Sub
' fonction de nettoyage d'une ligne
Public Sub ClickClearRow()
' ligne cliquee
Dim clickedRow As Long
clickedRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
'nettoyage de la ligue
ClearRows clickedRow, clickedRow, ActiveSheet
End Sub
' fonction de nettoyage de tout le tableau, lignes 8 a 24 d'apres l'exemple
Public Sub ClickClearTable()
ClearRows 8, 24, ActiveSheet
End Sub