Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Protection d'une feuille de calcul avec code mis en oeuvre sous vi

13 réponses
Avatar
François-Marie
Bonjour,

S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
résoudre un problème.

Je travaille sur Excel 2000.

En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
mise à jour alimentée automatiquement quand on fait une modification dans une
plage de cellules.

J’ai saisi sous visual basic de ma feuille de calcul le code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
End Sub

Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.

Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
basic ne produit plus ses effets :

En effet, lorsque que je modifie le contenu d’une cellule de la feuille
protégée, il s’affiche
une fenêtre intitulée Microsoft Visual Basic comportant les libellés
d’erreur :
- Erreur d’exécution « 1004 »
- Erreur définie par l’application ou par l’objet.

Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
prise en compte, mais ma date de mise à jour ne « bouge pas » ;

Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.


J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
cellules et les formules que j’ai mises en place, ne sont plus verrouillées.


Je vous remercie de me préciser ce que je dois faire pour que mon code
produise ses effets tout en maintenant ma feuille protégée :
c'est-à-dire tout en verrouillant les cellules contenant des formules pour
ne laisser déverrouillées que les cellules dans lesquelles des informations
doivent être saisies (cellules déverrouillées constituant la plage dans
laquelle le code mis dans visual doit produire ses effets).


En vous remerciant d’avance pour votre collaboration, je vous souhaite une
bonne fin de journée.
Cordialement,
François-Marie.

10 réponses

1 2
Avatar
JB
Bonsoir,

ActiveSheet.Unprotect Password:=""
....
....
ActiveSheet.Protect Password:=""

JB
http://boisgontierjacques.free.fr/


On 30 juin, 18:53, François-Marie
wrote:
Bonjour,

S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m ’aider à
résoudre un problème.

Je travaille sur Excel 2000.

En parcourant le forum, j’ai trouvé une solution pour "monter" une da te de
mise à jour alimentée automatiquement quand on fait une modification dans une
plage de cellules.

J’ai saisi sous visual basic de ma feuille de calcul le code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
End Sub

Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul .

Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
basic ne produit plus ses effets :

En effet, lorsque que je modifie le contenu d’une cellule de la feuille
protégée, il s’affiche
une fenêtre intitulée Microsoft Visual Basic comportant les libellé s
d’erreur :
- Erreur d’exécution « 1004 »
- Erreur définie par l’application ou par l’objet.

Je clique alors sur « fin » : la fenêtre disparaît, ma modificati on est
prise en compte, mais ma date de mise à jour ne « bouge pas » ;

Si j’ôte la protection : je n’ai plus de problème, le code joue b ien son rôle.

J’ai constaté qu’au niveau de la fenêtre protection, si je ne coc he pas la
rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
cellules et les formules que j’ai mises en place, ne sont plus verrouil lées.

Je vous remercie de me préciser ce que je dois faire pour que mon code
produise  ses effets tout en maintenant ma feuille protégée :
c'est-à-dire tout en verrouillant les cellules contenant des formules p our
ne laisser déverrouillées que les cellules dans lesquelles des inform ations
doivent être saisies (cellules déverrouillées constituant la plage dans
laquelle le code mis dans visual doit produire ses effets).

En vous remerciant d’avance pour votre collaboration, je vous souhaite une
bonne fin de journée.
Cordialement,
François-Marie.


Avatar
isabelle
bonjour François-Marie,

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="LeMotDePasse"
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True,
Contents:=True, Scenarios:=True
End Sub


isabelle

François-Marie a écrit :
Bonjour,

S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
résoudre un problème.

Je travaille sur Excel 2000.

En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
mise à jour alimentée automatiquement quand on fait une modification dans une
plage de cellules.

J’ai saisi sous visual basic de ma feuille de calcul le code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
End Sub

Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.

Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
basic ne produit plus ses effets :

En effet, lorsque que je modifie le contenu d’une cellule de la feuille
protégée, il s’affiche
une fenêtre intitulée Microsoft Visual Basic comportant les libellés
d’erreur :
- Erreur d’exécution « 1004 »
- Erreur définie par l’application ou par l’objet.

Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
prise en compte, mais ma date de mise à jour ne « bouge pas » ;

Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.


J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
cellules et les formules que j’ai mises en place, ne sont plus verrouillées.


Je vous remercie de me préciser ce que je dois faire pour que mon code
produise ses effets tout en maintenant ma feuille protégée :
c'est-à-dire tout en verrouillant les cellules contenant des formules pour
ne laisser déverrouillées que les cellules dans lesquelles des informations
doivent être saisies (cellules déverrouillées constituant la plage dans
laquelle le code mis dans visual doit produire ses effets).


En vous remerciant d’avance pour votre collaboration, je vous souhaite une
bonne fin de journée.
Cordialement,
François-Marie.




Avatar
LSteph
Bonjour,

Au lieu de protéger manuellement les feuilles
et ensuite de devoir déprotéger reprotéger
à chaque macro.Utilise userinterfaceonly, ainsi
se met obligatoirement à l'ouverture et protègera de l'utilisateur
en laissant agir les macros:

Enlève la protection puis mets ceci exemple mot de passe "toto"

'dans le thisworkbook du classeur

Private Sub Workbook_open()
Dim sh as worksheet
For each sh in thisworkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub


'pour tester fermer et rouvrir le classeur

'lSteph


François-Marie a écrit :
Bonjour,

S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
résoudre un problème.

Je travaille sur Excel 2000.

En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
mise à jour alimentée automatiquement quand on fait une modification dans une
plage de cellules.

J’ai saisi sous visual basic de ma feuille de calcul le code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
End Sub

Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.

Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
basic ne produit plus ses effets :

En effet, lorsque que je modifie le contenu d’une cellule de la feuille
protégée, il s’affiche
une fenêtre intitulée Microsoft Visual Basic comportant les libellés
d’erreur :
- Erreur d’exécution « 1004 »
- Erreur définie par l’application ou par l’objet.

Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
prise en compte, mais ma date de mise à jour ne « bouge pas » ;

Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.


J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
cellules et les formules que j’ai mises en place, ne sont plus verrouillées.


Je vous remercie de me préciser ce que je dois faire pour que mon code
produise ses effets tout en maintenant ma feuille protégée :
c'est-à-dire tout en verrouillant les cellules contenant des formules pour
ne laisser déverrouillées que les cellules dans lesquelles des informations
doivent être saisies (cellules déverrouillées constituant la plage dans
laquelle le code mis dans visual doit produire ses effets).


En vous remerciant d’avance pour votre collaboration, je vous souhaite une
bonne fin de journée.
Cordialement,
François-Marie.



Avatar
François-Marie
Bonjour Isabelle,

Je vous remercie de votre réponse.
J'ai saisi votre règle dans worksheet.
Toutefois, je me heurte à un problème de compilation.

En effet, quand je réouvre mon fichier et que je saisis une nouvelle
information, en maintenant la feuille de calcul protégée :
- j'ai une fenêtre d'erreur avec le message : "Erreur de compilation dans le
module caché : Feuil 1"

Si je vais sur la feuille code (visual basic) et que je reviens sur la
feuille de calcul pour saisir une information :
- je suis renvoyé sur la feuille visual basic, avec affichage d'une fenêtre
d'erreur comportant le message : "Erreur de compilation : erreur de syntaxe"
- la phrase :
"ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True," est
alors surlignée en bleu.

J'ai essayé de saisir le texte de différentes façons, mais je me heurte
toujours au même problème.

Pouvez-vous, s'il vous plaît, m'aider de nouveau pour résoudre ce problème
de compilation.

Je vous remercie d'avance et vous souhaite une excellente journée.

Bien amicalement,
François-Marie.

"isabelle" a écrit :

bonjour François-Marie,

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="LeMotDePasse"
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True,
Contents:=True, Scenarios:=True
End Sub


isabelle

François-Marie a écrit :
> Bonjour,
>
> S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
> résoudre un problème.
>
> Je travaille sur Excel 2000.
>
> En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
> mise à jour alimentée automatiquement quand on fait une modification dans une
> plage de cellules.
>
> J’ai saisi sous visual basic de ma feuille de calcul le code :
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Not Intersect(Target, Range("A2:N178")) Is Nothing _
> Then [N1] = Now
> End Sub
>
> Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.
>
> Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
> basic ne produit plus ses effets :
>
> En effet, lorsque que je modifie le contenu d’une cellule de la feuille
> protégée, il s’affiche
> une fenêtre intitulée Microsoft Visual Basic comportant les libellés
> d’erreur :
> - Erreur d’exécution « 1004 »
> - Erreur définie par l’application ou par l’objet.
>
> Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
> prise en compte, mais ma date de mise à jour ne « bouge pas » ;
>
> Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.
>
>
> J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
> rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
> cellules et les formules que j’ai mises en place, ne sont plus verrouillées.
>
>
> Je vous remercie de me préciser ce que je dois faire pour que mon code
> produise ses effets tout en maintenant ma feuille protégée :
> c'est-à-dire tout en verrouillant les cellules contenant des formules pour
> ne laisser déverrouillées que les cellules dans lesquelles des informations
> doivent être saisies (cellules déverrouillées constituant la plage dans
> laquelle le code mis dans visual doit produire ses effets).
>
>
> En vous remerciant d’avance pour votre collaboration, je vous souhaite une
> bonne fin de journée.
> Cordialement,
> François-Marie.
>
>



Avatar
François-Marie
Bonjour LSteph,

Je te remercie pour ta réponse.
J'ai de grandes difficultés pour saisir ta règle.

En effet, je ne sais pas comment on fait pour aller dans :
le "thisworkbook du classeur".
Je ne sais aller que sur le worksheet d'une feuille.

Pourrais-tu, s'il te plaît, me dire ce qu'il faut faire pour obtenir le
"thisworkbook".

Je te remercie d'avance pour ton aide.

Bien cordialement,
François-Marie.



"LSteph" a écrit :

Bonjour,

Au lieu de protéger manuellement les feuilles
et ensuite de devoir déprotéger reprotéger
à chaque macro.Utilise userinterfaceonly, ainsi
se met obligatoirement à l'ouverture et protègera de l'utilisateur
en laissant agir les macros:

Enlève la protection puis mets ceci exemple mot de passe "toto"

'dans le thisworkbook du classeur

Private Sub Workbook_open()
Dim sh as worksheet
For each sh in thisworkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub


'pour tester fermer et rouvrir le classeur

'lSteph


François-Marie a écrit :
> Bonjour,
>
> S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
> résoudre un problème.
>
> Je travaille sur Excel 2000.
>
> En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
> mise à jour alimentée automatiquement quand on fait une modification dans une
> plage de cellules.
>
> J’ai saisi sous visual basic de ma feuille de calcul le code :
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Not Intersect(Target, Range("A2:N178")) Is Nothing _
> Then [N1] = Now
> End Sub
>
> Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.
>
> Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
> basic ne produit plus ses effets :
>
> En effet, lorsque que je modifie le contenu d’une cellule de la feuille
> protégée, il s’affiche
> une fenêtre intitulée Microsoft Visual Basic comportant les libellés
> d’erreur :
> - Erreur d’exécution « 1004 »
> - Erreur définie par l’application ou par l’objet.
>
> Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
> prise en compte, mais ma date de mise à jour ne « bouge pas » ;
>
> Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.
>
>
> J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
> rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
> cellules et les formules que j’ai mises en place, ne sont plus verrouillées.
>
>
> Je vous remercie de me préciser ce que je dois faire pour que mon code
> produise ses effets tout en maintenant ma feuille protégée :
> c'est-à-dire tout en verrouillant les cellules contenant des formules pour
> ne laisser déverrouillées que les cellules dans lesquelles des informations
> doivent être saisies (cellules déverrouillées constituant la plage dans
> laquelle le code mis dans visual doit produire ses effets).
>
>
> En vous remerciant d’avance pour votre collaboration, je vous souhaite une
> bonne fin de journée.
> Cordialement,
> François-Marie.
>



Avatar
isabelle
bonjour François-Marie,


cette ligne de commande doit être mit sur une seule ligne

ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True,
Contents:=True, Scenarios:=True

isabelle

François-Marie a écrit :
Bonjour Isabelle,

Je vous remercie de votre réponse.
J'ai saisi votre règle dans worksheet.
Toutefois, je me heurte à un problème de compilation.

En effet, quand je réouvre mon fichier et que je saisis une nouvelle
information, en maintenant la feuille de calcul protégée :
- j'ai une fenêtre d'erreur avec le message : "Erreur de compilation dans le
module caché : Feuil 1"

Si je vais sur la feuille code (visual basic) et que je reviens sur la
feuille de calcul pour saisir une information :
- je suis renvoyé sur la feuille visual basic, avec affichage d'une fenêtre
d'erreur comportant le message : "Erreur de compilation : erreur de syntaxe"
- la phrase :
"ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True," est
alors surlignée en bleu.

J'ai essayé de saisir le texte de différentes façons, mais je me heurte
toujours au même problème.

Pouvez-vous, s'il vous plaît, m'aider de nouveau pour résoudre ce problème
de compilation.

Je vous remercie d'avance et vous souhaite une excellente journée.

Bien amicalement,
François-Marie.

"isabelle" a écrit :


bonjour François-Marie,

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="LeMotDePasse"
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True,
Contents:=True, Scenarios:=True
End Sub


isabelle

François-Marie a écrit :

Bonjour,

S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
résoudre un problème.

Je travaille sur Excel 2000.

En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
mise à jour alimentée automatiquement quand on fait une modification dans une
plage de cellules.

J’ai saisi sous visual basic de ma feuille de calcul le code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
End Sub

Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.

Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
basic ne produit plus ses effets :

En effet, lorsque que je modifie le contenu d’une cellule de la feuille
protégée, il s’affiche
une fenêtre intitulée Microsoft Visual Basic comportant les libellés
d’erreur :
- Erreur d’exécution « 1004 »
- Erreur définie par l’application ou par l’objet.

Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
prise en compte, mais ma date de mise à jour ne « bouge pas » ;

Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.


J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
cellules et les formules que j’ai mises en place, ne sont plus verrouillées.


Je vous remercie de me préciser ce que je dois faire pour que mon code
produise ses effets tout en maintenant ma feuille protégée :
c'est-à-dire tout en verrouillant les cellules contenant des formules pour
ne laisser déverrouillées que les cellules dans lesquelles des informations
doivent être saisies (cellules déverrouillées constituant la plage dans
laquelle le code mis dans visual doit produire ses effets).


En vous remerciant d’avance pour votre collaboration, je vous souhaite une
bonne fin de journée.
Cordialement,
François-Marie.









Avatar
LSteph
Bonjour F-M,
depuis excel
alt+F11 te permet d'accèder au VBEditor
sur ta gauche tu dois voir un volet concernant l'explorateur de projet
sinon appuie sur ctrl+r
en ouvrant celui de ton classeur tu accède aux différentys objets du projet
dedans il y a le thisworkbook
en doublecliquant dessus
tu ouvres son private module
dans la fenêtre de module il y a en haut deux déroulants
à gauche Général et workbook
à droite une fois r sélerctionné tui trouves les évennements liés au
classeur...
par défaut c'est open qui apparait!

Cordialement.

--
lSteph

François-Marie a écrit :
Bonjour LSteph,

Je te remercie pour ta réponse.
J'ai de grandes difficultés pour saisir ta règle.

En effet, je ne sais pas comment on fait pour aller dans :
le "thisworkbook du classeur".
Je ne sais aller que sur le worksheet d'une feuille.

Pourrais-tu, s'il te plaît, me dire ce qu'il faut faire pour obtenir le
"thisworkbook".

Je te remercie d'avance pour ton aide.

Bien cordialement,
François-Marie.



"LSteph" a écrit :

Bonjour,

Au lieu de protéger manuellement les feuilles
et ensuite de devoir déprotéger reprotéger
à chaque macro.Utilise userinterfaceonly, ainsi
se met obligatoirement à l'ouverture et protègera de l'utilisateur
en laissant agir les macros:

Enlève la protection puis mets ceci exemple mot de passe "toto"

'dans le thisworkbook du classeur

Private Sub Workbook_open()
Dim sh as worksheet
For each sh in thisworkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub


'pour tester fermer et rouvrir le classeur

'lSteph


François-Marie a écrit :
Bonjour,

S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
résoudre un problème.

Je travaille sur Excel 2000.

En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
mise à jour alimentée automatiquement quand on fait une modification dans une
plage de cellules.

J’ai saisi sous visual basic de ma feuille de calcul le code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
End Sub

Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.

Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
basic ne produit plus ses effets :

En effet, lorsque que je modifie le contenu d’une cellule de la feuille
protégée, il s’affiche
une fenêtre intitulée Microsoft Visual Basic comportant les libellés
d’erreur :
- Erreur d’exécution « 1004 »
- Erreur définie par l’application ou par l’objet.

Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
prise en compte, mais ma date de mise à jour ne « bouge pas » ;

Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.


J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
cellules et les formules que j’ai mises en place, ne sont plus verrouillées.


Je vous remercie de me préciser ce que je dois faire pour que mon code
produise ses effets tout en maintenant ma feuille protégée :
c'est-à-dire tout en verrouillant les cellules contenant des formules pour
ne laisser déverrouillées que les cellules dans lesquelles des informations
doivent être saisies (cellules déverrouillées constituant la plage dans
laquelle le code mis dans visual doit produire ses effets).


En vous remerciant d’avance pour votre collaboration, je vous souhaite une
bonne fin de journée.
Cordialement,
François-Marie.







Avatar
François-Marie
Bonjour Isabelle,

Je vous remercie de votre réponse.
J'ai saisi la igne commande sur une seule ligne. Je n'ai plus le message
d'erreur sur la compilation.

En revanche, lorsque je saisis une information sur la feuille de calcul
protégée :
- j'ai une fenêtre d'erreur avec le message :
Erreur d'éxécution "1004"
Erreur définie par l'application ou par l'objet.

Pouvez-vous, s'il vous plaît, m'aider à nouveau ?

Je vous remercie d'avance.

Bien cordialement,
François-Marie







"isabelle" a écrit :

bonjour François-Marie,


cette ligne de commande doit être mit sur une seule ligne

ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True,
Contents:=True, Scenarios:=True

isabelle

François-Marie a écrit :
> Bonjour Isabelle,
>
> Je vous remercie de votre réponse.
> J'ai saisi votre règle dans worksheet.
> Toutefois, je me heurte à un problème de compilation.
>
> En effet, quand je réouvre mon fichier et que je saisis une nouvelle
> information, en maintenant la feuille de calcul protégée :
> - j'ai une fenêtre d'erreur avec le message : "Erreur de compilation dans le
> module caché : Feuil 1"
>
> Si je vais sur la feuille code (visual basic) et que je reviens sur la
> feuille de calcul pour saisir une information :
> - je suis renvoyé sur la feuille visual basic, avec affichage d'une fenêtre
> d'erreur comportant le message : "Erreur de compilation : erreur de syntaxe"
> - la phrase :
> "ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True," est
> alors surlignée en bleu.
>
> J'ai essayé de saisir le texte de différentes façons, mais je me heurte
> toujours au même problème.
>
> Pouvez-vous, s'il vous plaît, m'aider de nouveau pour résoudre ce problème
> de compilation.
>
> Je vous remercie d'avance et vous souhaite une excellente journée.
>
> Bien amicalement,
> François-Marie.
>
> "isabelle" a écrit :
>
>
>> bonjour François-Marie,
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>> ActiveSheet.Unprotect Password:="LeMotDePasse"
>> If Not Intersect(Target, Range("A2:N178")) Is Nothing _
>> Then [N1] = Now
>> ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True,
>> Contents:=True, Scenarios:=True
>> End Sub
>>
>>
>> isabelle
>>
>> François-Marie a écrit :
>>
>>> Bonjour,
>>>
>>> S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
>>> résoudre un problème.
>>>
>>> Je travaille sur Excel 2000.
>>>
>>> En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
>>> mise à jour alimentée automatiquement quand on fait une modification dans une
>>> plage de cellules.
>>>
>>> J’ai saisi sous visual basic de ma feuille de calcul le code :
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Range)
>>> If Not Intersect(Target, Range("A2:N178")) Is Nothing _
>>> Then [N1] = Now
>>> End Sub
>>>
>>> Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.
>>>
>>> Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
>>> basic ne produit plus ses effets :
>>>
>>> En effet, lorsque que je modifie le contenu d’une cellule de la feuille
>>> protégée, il s’affiche
>>> une fenêtre intitulée Microsoft Visual Basic comportant les libellés
>>> d’erreur :
>>> - Erreur d’exécution « 1004 »
>>> - Erreur définie par l’application ou par l’objet.
>>>
>>> Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
>>> prise en compte, mais ma date de mise à jour ne « bouge pas » ;
>>>
>>> Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.
>>>
>>>
>>> J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
>>> rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
>>> cellules et les formules que j’ai mises en place, ne sont plus verrouillées.
>>>
>>>
>>> Je vous remercie de me préciser ce que je dois faire pour que mon code
>>> produise ses effets tout en maintenant ma feuille protégée :
>>> c'est-à-dire tout en verrouillant les cellules contenant des formules pour
>>> ne laisser déverrouillées que les cellules dans lesquelles des informations
>>> doivent être saisies (cellules déverrouillées constituant la plage dans
>>> laquelle le code mis dans visual doit produire ses effets).
>>>
>>>
>>> En vous remerciant d’avance pour votre collaboration, je vous souhaite une
>>> bonne fin de journée.
>>> Cordialement,
>>> François-Marie.
>>>
>>>
>>>



Avatar
François-Marie
Bonjour LSteph

Je te remercie de ta réponse.
J'ai bien accédé au "thisworkbook".
J'y ai saisi :
Dim sh as worksheet
For each sh in thisworkbook
sh.protect password:="toto", userinterfaceonly:=true
next

Je me heurte toutefois à un problème: quand je ferme mon fichier et que je
le rouvre, à la réouverture :
- j'ai une fenêtre d'erreur avec le message :
Erreur d'éxécution '438"
Propriété ou méthode non gérée par cet objet.


Je te remercie de m'apporter à nouveau ton aide.

Bien cordialement,
François-Marie




--
Je travaille sous EXCELL 2007 et vous remercie tous d''avance pour votre aide.

Cordialement,
François-Marie.


"LSteph" a écrit :

Bonjour F-M,
depuis excel
alt+F11 te permet d'accèder au VBEditor
sur ta gauche tu dois voir un volet concernant l'explorateur de projet
sinon appuie sur ctrl+r
en ouvrant celui de ton classeur tu accède aux différentys objets du projet
dedans il y a le thisworkbook
en doublecliquant dessus
tu ouvres son private module
dans la fenêtre de module il y a en haut deux déroulants
à gauche Général et workbook
à droite une fois r sélerctionné tui trouves les évennements liés au
classeur...
par défaut c'est open qui apparait!

Cordialement.

--
lSteph

François-Marie a écrit :
> Bonjour LSteph,
>
> Je te remercie pour ta réponse.
> J'ai de grandes difficultés pour saisir ta règle.
>
> En effet, je ne sais pas comment on fait pour aller dans :
> le "thisworkbook du classeur".
> Je ne sais aller que sur le worksheet d'une feuille.
>
> Pourrais-tu, s'il te plaît, me dire ce qu'il faut faire pour obtenir le
> "thisworkbook".
>
> Je te remercie d'avance pour ton aide.
>
> Bien cordialement,
> François-Marie.
>
>
>
> "LSteph" a écrit :
>
>> Bonjour,
>>
>> Au lieu de protéger manuellement les feuilles
>> et ensuite de devoir déprotéger reprotéger
>> à chaque macro.Utilise userinterfaceonly, ainsi
>> se met obligatoirement à l'ouverture et protègera de l'utilisateur
>> en laissant agir les macros:
>>
>> Enlève la protection puis mets ceci exemple mot de passe "toto"
>>
>> 'dans le thisworkbook du classeur
>>
>> Private Sub Workbook_open()
>> Dim sh as worksheet
>> For each sh in thisworkbook
>> sh.protect password:="toto", userinterfaceonly:=true
>> next
>> end sub
>>
>>
>> 'pour tester fermer et rouvrir le classeur
>>
>> 'lSteph
>>
>>
>> François-Marie a écrit :
>>> Bonjour,
>>>
>>> S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
>>> résoudre un problème.
>>>
>>> Je travaille sur Excel 2000.
>>>
>>> En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
>>> mise à jour alimentée automatiquement quand on fait une modification dans une
>>> plage de cellules.
>>>
>>> J’ai saisi sous visual basic de ma feuille de calcul le code :
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Range)
>>> If Not Intersect(Target, Range("A2:N178")) Is Nothing _
>>> Then [N1] = Now
>>> End Sub
>>>
>>> Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.
>>>
>>> Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
>>> basic ne produit plus ses effets :
>>>
>>> En effet, lorsque que je modifie le contenu d’une cellule de la feuille
>>> protégée, il s’affiche
>>> une fenêtre intitulée Microsoft Visual Basic comportant les libellés
>>> d’erreur :
>>> - Erreur d’exécution « 1004 »
>>> - Erreur définie par l’application ou par l’objet.
>>>
>>> Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
>>> prise en compte, mais ma date de mise à jour ne « bouge pas » ;
>>>
>>> Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.
>>>
>>>
>>> J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
>>> rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
>>> cellules et les formules que j’ai mises en place, ne sont plus verrouillées.
>>>
>>>
>>> Je vous remercie de me préciser ce que je dois faire pour que mon code
>>> produise ses effets tout en maintenant ma feuille protégée :
>>> c'est-à-dire tout en verrouillant les cellules contenant des formules pour
>>> ne laisser déverrouillées que les cellules dans lesquelles des informations
>>> doivent être saisies (cellules déverrouillées constituant la plage dans
>>> laquelle le code mis dans visual doit produire ses effets).
>>>
>>>
>>> En vous remerciant d’avance pour votre collaboration, je vous souhaite une
>>> bonne fin de journée.
>>> Cordialement,
>>> François-Marie.
>>>



Avatar
isabelle
bonjour François-Marie,

si tu peut, dépose ton fichier ici :

http://www.cjoint.com

et reviens donner ici le lien de téléchargement que le site va générer.
je pourrai alors le télécharger et regarder de plus prêt.

isabelle

François-Marie a écrit :
Bonjour Isabelle,

Je vous remercie de votre réponse.
J'ai saisi la igne commande sur une seule ligne. Je n'ai plus le message
d'erreur sur la compilation.

En revanche, lorsque je saisis une information sur la feuille de calcul
protégée :
- j'ai une fenêtre d'erreur avec le message :
Erreur d'éxécution "1004"
Erreur définie par l'application ou par l'objet.

Pouvez-vous, s'il vous plaît, m'aider à nouveau ?

Je vous remercie d'avance.

Bien cordialement,
François-Marie







"isabelle" a écrit :


bonjour François-Marie,


cette ligne de commande doit être mit sur une seule ligne

ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True,
Contents:=True, Scenarios:=True

isabelle

François-Marie a écrit :

Bonjour Isabelle,

Je vous remercie de votre réponse.
J'ai saisi votre règle dans worksheet.
Toutefois, je me heurte à un problème de compilation.

En effet, quand je réouvre mon fichier et que je saisis une nouvelle
information, en maintenant la feuille de calcul protégée :
- j'ai une fenêtre d'erreur avec le message : "Erreur de compilation dans le
module caché : Feuil 1"

Si je vais sur la feuille code (visual basic) et que je reviens sur la
feuille de calcul pour saisir une information :
- je suis renvoyé sur la feuille visual basic, avec affichage d'une fenêtre
d'erreur comportant le message : "Erreur de compilation : erreur de syntaxe"
- la phrase :
"ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True," est
alors surlignée en bleu.

J'ai essayé de saisir le texte de différentes façons, mais je me heurte
toujours au même problème.

Pouvez-vous, s'il vous plaît, m'aider de nouveau pour résoudre ce problème
de compilation.

Je vous remercie d'avance et vous souhaite une excellente journée.

Bien amicalement,
François-Marie.

"isabelle" a écrit :



bonjour François-Marie,

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="LeMotDePasse"
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
ActiveSheet.Protect Password:="LeMotDePasse", DrawingObjects:=True,
Contents:=True, Scenarios:=True
End Sub


isabelle

François-Marie a écrit :


Bonjour,

S’il vous plaît, l’une ou l’un d’entre vous pourrait-elle/il m’aider à
résoudre un problème.

Je travaille sur Excel 2000.

En parcourant le forum, j’ai trouvé une solution pour "monter" une date de
mise à jour alimentée automatiquement quand on fait une modification dans une
plage de cellules.

J’ai saisi sous visual basic de ma feuille de calcul le code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:N178")) Is Nothing _
Then [N1] = Now
End Sub

Ce code fonctionne bien tant que je ne protège pas ma feuille de calcul.

Dès que je protège ma feuille par un mot de passe, le code saisi sous visual
basic ne produit plus ses effets :

En effet, lorsque que je modifie le contenu d’une cellule de la feuille
protégée, il s’affiche
une fenêtre intitulée Microsoft Visual Basic comportant les libellés
d’erreur :
- Erreur d’exécution « 1004 »
- Erreur définie par l’application ou par l’objet.

Je clique alors sur « fin » : la fenêtre disparaît, ma modification est
prise en compte, mais ma date de mise à jour ne « bouge pas » ;

Si j’ôte la protection : je n’ai plus de problème, le code joue bien son rôle.


J’ai constaté qu’au niveau de la fenêtre protection, si je ne coche pas la
rubrique "contenu", je n’ai plus de message d’erreur, mais le contenu de mes
cellules et les formules que j’ai mises en place, ne sont plus verrouillées.


Je vous remercie de me préciser ce que je dois faire pour que mon code
produise ses effets tout en maintenant ma feuille protégée :
c'est-à-dire tout en verrouillant les cellules contenant des formules pour
ne laisser déverrouillées que les cellules dans lesquelles des informations
doivent être saisies (cellules déverrouillées constituant la plage dans
laquelle le code mis dans visual doit produire ses effets).


En vous remerciant d’avance pour votre collaboration, je vous souhaite une
bonne fin de journée.
Cordialement,
François-Marie.














1 2