Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Empecher la suupression des cellules avec formules

3 réponses
Avatar
Patrednef
Bonjour =E0 vous tous,

Je souhaite mettre dans le module code d'une feuille un sub qui
empecherait la suppression de certaines cellules dans la feuille
active:

Certaines cellules masqu=E8es font des op=E9rations et l'utilisateur peut
s=E9lectionner une partie de ligne et appuyer sur Suppr pour effacer les
cellules masqu=E9es !!!! l'erreur est humaine

dans le : Private Sub Worksheet_SelectionChange(ByVal Target As Range)

1/ Comment d=E9finir que si dans la s=E9l=E9ction que l'on veut supprimer o=
n
a des cellules avec formules, alors msgbox et message d'avertissement
=E0 l'utilisateur

Pour les cellules avec formules, j'ai l'habitude d'utiliser le
Cells.SpecialCells(xlCellTypeFormulas) mais l=E0 je ne vois pas ...

2/ Vu que cela ne concerne que la possibilit=E9 de supprimer, ne faut
t'il pas tester avant l'appui de la touche Suppr ? ou cela est il trop
lourd en lignes de code ?

Le but =E9tant que l'utilisateur s=E9l=E9ctionne une plage ou il n'y a
aucune formule afin de ne pas effacer involontairement le travail de
ses petits camarades

Je vous remercie par avance de vos indications et ne manquerai pas de
donner suite =E0 vos suggestions toujours plus pertinentes (que les
notres !!!!! NDLR)

Bonne journ=E9e =E0 nos sympatiques contributeurs

PatRednef

3 réponses

Avatar
FdeCourt
Salut,

Avec ce petit bout de code à mettre dans le code de la feuille
concernée :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim active As Boolean
For Each c In Selection
If c.HasFormula = True Then
Application.OnKey "{suppr}", ""
Application.OnKey "{BackSpace}", ""
active = False
Exit For
Else
Application.OnKey "{suppr}"
Application.OnKey "{BackSpace}"
active = True
End If
Next

CommandBars(1).Controls("Edition").Controls("&Supprimer...").Enabled =
active
CommandBars("cell").Controls("&Supprimer...").Enabled = active
End Sub

Cordialement,

F.

PS : petite question, comment appeler un controle à partir de son ID
plutot que de son nom, afin d'éviter les problèmes avec les
différentes version d'Excel ?
Merci
Avatar
Daniel.C
Bonjour.
Pourquoi ne pas verrouiller les cellules concernées et protéger la
feuille ?
Cordialement.
Daniel

Bonjour à vous tous,

Je souhaite mettre dans le module code d'une feuille un sub qui
empecherait la suppression de certaines cellules dans la feuille
active:

Certaines cellules masquèes font des opérations et l'utilisateur peut
sélectionner une partie de ligne et appuyer sur Suppr pour effacer les
cellules masquées !!!! l'erreur est humaine

dans le : Private Sub Worksheet_SelectionChange(ByVal Target As Range)

1/ Comment définir que si dans la séléction que l'on veut supprimer on
a des cellules avec formules, alors msgbox et message d'avertissement
à l'utilisateur

Pour les cellules avec formules, j'ai l'habitude d'utiliser le
Cells.SpecialCells(xlCellTypeFormulas) mais là je ne vois pas ...

2/ Vu que cela ne concerne que la possibilité de supprimer, ne faut
t'il pas tester avant l'appui de la touche Suppr ? ou cela est il trop
lourd en lignes de code ?

Le but étant que l'utilisateur séléctionne une plage ou il n'y a
aucune formule afin de ne pas effacer involontairement le travail de
ses petits camarades

Je vous remercie par avance de vos indications et ne manquerai pas de
donner suite à vos suggestions toujours plus pertinentes (que les
notres !!!!! NDLR)

Bonne journée à nos sympatiques contributeurs

PatRednef
Avatar
Patrednef
Bonjour Daniel,

Entre temps cette idée est venue, merci de me la suggerer

On pourrait faire:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet
.Unprotect Password:=""
.Cells.Locked = False
On Error Resume Next
.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
On Error GoTo 0
.Protect Password:=""
End With

End Sub


Peut on faire un "chouya" plus court ou qu'en pensez vous ?

PatRednef