Empecher la suupression des cellules avec formules
3 réponses
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)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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)
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
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
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 ?
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 ?