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

Protéger des cellules dans un classeur protégé en VBA

2 réponses
Avatar
Nemroth
Bonsoir tout le monde,

Je voudrais faire ceci en VBA :

- L'utilisateur entre une donnée dans une cellule
- Vérification de la validité de la donnée saisie sinon on efface le
contenu de la cellule et on lui redonne le focus avec un message
d'avertissement.("on lui redonne le focus", je ne sais pas faire...),
- Puis, en fonction de la donnée entrée, on interdit la modification de
une ou plusieurs autres cellules en les protégeant, et la tabulation ne
permets pas de les atteindre...

D'où deux questions :

1) Peut-on, et si oui comment, protéger des cellules qui ne le sont pas
dans une feuille qui est elle-même protégée, ou faut-il déprotéger la
feuille,
protéger les cellules puis reprotéger la feuille ?

2) Question subsidiaire : comment peut on donner le focus à une cellule
particulière en VBA ?

Par avance merci pour vos réponses

@+ Nemroth

2 réponses

Avatar
AV
1) Peut-on, et si oui comment, protéger des cellules qui ne le sont pas
dans une feuille qui est elle-même protégée, ou faut-il déprotéger la
feuille, protéger les cellules puis reprotéger la feuille ?


Ca n'est pas nécessaire si tu agis par macro en ayant, au préalable, mis dans le
module de ThisWorbook :
Private Sub Workbook_Open()
Sheets("Feuil1").Protect Contents:=True, UserInterfaceOnly:=True
End Sub

2) Question subsidiaire : comment peut on donner le focus à une cellule
particulière en VBA ?
Plusieurs possibilités (exemple avec A1 de "Feuil1")

** Si seule A1 est déverrouillée et la feuille protégée :
dans le module de ThisWorbook :
Private Sub Workbook_Open()
Sheets("Feuil1").Protect Contents:=True, UserInterfaceOnly:=True
Sheets("Feuil1").EnableSelection = xlUnlockedCells
End Sub
** ou bien
Dans le module de la feuille :
Private Sub Worksheet_SelectionChange(ByVal zz As Range)
[A1].Select
End Sub

AV

Avatar
Nemroth
Bonjour AV,

Je te remercie pour tes réponses très claires.

@+ Nemroth


1) Peut-on, et si oui comment, protéger des cellules qui ne le sont pas
dans une feuille qui est elle-même protégée, ou faut-il déprotéger la
feuille, protéger les cellules puis reprotéger la feuille ?


Ca n'est pas nécessaire si tu agis par macro en ayant, au préalable, mis dans le
module de ThisWorbook :
Private Sub Workbook_Open()
Sheets("Feuil1").Protect Contents:=True, UserInterfaceOnly:=True
End Sub

2) Question subsidiaire : comment peut on donner le focus à une cellule
particulière en VBA ?
Plusieurs possibilités (exemple avec A1 de "Feuil1")

** Si seule A1 est déverrouillée et la feuille protégée :
dans le module de ThisWorbook :
Private Sub Workbook_Open()
Sheets("Feuil1").Protect Contents:=True, UserInterfaceOnly:=True
Sheets("Feuil1").EnableSelection = xlUnlockedCells
End Sub
** ou bien
Dans le module de la feuille :
Private Sub Worksheet_SelectionChange(ByVal zz As Range)
[A1].Select
End Sub

AV