OVH Cloud OVH Cloud

Pour MichDenis

1 réponse
Avatar
Ayrton [ASC]
Bonsoir MichDenis,

Je sais que cela ne se fait pas de citer une personne en particulier dans un
objet sur un NG, mais je me le suis permis pour essayer d'attirer ton
attention sur une syntaxe que tu m'as donnée tout à l'heure et qui m'allait
très bien.
Je faisias mes petits test dans la soirée et je me suis aperçu d'une faille
qui me gêne un peu.
Pour info, voici la syntaxe que tu m'as donnée :
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
Ca fonctionne super bien sauf que si je click sur D12, la MsgBox s'affiche
et e ncliquant sur Ok je m'aperçois que cette cellule reste active et qu'à
ce moment là quelqu'un pourrait volontairement ou non changer le numero,
faire sa saisie et enregistrer sans aucun problème.De même qu'à l'ouverture
du classeur c'est cette cellule qui est directement activée et là aussi on
peut sans souci changer ce numéro.
je tatônne pour trouver la syntaxe qui me permettrait d'empêcher purement et
simplement quelq'un de modifier cette cellule mais je n'y arrive pas.
Il n'y a pas dans Excel les évènements que j'avais dans Access et ça me
perturbe car je suis un peu paumé pour dire à Excel que cette cellule doit
bien s'incrementer à chaque ouverture mais ne doit e naucun cas être
modifiée par l'utilisateur ( sauf en modifiant le code, nous sommes
d'accord )

Volià mon souci MichDenis ! Si tu avais une petite idée pour me
guider..........
Encore merci

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

1 réponse

Avatar
MichDenis
Bonsoir Ayrton,


| je m'aperçois que cette cellule reste active et qu'à
| ce moment là quelqu'un pourrait volontairement ou non changer le numero,
| faire sa saisie et enregistrer sans aucun problème.De même qu'à l'ouverture
| du classeur c'est cette cellule qui est directement activée et là aussi on
| peut sans souci changer ce numéro.


C'est vrai que la cellule demeure active mais la feuille devrait être à ce moment là "protégée". C'est la raison d'être de la macro.
Si ce n'est pas le cas, il est possible que tu aies sans te rendre compte "désactiver les macros événementielles. Pour les
réactiver, excécute cette macro que tu peux copier dans un module standard.

'-------------------------
Sub ActiverMacroEvenementielle ()
Application.EnableEvents = True
End Sub
'-------------------------


Si tu préfères, tu peux utiliser cette variante à la place :
'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("D12")) Is Nothing Then
Range("D12").Offset(1).Select
MsgBox "IL est interdit de sélectionner la cellule ""D12""."
End If

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

Et quand tu ouvres ton fichier, si tu veux être sûr que les macros événementielles sont activées, copie ce qui suit dans le
ThisWorkbook de ton classeur :

'------------------------------
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
'------------------------------

Avec ça, tu devrais être prêt pour la guerre !!! ;-))


Salutations!



"Ayrton [ASC]" a écrit dans le message de news: OT%
Bonsoir MichDenis,

Je sais que cela ne se fait pas de citer une personne en particulier dans un
objet sur un NG, mais je me le suis permis pour essayer d'attirer ton
attention sur une syntaxe que tu m'as donnée tout à l'heure et qui m'allait
très bien.
Je faisias mes petits test dans la soirée et je me suis aperçu d'une faille
qui me gêne un peu.
Pour info, voici la syntaxe que tu m'as donnée :
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
Ca fonctionne super bien sauf que si je click sur D12, la MsgBox s'affiche
et e ncliquant sur Ok je m'aperçois que cette cellule reste active et qu'à
ce moment là quelqu'un pourrait volontairement ou non changer le numero,
faire sa saisie et enregistrer sans aucun problème.De même qu'à l'ouverture
du classeur c'est cette cellule qui est directement activée et là aussi on
peut sans souci changer ce numéro.
je tatônne pour trouver la syntaxe qui me permettrait d'empêcher purement et
simplement quelq'un de modifier cette cellule mais je n'y arrive pas.
Il n'y a pas dans Excel les évènements que j'avais dans Access et ça me
perturbe car je suis un peu paumé pour dire à Excel que cette cellule doit
bien s'incrementer à chaque ouverture mais ne doit e naucun cas être
modifiée par l'utilisateur ( sauf en modifiant le code, nous sommes
d'accord )

Volià mon souci MichDenis ! Si tu avais une petite idée pour me
guider..........
Encore merci

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