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.

3 réponses

1 2
Avatar
LSteph
Bonsoir F-M,
...désolé j'avais omis un détail

Private Sub Workbook_open()

Dim sh As Worksheet

For Each sh In ThisWorkbook.Sheets
sh.Protect Password:="toto", userinterfaceonly:=True
Next

End Sub

'lSteph

François-Marie a écrit :
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






Avatar
François-Marie
Bonjour LSteph,

Votre règle fonctionne parfaitement.

Je vous remercie beaucoup pour votre aide très précieuse.

Bien cordialement,
François-Marie


"LSteph" a écrit :

Bonsoir F-M,
....désolé j'avais omis un détail

Private Sub Workbook_open()

Dim sh As Worksheet

For Each sh In ThisWorkbook.Sheets
sh.Protect Password:="toto", userinterfaceonly:=True
Next

End Sub

'lSteph

François-Marie a écrit :
> 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
>
>
>
>



Avatar
François-Marie
Bonjour Isabelle,

Je rentre de quelques jours de congés et je retrouve excel.
Je te remercie pour ta réponse.

Je voulais reproduire le cas avant de déposer mon fichier comme tu me l’as
demandé.
J’ai alors constaté que j’oubliais de saisir une partie du code, d’où le
message d’erreur que je rencontrais.
Lorsque je saisis correctement le code en entier, tout marche à la perfection.

Je suis désolé de t’avoir mise à contribution à tort le 7 juillet dernier.

Je te remercie pour ton aide, ton efficacité et la clarté de tes réponses.

Très bonne journée.
Bien Cordialement,
Jean-François.



"isabelle" a écrit :

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