Protection de la cellule

  • Initiateur de la discussion Celeda
  • Date de début
C

Celeda

Guest
Je souhaite proteger une cellule, cacher sa formule, pour empecher d'ecrire dedans, sans proteger la feuille, car je dois envoyer le fichier et le faire compléter.
Comment faire SVP, par macro ? ou ?
Merci à l'avance
 
T

Ti

Guest
En fait, si je comprends bien ton problème, tu dois faire l'inverse : tu protèges la feuille, mais tu enlèves (en faisant click droit/propriétés de la cellule/protection et tu décoches "verrouillé") la protection des cellules qui doivent être modifiées. Pour les autres cellules, tu coches à la fois "verrouillé" et "masqué" pour cacher aussi les formules.
 
C

Celeda

Guest
Merci Ti mais si je protege ma feuille je bloque ma liste déroulante
qui se trouve dedans . L'userform devient inactif.
Hors le but est de se servir de cette liste déroulante pour donner des infos.
Je suis désolée pour ce casse-tête.
Comprends-tu mon problème. C'est pour cela que j'avais abandonné l'idée de protéger ma feuille.
 
T

Ti

Guest
Alors tu passes par une macro qui, à la validation de ton userform, juste avant d'envoyer les différents champs dans les cellules, se charge de déprotéger ta feuille. Ensuite, après la mise à jour de ces champs, tu appelles une seconde macro qui reprotège ta feuille. Voilà ce que ça peut donner :

Sub Protege_Une_Feuille(P_Feuille)
Worksheets(P_Feuille).Protect
End Sub

Sub Deprotege_Une_Feuille(P_Feuille)
Worksheets(P_Feuille).Unprotect
End Sub

'ton userform peut alors appeler une proc qui se charge de mettre à jour la feuille, du genre :

Sub Transfere_Le_Formulaire()
Deprotege_Une_Feuille "NomDeTaFeuille"
...mise à jour des cellules...
Protege_Une_Feuille "NomDeTaFeuille"
End Sub

Pour protéger ou déprotéger toutes les feuilles à la fois, utilise les variantes suivantes :

Private Sub Protege_les_Feuilles()
Dim L_Feuille
For Each L_Feuille In Worksheets
L_Feuille.Protect
Next L_Feuille
End Sub

Private Sub Deprotege_les_Feuilles()
Dim L_Feuille
For Each L_Feuille In Worksheets
L_Feuille.Unprotect
Next L_Feuille
End Sub
 
C

Celeda

Guest
Bonjour:
Ben vous etes bien cutes.
Je vais essayer les options que vous m'offrez et je vais vous tenir au courant.
Je ne sais pas comment vous remercier mais l'intention y est.
Je teste et je vous confirme.
J'en ai une autre en préparation de question mais il faut encore que
je travaille la-dessus avant de vous la présenter.
Merci beaucoup.
 
C

Celeda

Guest
Bonjour,
Alors j'ai fait les tests.
Cela ne fonctionne pas parce que :

ma liste déroulante est dans une feuille, je l'ai faite d'après formulaire,elle a comme control une base de donnée qui se trouve dans une autre feuille.
la cellule liée n'est pas pas vérouillée
et si je rentre la procédure par vba cela beug.

en dessous de ma liste déroulante il y a un formule qui renvoie des infos et quand on a choisi un article on peut lire en dessous tout ce qui le concerne.
J'avais récupéré cette manip dans un excellent site (I forgot the name) et cela est trés pratique.

donc il ne faut pas que seule ma liste déroulante soit protégee.
ex.
a6 = index(bdfeuille2,E2 (la cellulle lieé), 1)
et cela pour
a7, a8, a9 .

Je m'excuse mais j'espere que je suis claire sinon tant pis. Je vous remercie quand même.
 
C

Celeda

Guest
A tous,
Pour en finir avec la Protection de ces cellules qui ne sont pas grises,
un grand merci à toutes ces sygnergies et à ce Sacré Michel (l'inconnu
du forum) qui nous a amené la solution :

il suffit d'aller dans data - validation
choisir l'option Decimal
et mettre en maximum : 0.0002
et en minimum : 0.0001

et voila tout est protégé - on peut meme ajouter un ptit message
d'alerte si un petit malin essaye de changer les formules ou le texte,
et cela marcheeeeeeeeeee.
Merci - Sacre Michel - TI - Stephane - Sylvain.
 

Discussions similaires

Statistiques des forums

Discussions
303 475
Messages
2 011 479
Membres
219 001
dernier inscrit
Luc d'or