OVH Cloud OVH Cloud

Jean-Pierre

7 réponses
Avatar
Méthode Protect
Bonjour
J'ai un probl=E8me sur une macro.
Sur une feuille de navigation j'ai quelque boutons=20
rattach=E9s =E0 mes macros.
Comme par ex. le bouton "Protection" qui s'occupe de=20
prot=E9ger toute les feuilles du classeur avec un mot de=20
passe en dur dans le code. Et qui fonctionne nickel.

Idem avec D=E9protection

Pr=E9cision: ce document est transmis =E0 des tierce personnes=20
ensuite, c'est pourquoi j'ai placer un bouton "bloquer la=20
navigation" afin que ces personnes ne puissent pas utilis=E9=20
les macro que j'ai sur cette feuille et qui fait=20
hypercache la feuille.

Maintenant mon probl=E8me est le suivant:
Tant que je ne cache pas ma feuille de navigation avec le=20
bouton "bloquer la navigation", je peux sans probl=E8me=20
utiliser les 2 boutons "Protection" et "D=E9protection" et=20
ceci =E0 volont=E9.=20

DONC MON CODE FONTIONNE...=20

Maintenant si je cache ma feuille de navigation, et que je=20
l'affiche ensuite, au moment o=F9 je clique sur "Protection"=20
ou "D=E9protection", j'ai l'erreur suivante:

Erreur d'execution'1004'
La m=E9thode Protect de la classe worksheet =E0 =E9chou=E9

si je referme mon fichier et que je l'ouvre, je peux=20
recontinuer =E0 prot=E9ger et d=E9prot=E9ger =E0 volont=E9...

Bizarre, non...

Mon code pour prot=E9ger:

Sheets("Sommaire").Select
ActiveSheet.Protect ("pass2000")<--- le code s'arr=EAte ici


Sheets("R=E9capitulation").Select
ActiveSheet.Protect ("pass2000") =20

Sheets("Reporting Prestations").Visible =3D 1
Sheets("Reporting Prestations").Select
ActiveSheet.Protect ("pass2000")

je suis =E0 court d'id=E9e...
Merci pour votre aide

JPierre

7 réponses

Avatar
isabelle
bonjour Jean Pierre,

il n'est pas nécessaire de sélectionner la feuille, c'est ce qui cause
l'erreur.

Sheets("Sommaire").Protect ("pass2000")

isabelle


Bonjour
J'ai un problème sur une macro.
Sur une feuille de navigation j'ai quelque boutons
rattachés à mes macros.
Comme par ex. le bouton "Protection" qui s'occupe de
protéger toute les feuilles du classeur avec un mot de
passe en dur dans le code. Et qui fonctionne nickel.

Idem avec Déprotection

Précision: ce document est transmis à des tierce personnes
ensuite, c'est pourquoi j'ai placer un bouton "bloquer la
navigation" afin que ces personnes ne puissent pas utilisé
les macro que j'ai sur cette feuille et qui fait
hypercache la feuille.

Maintenant mon problème est le suivant:
Tant que je ne cache pas ma feuille de navigation avec le
bouton "bloquer la navigation", je peux sans problème
utiliser les 2 boutons "Protection" et "Déprotection" et
ceci à volonté.

DONC MON CODE FONTIONNE...

Maintenant si je cache ma feuille de navigation, et que je
l'affiche ensuite, au moment où je clique sur "Protection"
ou "Déprotection", j'ai l'erreur suivante:

Erreur d'execution'1004'
La méthode Protect de la classe worksheet à échoué

si je referme mon fichier et que je l'ouvre, je peux
recontinuer à protéger et déprotéger à volonté...

Bizarre, non...

Mon code pour protéger:

Sheets("Sommaire").Select
ActiveSheet.Protect ("pass2000")<--- le code s'arrête ici

Sheets("Récapitulation").Select
ActiveSheet.Protect ("pass2000")

Sheets("Reporting Prestations").Visible = 1
Sheets("Reporting Prestations").Select
ActiveSheet.Protect ("pass2000")

je suis à court d'idée...
Merci pour votre aide

JPierre


Avatar
michdenis
Bonjour,

Si tu utilisais ce type de syntaxe, cela te faciliterait peut être la tâche

Cet exemple montre que l'on peut "protéger" une feuille même si elle n'est pas visible " et évidemment sans avoir besoin
de la sélectionner au préalable.

'-------------------
With Worksheets("Feuil1")
.Visible = xlVeryHidden
.Protect
End With
'-------------------

Est-ce que cela résout ta difficulté ?


Salutations!



"Méthode Protect" a écrit dans le message de
news:c70201c438ed$3aab5c90$
Bonjour
J'ai un problème sur une macro.
Sur une feuille de navigation j'ai quelque boutons
rattachés à mes macros.
Comme par ex. le bouton "Protection" qui s'occupe de
protéger toute les feuilles du classeur avec un mot de
passe en dur dans le code. Et qui fonctionne nickel.

Idem avec Déprotection

Précision: ce document est transmis à des tierce personnes
ensuite, c'est pourquoi j'ai placer un bouton "bloquer la
navigation" afin que ces personnes ne puissent pas utilisé
les macro que j'ai sur cette feuille et qui fait
hypercache la feuille.

Maintenant mon problème est le suivant:
Tant que je ne cache pas ma feuille de navigation avec le
bouton "bloquer la navigation", je peux sans problème
utiliser les 2 boutons "Protection" et "Déprotection" et
ceci à volonté.

DONC MON CODE FONTIONNE...

Maintenant si je cache ma feuille de navigation, et que je
l'affiche ensuite, au moment où je clique sur "Protection"
ou "Déprotection", j'ai l'erreur suivante:

Erreur d'execution'1004'
La méthode Protect de la classe worksheet à échoué

si je referme mon fichier et que je l'ouvre, je peux
recontinuer à protéger et déprotéger à volonté...

Bizarre, non...

Mon code pour protéger:

Sheets("Sommaire").Select
ActiveSheet.Protect ("pass2000")<--- le code s'arrête ici


Sheets("Récapitulation").Select
ActiveSheet.Protect ("pass2000")

Sheets("Reporting Prestations").Visible = 1
Sheets("Reporting Prestations").Select
ActiveSheet.Protect ("pass2000")

je suis à court d'idée...
Merci pour votre aide

JPierre
Avatar
isabelle
héhé! Denis, y a du timing c'matin ;-)

isabelle


Bonjour,

Si tu utilisais ce type de syntaxe, cela te faciliterait peut être la tâche

Cet exemple montre que l'on peut "protéger" une feuille même si elle n'est pas visible " et évidemment sans avoir besoin
de la sélectionner au préalable.

'-------------------
With Worksheets("Feuil1")
.Visible = xlVeryHidden
.Protect
End With
'-------------------

Est-ce que cela résout ta difficulté ?

Salutations!

"Méthode Protect" a écrit dans le message de
news:c70201c438ed$3aab5c90$
Bonjour
J'ai un problème sur une macro.
Sur une feuille de navigation j'ai quelque boutons
rattachés à mes macros.
Comme par ex. le bouton "Protection" qui s'occupe de
protéger toute les feuilles du classeur avec un mot de
passe en dur dans le code. Et qui fonctionne nickel.

Idem avec Déprotection

Précision: ce document est transmis à des tierce personnes
ensuite, c'est pourquoi j'ai placer un bouton "bloquer la
navigation" afin que ces personnes ne puissent pas utilisé
les macro que j'ai sur cette feuille et qui fait
hypercache la feuille.

Maintenant mon problème est le suivant:
Tant que je ne cache pas ma feuille de navigation avec le
bouton "bloquer la navigation", je peux sans problème
utiliser les 2 boutons "Protection" et "Déprotection" et
ceci à volonté.

DONC MON CODE FONTIONNE...

Maintenant si je cache ma feuille de navigation, et que je
l'affiche ensuite, au moment où je clique sur "Protection"
ou "Déprotection", j'ai l'erreur suivante:

Erreur d'execution'1004'
La méthode Protect de la classe worksheet à échoué

si je referme mon fichier et que je l'ouvre, je peux
recontinuer à protéger et déprotéger à volonté...

Bizarre, non...

Mon code pour protéger:

Sheets("Sommaire").Select
ActiveSheet.Protect ("pass2000")<--- le code s'arrête ici

Sheets("Récapitulation").Select
ActiveSheet.Protect ("pass2000")

Sheets("Reporting Prestations").Visible = 1
Sheets("Reporting Prestations").Select
ActiveSheet.Protect ("pass2000")

je suis à court d'idée...
Merci pour votre aide

JPierre


Avatar
michdenis
Bonjour Isabelle,

Bien sûr ! Mais je suis certain que tu devais avoir un tic-tac d'avance, ton message apparaît en premier !!!

;-))


Salutations!


"isabelle" a écrit dans le message de news:
héhé! Denis, y a du timing c'matin ;-)

isabelle


Bonjour,

Si tu utilisais ce type de syntaxe, cela te faciliterait peut être la tâche

Cet exemple montre que l'on peut "protéger" une feuille même si elle n'est pas visible " et évidemment sans avoir
besoin

de la sélectionner au préalable.

'-------------------
With Worksheets("Feuil1")
.Visible = xlVeryHidden
.Protect
End With
'-------------------

Est-ce que cela résout ta difficulté ?

Salutations!

"Méthode Protect" a écrit dans le message de
news:c70201c438ed$3aab5c90$
Bonjour
J'ai un problème sur une macro.
Sur une feuille de navigation j'ai quelque boutons
rattachés à mes macros.
Comme par ex. le bouton "Protection" qui s'occupe de
protéger toute les feuilles du classeur avec un mot de
passe en dur dans le code. Et qui fonctionne nickel.

Idem avec Déprotection

Précision: ce document est transmis à des tierce personnes
ensuite, c'est pourquoi j'ai placer un bouton "bloquer la
navigation" afin que ces personnes ne puissent pas utilisé
les macro que j'ai sur cette feuille et qui fait
hypercache la feuille.

Maintenant mon problème est le suivant:
Tant que je ne cache pas ma feuille de navigation avec le
bouton "bloquer la navigation", je peux sans problème
utiliser les 2 boutons "Protection" et "Déprotection" et
ceci à volonté.

DONC MON CODE FONTIONNE...

Maintenant si je cache ma feuille de navigation, et que je
l'affiche ensuite, au moment où je clique sur "Protection"
ou "Déprotection", j'ai l'erreur suivante:

Erreur d'execution'1004'
La méthode Protect de la classe worksheet à échoué

si je referme mon fichier et que je l'ouvre, je peux
recontinuer à protéger et déprotéger à volonté...

Bizarre, non...

Mon code pour protéger:

Sheets("Sommaire").Select
ActiveSheet.Protect ("pass2000")<--- le code s'arrête ici

Sheets("Récapitulation").Select
ActiveSheet.Protect ("pass2000")

Sheets("Reporting Prestations").Visible = 1
Sheets("Reporting Prestations").Select
ActiveSheet.Protect ("pass2000")

je suis à court d'idée...
Merci pour votre aide

JPierre


Avatar
Jean-Pierre
Alors accrochez vous bien, parce que j'ai trouvé la
soluce...
en fait, c'est lorsque je clique sur mon bouton pour faire
revenir la page de navigation. A ce moment là, le focus
est SUR le bouton, et il est impossible de protéger une
feuille si un bouton a le focus... (d'ailleurs dans le
menu Outils -> Protection, Protéger la feuille reste grisé)

J'ai donc simplement fait un Range("A1").activate afin que
le focus se place sur la feuille.
Et ensuite seulement je peux protéger mes feuilles.

Pas simple, mais j'ai cherché un bon moment.
Merci pour votre aide.

Jean-Pierre

voila, en cherchant un peu on fini par trouver



-----Message d'origine-----
Bonjour
J'ai un problème sur une macro.
Sur une feuille de navigation j'ai quelque boutons
rattachés à mes macros.
Comme par ex. le bouton "Protection" qui s'occupe de
protéger toute les feuilles du classeur avec un mot de
passe en dur dans le code. Et qui fonctionne nickel.

Idem avec Déprotection

Précision: ce document est transmis à des tierce
personnes

ensuite, c'est pourquoi j'ai placer un bouton "bloquer la
navigation" afin que ces personnes ne puissent pas
utilisé

les macro que j'ai sur cette feuille et qui fait
hypercache la feuille.

Maintenant mon problème est le suivant:
Tant que je ne cache pas ma feuille de navigation avec le
bouton "bloquer la navigation", je peux sans problème
utiliser les 2 boutons "Protection" et "Déprotection" et
ceci à volonté.

DONC MON CODE FONTIONNE...

Maintenant si je cache ma feuille de navigation, et que
je

l'affiche ensuite, au moment où je clique
sur "Protection"

ou "Déprotection", j'ai l'erreur suivante:

Erreur d'execution'1004'
La méthode Protect de la classe worksheet à échoué

si je referme mon fichier et que je l'ouvre, je peux
recontinuer à protéger et déprotéger à volonté...

Bizarre, non...

Mon code pour protéger:

Sheets("Sommaire").Select
ActiveSheet.Protect ("pass2000")<--- le code s'arrête ici


Sheets("Récapitulation").Select
ActiveSheet.Protect ("pass2000")

Sheets("Reporting Prestations").Visible = 1
Sheets("Reporting Prestations").Select
ActiveSheet.Protect ("pass2000")

je suis à court d'idée...
Merci pour votre aide

JPierre
.



Avatar
Jean-Pierre
Alors accrochez vous bien, parce que j'ai trouvé la
soluce...
en fait, c'est lorsque je clique sur mon bouton pour faire
revenir la page de navigation. A ce moment là, le focus
est SUR le bouton, et il est impossible de protéger une
feuille si un bouton a le focus... (d'ailleurs dans le
menu Outils -> Protection, Protéger la feuille reste grisé)

J'ai donc simplement fait un Range("A1").activate afin que
le focus se place sur la feuille.
Et ensuite seulement je peux protéger mes feuilles.

Pas simple, mais j'ai cherché un bon moment.
Merci pour votre aide.

Jean-Pierre

voila, en cherchant un peu on fini par trouver



-----Message d'origine-----
Bonjour
J'ai un problème sur une macro.
Sur une feuille de navigation j'ai quelque boutons
rattachés à mes macros.
Comme par ex. le bouton "Protection" qui s'occupe de
protéger toute les feuilles du classeur avec un mot de
passe en dur dans le code. Et qui fonctionne nickel.

Idem avec Déprotection

Précision: ce document est transmis à des tierce
personnes

ensuite, c'est pourquoi j'ai placer un bouton "bloquer la
navigation" afin que ces personnes ne puissent pas
utilisé

les macro que j'ai sur cette feuille et qui fait
hypercache la feuille.

Maintenant mon problème est le suivant:
Tant que je ne cache pas ma feuille de navigation avec le
bouton "bloquer la navigation", je peux sans problème
utiliser les 2 boutons "Protection" et "Déprotection" et
ceci à volonté.

DONC MON CODE FONTIONNE...

Maintenant si je cache ma feuille de navigation, et que
je

l'affiche ensuite, au moment où je clique
sur "Protection"

ou "Déprotection", j'ai l'erreur suivante:

Erreur d'execution'1004'
La méthode Protect de la classe worksheet à échoué

si je referme mon fichier et que je l'ouvre, je peux
recontinuer à protéger et déprotéger à volonté...

Bizarre, non...

Mon code pour protéger:

Sheets("Sommaire").Select
ActiveSheet.Protect ("pass2000")<--- le code s'arrête ici


Sheets("Récapitulation").Select
ActiveSheet.Protect ("pass2000")

Sheets("Reporting Prestations").Visible = 1
Sheets("Reporting Prestations").Select
ActiveSheet.Protect ("pass2000")

je suis à court d'idée...
Merci pour votre aide

JPierre
.



Avatar
AV
Alors accrochez vous bien, parce que j'ai trouvé la soluce...


Clic droit sur le bouton --> Propriétés --> TakeFocusOnClick --> False

AV