OVH Cloud OVH Cloud

Verrouillage de Cellule

4 réponses
Avatar
Ayrton [ASC]
Bonjour à tous,

Suite à mon post d' hier, je reviens avec un petit souci de securité ; au
départ je cherchais à savoir si l'on pouvait incrémenter une cellule à
chaque ouverture du fichier pour avoir Numero n +1 .
MichDenis, Jacklyne et Youki m'ont chacun donné la bonne syntaxe et ça
fonctionne pil poil ;-)
Par contre, comme me l'avait signalé MichDenis, n'importe quel utilisateur
peut, volontairement ou non, effacer cette cellule avant d'imprimer son
travail.
J'ai bien essayé de verouiller la cellule mais bien évidement si je fais
cela, à chaque ouverture de mon fichier je meretrouve avec in beau message
d'erreur vba.

Ma question est donc de savoir s'il est possible d'empêcher toute
modification de la cellule sans pour autant empêcher l'incrementation d'un
nouveau numéro à chaque ouverture.

Un grand merci d'avance pour vos conseils

Cordialement

--
@+
Ayrton ;-)
http://cerbermail.com/?CfLqYYyx1v

4 réponses

Avatar
MichDenis
Bonjour Ayrton,

Tu peux copier ceci dans la FEUILLE MODULE où l'action se déroule.

A chaque fois que la cellule D12 fera parti de la sélection, la feuille sera protégée.. d'où impossibilité de modifier cette
cellule. Autrement, aucune protection ne sera placé sur cette feuille.

'-------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'toto = Mot de passe -> au besoin !
If Not Intersect(Target, Range("D12")) Is Nothing Then
Me.Protect "toto", True, True, True
MsgBox "IL est interdit de modifier la cellule ""D12""."
Else
Me.Unprotect "toto"
End If

End Sub
'-------------------------

Salutations!



"Ayrton [ASC]" a écrit dans le message de news:
Bonjour à tous,

Suite à mon post d' hier, je reviens avec un petit souci de securité ; au
départ je cherchais à savoir si l'on pouvait incrémenter une cellule à
chaque ouverture du fichier pour avoir Numero n +1 .
MichDenis, Jacklyne et Youki m'ont chacun donné la bonne syntaxe et ça
fonctionne pil poil ;-)
Par contre, comme me l'avait signalé MichDenis, n'importe quel utilisateur
peut, volontairement ou non, effacer cette cellule avant d'imprimer son
travail.
J'ai bien essayé de verouiller la cellule mais bien évidement si je fais
cela, à chaque ouverture de mon fichier je meretrouve avec in beau message
d'erreur vba.

Ma question est donc de savoir s'il est possible d'empêcher toute
modification de la cellule sans pour autant empêcher l'incrementation d'un
nouveau numéro à chaque ouverture.

Un grand merci d'avance pour vos conseils

Cordialement

--
@+
Ayrton ;-)
http://cerbermail.com/?CfLqYYyx1v
Avatar
Ayrton [ASC]
Bonjour *MichDenis*
Dans ton message de
news:, tu nous tenais ce discours::
:-(*)
Bonjour Ayrton,

Tu peux copier ceci dans la FEUILLE MODULE où l'action se déroule.

A chaque fois que la cellule D12 fera parti de la sélection, la
feuille sera protégée.. d'où impossibilité de modifier cette cellule.
Autrement, aucune protection ne sera placé sur cette feuille.

'-------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'toto = Mot de passe -> au besoin !
If Not Intersect(Target, Range("D12")) Is Nothing Then
Me.Protect "toto", True, True, True
MsgBox "IL est interdit de modifier la cellule ""D12""."
Else
Me.Unprotect "toto"
End If

End Sub


Bonjour MichDenis,

Merci 1000 fois pour cette syntaxe qui fonctionne à merveille ; c'est
exactement ce que je voulais ;-)
Un très grand merci à toi ;
Si je peux me permettre, j'aimerais te poser une dernière question : Comment
pourrais je faire si pour une raison ou pour une autre je devais leur
changer la numerotation ?J'ai vu que je pouvais mettre un mot de passe à '
toto ' mais j'ai peur de " casser " ta syntaxe .
A quel endroit puis je le mettre ? Comme cela ça me donnera la possibilité,
si le besoin s'en faisait sentir, de changer la numerotation ; le fait de
taper le mot de passe me liberant l'accès à cette cellule.

Encore merci MichDenis

Cordialement

--
@+
Ayrton ;-)
http://cerbermail.com/?CfLqYYyx1v

Avatar
MichDenis
Bonjour Ayrton,

Si j'ai bien compris le sens de ta question, tu n'as qu'à désactiver cette ligne de code, le temps que tu ajustes la valeur de ta
cellule en mettant une apostrophe devant la ligne de code :

Comme ceci :
' Me.Protect "toto", True, True, True

Et lorsque tu as terminé, tu enlève l'apostrophe.


| mais j'ai peur de " casser " ta syntaxe

Il faut oser, c'est la seule façon d'apprendre.


Salutations!



"Ayrton [ASC]" a écrit dans le message de news:
Bonjour *MichDenis*
Dans ton message de
news:, tu nous tenais ce discours::
:-(*)
Bonjour Ayrton,

Tu peux copier ceci dans la FEUILLE MODULE où l'action se déroule.

A chaque fois que la cellule D12 fera parti de la sélection, la
feuille sera protégée.. d'où impossibilité de modifier cette cellule.
Autrement, aucune protection ne sera placé sur cette feuille.

'-------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'toto = Mot de passe -> au besoin !
If Not Intersect(Target, Range("D12")) Is Nothing Then
Me.Protect "toto", True, True, True
MsgBox "IL est interdit de modifier la cellule ""D12""."
Else
Me.Unprotect "toto"
End If

End Sub


Bonjour MichDenis,

Merci 1000 fois pour cette syntaxe qui fonctionne à merveille ; c'est
exactement ce que je voulais ;-)
Un très grand merci à toi ;
Si je peux me permettre, j'aimerais te poser une dernière question : Comment
pourrais je faire si pour une raison ou pour une autre je devais leur
changer la numerotation ?J'ai vu que je pouvais mettre un mot de passe à '
toto ' mais j'ai peur de " casser " ta syntaxe .
A quel endroit puis je le mettre ? Comme cela ça me donnera la possibilité,
si le besoin s'en faisait sentir, de changer la numerotation ; le fait de
taper le mot de passe me liberant l'accès à cette cellule.

Encore merci MichDenis

Cordialement

--
@+
Ayrton ;-)
http://cerbermail.com/?CfLqYYyx1v

Avatar
Ayrton [ASC]
Bonjour *MichDenis*
Dans ton message de
news:, tu nous tenais ce discours::
:-(*)
Bonjour Ayrton,

Si j'ai bien compris le sens de ta question, tu n'as qu'à désactiver
cette ligne de code, le temps que tu ajustes la valeur de ta cellule
en mettant une apostrophe devant la ligne de code :

Comme ceci :
' Me.Protect "toto", True, True, True

Et lorsque tu as terminé, tu enlève l'apostrophe.


C'est Nickel ! !;-)
Merci beaucoup MichDenis
De plus je te confirme que tu as très bien compris le sens de ma question
;-) Ayany vu dans ton code que t umettais que j'avais la possibilité de
mettre un mot de passe, je pensais qu'en mettant un mot de passe cela
m'évitait de retourner dans le code pour le modifier et ensuite d'y revenir
pour rebloquer cette cellule.
Mais ce que tu me propose fonctionne très bien et me va aussi très bien ;-)


Il faut oser, c'est la seule façon d'apprendre.


C'est vrai mais n'étant pas trop à l'aise avec Excel en vba j'ia un peu peur
; ceci étant, maintenant que j'ai toutes lexplications que tu m'as
gentillement données, je vais peut être me lancer en m'appuyant sur ce que
j'ai déjà fait avec Access ; il y a des petites differences mais
bon.............................en cherchant on finit par trouver !!

Encore merci

Cordialement

--
@+
Ayrton ;-)
http://cerbermail.com/?CfLqYYyx1v








"Ayrton [ASC]" a écrit dans le message de news:

Bonjour *MichDenis*
Dans ton message de
news:, tu nous tenais ce
discours:: :-(*)
Bonjour Ayrton,

Tu peux copier ceci dans la FEUILLE MODULE où l'action se déroule.

A chaque fois que la cellule D12 fera parti de la sélection, la
feuille sera protégée.. d'où impossibilité de modifier cette cellule.
Autrement, aucune protection ne sera placé sur cette feuille.

'-------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'toto = Mot de passe -> au besoin !
If Not Intersect(Target, Range("D12")) Is Nothing Then
Me.Protect "toto", True, True, True
MsgBox "IL est interdit de modifier la cellule ""D12""."
Else
Me.Unprotect "toto"
End If

End Sub


Bonjour MichDenis,

Merci 1000 fois pour cette syntaxe qui fonctionne à merveille ; c'est
exactement ce que je voulais ;-)
Un très grand merci à toi ;
Si je peux me permettre, j'aimerais te poser une dernière question :
Comment
pourrais je faire si pour une raison ou pour une autre je devais leur
changer la numerotation ?J'ai vu que je pouvais mettre un mot de
passe à '
toto ' mais j'ai peur de " casser " ta syntaxe .
A quel endroit puis je le mettre ? Comme cela ça me donnera la
possibilité,
si le besoin s'en faisait sentir, de changer la numerotation ; le
fait de
taper le mot de passe me liberant l'accès à cette cellule.

Encore merci MichDenis

Cordialement