Cellule non modifiable

nova

XLDnaute Nouveau
Bonjour,

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

Worksheets(sheet).Range("A1").Locked = True

Quelqu'un aurait une idée svp.

Merci
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Cellule non modifiable

Bonjour à tous,

voir fichier joint
la feuille est protégée SANS mot de passe

à+
Philippe
 

Pièces jointes

  • 111.xlsm
    16.7 KB · Affichages: 251
  • 111.xlsm
    16.7 KB · Affichages: 258
  • 111.xlsm
    16.7 KB · Affichages: 270

nova

XLDnaute Nouveau
Re : Cellule non modifiable

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

Merci d'avance
 

nova

XLDnaute Nouveau
Re : Cellule non modifiable

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
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Cellule non modifiable

Re,
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
c'est ce que j'ai réalisé il me semble :confused:

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)

à+
Philippe
 

nova

XLDnaute Nouveau
Re : Cellule non modifiable

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
 

francedemo

XLDnaute Occasionnel
Re : Cellule non modifiable

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

à+
 

francedemo

XLDnaute Occasionnel
Re : Cellule non modifiable

re,

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

à+
 

Discussions similaires

Statistiques des forums

Discussions
312 226
Messages
2 086 414
Membres
103 204
dernier inscrit
alaa20dine01