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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
| 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]" <beco.AS@wanadoo.fr> a écrit dans le message de news: OT%23M66HQFHA.2348@tk2msftngp13.phx.gbl...
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
| 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