Je souhaiterais savoir comment en VBA on pourrait désactiver une cellule
c'est a dire qu'au clic sur un bouton une cellule dans la laquel l'avais saisi un texte
devienne non modifiable, plus possible de modifier le texte qu'elle contient
J'ai essayé la propriété Locked mais ca marche pas la cellule est toujours editable apres clic
Merci Philippe pour ta réponse mais c'est pas exactement cela que je voudrais.
Dans ta version, les cellules se verrouillent automatiquement dès qu'on clique en dehors
moi je souhaiterais que cela se fassent après avoir cliqué sur un bouton.
Le fait de cliquer sur le bouton rendra la cellule non modifiable (et meme non cliquable si possible)
afin que la valeur qu'elle contient ne soit plus accessible a l'utilisateur
Salut Jofk, Merci pour ta reponse mais cest pas vraiment cela non plus...
En fait je voudrais qu'au lancement du fichier excel, les cellules ne soient pas déjà verouillé
L'utilisateur a la possibilité de saisir ses données. Mais une fois saisi, et cliqué sur un bouton,
les cellules sont a ce moment la non modifiables
Merci Philippe pour ta réponse mais c'est pas exactement cela que je voudrais.
Dans ta version, les cellules se verrouillent automatiquement dès qu'on clique en dehors
je crois que tu n'as pas compris ou testé le fonctionnement
La cellule ne se valide pas automatiquement quand on clique en dehors de celle-ci, elle se verrouille automatiquement si son contenu est non-vide et l'utilisation d'un bouton n'est pas nécessaire
dans ta question initiale tu demandes
.............une cellule dans la laquel l'avais saisi un texte
devienne non modifiable, plus possible de modifier le texte qu'elle contient
Question: pour les cas où une donnée serait erronée lors de la saisie, Qui va la corriger ? et comment (dans le cas où la protection serait assortie d'un mot de passe)
Question: pour les cas où une donnée serait erronée lors de la saisie, Qui va la corriger ? et comment (dans le cas où la protection serait assortie d'un mot de passe)
Justement c'est pour cela que je voudrais qu'elles ne soient verrouillés que par clique sur un bouton.
Le bouton permet de vérifier les valeurs saisies dans les cellules dans ma DB et si elles sont correctes
elles sont verrouillées à la modification tant que le fichier restera ouvert,
sinon elles restent ouvertes et l'utilisateur pourra modifier sa saisie
bonjour à tous,
philippe, j'ai modifié ton code avec:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Not Target.Value = "" Then Target.Locked = True
ActiveSheet.Protect
End Sub
ce qui permet de garder la possibilité de sélectionner une cellule après avoir cliqué dessus sans rien rentrer
pour pouvoir apporter une modif, il suffit d'ajouter une autre condition en passant par Environ("UserName") =... par exemple
les solutions proposées devraient te permettre d'adapter pour ton cas
sinon, tu peux essayer ça (à copier dans le code de ta feuille)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If not Environ("UserName") = ton.nom then 'à adapter
ActiveSheet.Unprotect
If Not Target.Value = "" Then Target.Locked = True
ActiveSheet.Protect
End If
End Sub
le code vérifie à chaque changement de valeur d'une cellule si c'est toi (personne autorisée) qui écrit le texte
si c'est toi, il ne fait rien
si c'est pas toi, il verrouille la feuille et empêche la modification du texte entré
ensuite, tu peux écrire un bout de code dans BeforeClose pour parcourir toutes les cellules non verrouillées et non vides et les verrouiller + protection de feuille (comme ça elles sont verrouillées si qqu'un d'autre ouvre le fichier)
et dans Open, tu écris un code qui enlève la protection de feuille quand c'est toi qui ouvre
avec cette méthode, il n'y a pas besoin d'un bouton