Protéger des cellules dans un classeur protégé en VBA
2 réponses
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 ?
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
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
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
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
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
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
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