OVH Cloud OVH Cloud

vba feuille protégée modifiée à la fermeture (peut-être !)

13 réponses
Avatar
j-pascal
Bonjour à tous,

J'ai un classeur dont l'onglet principal est protégé. Sur ce classeur,
j'effectue des tris et MEFC par macro ... J'ai mis en pratique les conseils
de JB pour "déverrouiller" et "reverrouiller" ladite feuille avant et après
le tri. Sur le principe, ça marche, mais dans mon classeur, j'ai le pb
suivants :

- Lorsque je rouvre le classeur après enregistrement, le menu "outils"
indique bien que la feuille est protégée (puisqu'il me propose d'ôter la
protection ... ) mais les cellules ne le sont plus (colonnes E et F entre
autres) ! Je dois ôter le protection (manuellement) et la remettre. J'ai
essayé de "suivre" le cheminement de la macro avec la touche "F8" depuis le
workbook_open, mais je n'ai rien trouvé d'anormal (à l'ouverture tout au
moins).
J'ai planché des heures sur le sujet, en modifiant l'emplacement des
ActiveSheet.Unprotect Password:="" et ActiveSheet.Protect Password:="" en
vain !!

A noter que le MdP est "travail" ...

Si vous avez le courage, il est ici le bougre :
http://cjoint.com/?czuDqHZN3A
Puristes de macros, s'abstenir ;-)

Un grand merci d'avance pour vos réponses éventuelles.
--
Cordialement @+
JP
PS : avec F8 comment peut-on shunter une boucle ?

3 réponses

1 2
Avatar
j-pascal
Bonjour,

"LSteph" a écrit dans le message de news:

Oui tu avais dit "travail"
cette semi-protection est dans thisworkbook


Vu (merci)

pour sqm c'est dans le module nommé spécial
et tu notes que j'ai mis Option Private module en haut
donc on voit pas sqm dans le menu outils macros
mais on peut le taper et executer.


Ok mais qui lance cette procédure ? Pour moi, une procédure qui n'est pas
"auto_open" ou lancée par "call" ne s'exécute pas ! je ne comprends pas,
désolé.

Je n'ai pas cherché à comprendre ou rectifier le reste ,


Il me semblait que mes "protect..." et "unprotect..." avaient disparu ! Je
devais être fatigué ;-)

il est tard, je vais dormir.


(et moi, j'avais hâte de me réveiller pour connaître la réponse ;-) Pas
autant de mérite que toi !)

Bonne journée,

JP

Si cela t'aide c'est tant mieux, sinon tu nous diras

@+

Cordialement.

lSteph

Re,

C'est incroyable, ça a l'air de marcher parfaitement !
Mais je ne vois pas d'où est lancé "sub sqm ()" ?
Tu as supprimé tous mes ActiveSheet.Protect Password:="mdp" etc. ?
Je ne trouve pas : userinterfaceonly:=true dans le code !

A+ ?

JP

"LSteph" a écrit dans le message de news:

Bonsoir,

Le fait d'ajouter
userinterfaceonly:=true

à
ActiveSheet.Protect Password:="mdp"


ce qui donne
ActiveSheet.protect password:="mdp", userinterfaceonly:=true

Quel est l'effet de


évite d'avoir sans arrêt à déprotéger et reprotéger en début et fin de
code.

Ce qui sera probablement une solution à tes soucis, outre d'avoir à
t'assurer que les cellules concernées sont bien locked.

Je ne sais si cela solutionnera ton pb qui ne se produit pas chez moi.
Quoiqu'il en soit, s'il s'agit de protèger mais pouvoir executer du code
s'éviter les déprotège reprotège est amha une solution plus confortable
et en l'occurence ce paramètre de protect est prévu pour.

http://cjoint.com/?czx2VxjZJd


Cordialement.

lSteph

Bonsoir,

Dans mon cas (...) cela signifie-t-il que je doivent remplacer :
ActiveSheet.protect password:="mdp", userinterfaceonly:=true
à
ActiveSheet.Protect Password:="mdp"
?

Si oui, faut-il que j'utilise quand-même :
ActiveSheet.Unprotect Password:="mdp"
Auquel je dois ajouter : ", userinterfaceonly:=true
?

Quel est l'effet de "userinterfaceonly" ?
J'avoue qu'à ce stade, je ne comprends pas grand chose ;-(

A+ ?

JP

PS : aussi merdique que puisse être ce classeur, j'aimerais bien
pouvoir l'utiliser ...
J'ajouterais même que si je viens à bout de ce pb, je suis à peu près
sûr que je pourrai le mettre à profit pour bien d'autre choses.
Conclusion : je suis (très) motivé ;-)

PS : comment sort-on d'une boucle avec F8 ? (svp !)

"LSteph" a écrit dans le message de news:
%
Bonjour,

Pour ne plus être ennuyé avec cette méthode
utilise userinterfaceonly
cela restreint la protection à l'interface utilisateur
Au lieu d'avoir à déprotèger reprotèger sans arrêt
tu protèges à l'ouverture ou autre et tu peux agir par macro.

ActiveSheet.protect password:="mdp", userinterfaceonly:=true

Cordialement.

lSteph




Bonjour à tous,

J'ai un classeur dont l'onglet principal est protégé. Sur ce
classeur, j'effectue des tris et MEFC par macro ... J'ai mis en
pratique les conseils de JB pour "déverrouiller" et "reverrouiller"
ladite feuille avant et après le tri. Sur le principe, ça marche,
mais dans mon classeur, j'ai le pb suivants :

- Lorsque je rouvre le classeur après enregistrement, le menu
"outils" indique bien que la feuille est protégée (puisqu'il me
propose d'ôter la protection ... ) mais les cellules ne le sont plus
(colonnes E et F entre autres) ! Je dois ôter le protection
(manuellement) et la remettre. J'ai essayé de "suivre" le cheminement
de la macro avec la touche "F8" depuis le workbook_open, mais je n'ai
rien trouvé d'anormal (à l'ouverture tout au moins).
J'ai planché des heures sur le sujet, en modifiant l'emplacement des
ActiveSheet.Unprotect Password:="" et ActiveSheet.Protect
Password:="" en vain !!

A noter que le MdP est "travail" ...

Si vous avez le courage, il est ici le bougre :
http://cjoint.com/?czuDqHZN3A
Puristes de macros, s'abstenir ;-)

Un grand merci d'avance pour vos réponses éventuelles.














Avatar
lSteph
Bonjour,

Pour précisions je reformule donc:

Premier point:
plutôt qu' auto_open s'utilise plus conventionnellement, depuis déjà
pas mal de versions
l'évennement Workbook_Open situé dans le codemodule ThisWorkbook du
classeur,
en tant qu'évennement de niveau Workbook;

C'est là que j'ai mis un bout de code dans l'exemple que je t'ai
adressé, pour cause il fallait bien que j'enlève
tu n'as pas rêvé, les unprotect protect redondants par rapport à
l'objectif de cette reprise de ton classeur en tant qu'exemple si je
voulais qu'il fonctionne,
après c'est à toi d'adapter ou non à ta convenance dans ton propre
classeur.

A ce titre voici si tu veux un exemple que tu peux mettre dans un
ThisWorkbook
appliqué à l'ensemble des feuilles de calcul du classeur :

Private Sub Workbook_Open()
dim wf as worksheet

For Each wf In ThisWorkbook.Worksheets
wf.Protect password:="thepass", userinterfaceonly:=True
Next
End sub

Second point:
le code sqm qui se trouve dans le module Special n'a rien à voir ,
il m'a juste servi pour enregistrer sous un autre nom ton classeur.
Puisque dans le même ThisWorkbook tu as mis un before save
qui vise à empêcher l'enregistrement sous.

A toutes fins utiles
il existe d'autres évennements que tu trouve dans le déroulant, à
droite en haut du module, en fonction
de l'objet choisi dans le déroulant en haut à gauche.

Parmi ceux de Workbook il y a aussi before close qui est à auto_close
ce que open est à auto_open.

Cordialement.

lSteph



On 26 fév, 08:43, "j-pascal" wrote:
Bonjour,

"LSteph" a écrit dans le message de news:


Oui tu avais dit "travail"
cette semi-protection est dans thisworkbook


Vu (merci)

pour sqm c'est dans le module nommé spécial
et tu notes que j'ai mis Option Private module en haut
donc on voit pas sqm dans le menu outils macros
mais on peut le taper et executer.


Ok mais qui lance cette procédure ? Pour moi, une procédure qui n'est pas
"auto_open" ou lancée par "call" ne s'exécute pas ! je ne comprends p as,
désolé.

Je n'ai pas cherché à comprendre ou rectifier le reste ,


Il me semblait que mes "protect..." et "unprotect..." avaient disparu ! Je
devais être fatigué ;-)

il est tard, je vais dormir.


(et moi, j'avais hâte de me réveiller pour connaître la réponse ; -) Pas
autant de mérite que toi !)

Bonne journée,

JP



Si cela t'aide c'est tant mieux, sinon tu nous diras

@+

Cordialement.

lSteph

Re,

C'est incroyable, ça a l'air de marcher parfaitement !
Mais je ne vois pas d'où est lancé "sub sqm ()" ?
Tu as supprimé tous mes ActiveSheet.Protect Password:="mdp" etc. ?
Je ne trouve pas : userinterfaceonly:=true dans le code !

A+ ?

JP

"LSteph" a écrit dans le message de news:

Bonsoir,

Le fait d'ajouter
userinterfaceonly:=true

à
ActiveSheet.Protect Password:="mdp"


ce qui donne
ActiveSheet.protect password:="mdp", userinterfaceonly:=true

Quel est l'effet de


évite d'avoir sans arrêt à déprotéger et reprotéger en d ébut et fin de
code.

Ce qui sera probablement une solution à tes soucis, outre d'avoir à
t'assurer que les cellules concernées sont bien locked.

Je ne sais si cela solutionnera ton pb qui ne se produit pas chez moi.
Quoiqu'il en soit, s'il s'agit de protèger mais pouvoir executer du code
s'éviter les déprotège reprotège est amha une solution plus c onfortable
et en l'occurence ce paramètre de protect est prévu pour.

http://cjoint.com/?czx2VxjZJd

Cordialement.

lSteph

Bonsoir,

Dans mon cas (...) cela signifie-t-il que je doivent remplacer :
ActiveSheet.protect password:="mdp", userinterfaceonly:=true
à
ActiveSheet.Protect Password:="mdp"
?

Si oui, faut-il que j'utilise quand-même :
ActiveSheet.Unprotect Password:="mdp"
Auquel je dois ajouter : ", userinterfaceonly:=true
?

Quel est l'effet de "userinterfaceonly" ?
J'avoue qu'à ce stade, je ne comprends pas grand chose ;-(

A+ ?

JP

PS : aussi merdique que puisse être ce classeur, j'aimerais bien
pouvoir l'utiliser ...
J'ajouterais même que si je viens à bout de ce pb, je suis à p eu près
sûr que je pourrai le mettre à profit pour bien d'autre choses.
Conclusion : je suis (très) motivé ;-)

PS : comment sort-on d'une boucle avec F8 ? (svp !)

"LSteph" a écrit dans le message de news:
%
Bonjour,

Pour ne plus être ennuyé avec cette méthode
utilise userinterfaceonly
cela restreint la protection à l'interface utilisateur
Au lieu d'avoir à déprotèger reprotèger sans arrêt
tu protèges à l'ouverture ou autre et tu peux agir par macro.

ActiveSheet.protect password:="mdp", userinterfaceonly:=true

Cordialement.

lSteph

Bonjour à tous,

J'ai un classeur dont l'onglet principal est protégé. Sur ce
classeur, j'effectue des tris et MEFC par macro ... J'ai mis en
pratique les conseils de JB pour "déverrouiller" et "reverrouill er"
ladite feuille avant et après le tri. Sur le principe, ça marc he,
mais dans mon classeur, j'ai le pb suivants :

- Lorsque je rouvre le classeur après enregistrement, le menu
"outils" indique bien que la feuille est protégée (puisqu'il me
propose d'ôter la protection ... ) mais les cellules ne le sont plus
(colonnes E et F entre autres) ! Je dois ôter le protection
(manuellement) et la remettre. J'ai essayé de "suivre" le chemin ement
de la macro avec la touche "F8" depuis le workbook_open, mais je n 'ai
rien trouvé d'anormal (à l'ouverture tout au moins).
J'ai planché des heures sur le sujet, en modifiant l'emplacement des
ActiveSheet.Unprotect Password:="" et ActiveSheet.Protect
Password:="" en vain !!

A noter que le MdP est "travail" ...

Si vous avez le courage, il est ici le bougre :
http://cjoint.com/?czuDqHZN3A
Puristes de macros, s'abstenir ;-)

Un grand merci d'avance pour vos réponses éventuelles.














Avatar
j-pascal
Bsr ISteph,

J'ai bien relu ta réponse. J'ai globalement assez bien compris ... et j'en
ai profité pour "customizer" mon appli. Tout marche bien. Néanmoins, je ne
comprends pas comment fonctionne le "userinterfaceonly:=True" ; tu me diras
que ce n'est peut-être pas important de savoir comme ça marche, du moment
que ça marche, mais bon ...

En tout cas, merci encore pour tout. Je suis sûr d'utiliser ces précieux
conseils (très) souvent !

Cordialement,

JP

PS : ce qui va peut-être te surprendre, c'est que lorsque j'utilise qqch de
nouveau (et que je suis en mesure d'expliquer comment ça marche) j'en fais
profiter pas mal de monde autour de moi ;-)


"lSteph" a écrit dans le message de news:

Bonjour,

Pour précisions je reformule donc:

Premier point:
plutôt qu' auto_open s'utilise plus conventionnellement, depuis déjà
pas mal de versions
l'évennement Workbook_Open situé dans le codemodule ThisWorkbook du
classeur,
en tant qu'évennement de niveau Workbook;

C'est là que j'ai mis un bout de code dans l'exemple que je t'ai
adressé, pour cause il fallait bien que j'enlève
tu n'as pas rêvé, les unprotect protect redondants par rapport à
l'objectif de cette reprise de ton classeur en tant qu'exemple si je
voulais qu'il fonctionne,
après c'est à toi d'adapter ou non à ta convenance dans ton propre
classeur.

A ce titre voici si tu veux un exemple que tu peux mettre dans un
ThisWorkbook
appliqué à l'ensemble des feuilles de calcul du classeur :

Private Sub Workbook_Open()
dim wf as worksheet

For Each wf In ThisWorkbook.Worksheets
wf.Protect password:="thepass", userinterfaceonly:=True
Next
End sub

Second point:
le code sqm qui se trouve dans le module Special n'a rien à voir ,
il m'a juste servi pour enregistrer sous un autre nom ton classeur.
Puisque dans le même ThisWorkbook tu as mis un before save
qui vise à empêcher l'enregistrement sous.

A toutes fins utiles
il existe d'autres évennements que tu trouve dans le déroulant, à
droite en haut du module, en fonction
de l'objet choisi dans le déroulant en haut à gauche.

Parmi ceux de Workbook il y a aussi before close qui est à auto_close
ce que open est à auto_open.

Cordialement.

lSteph



On 26 fév, 08:43, "j-pascal" wrote:
Bonjour,

"LSteph" a écrit dans le message de news:


Oui tu avais dit "travail"
cette semi-protection est dans thisworkbook


Vu (merci)

pour sqm c'est dans le module nommé spécial
et tu notes que j'ai mis Option Private module en haut
donc on voit pas sqm dans le menu outils macros
mais on peut le taper et executer.


Ok mais qui lance cette procédure ? Pour moi, une procédure qui n'est pas
"auto_open" ou lancée par "call" ne s'exécute pas ! je ne comprends pas,
désolé.

Je n'ai pas cherché à comprendre ou rectifier le reste ,


Il me semblait que mes "protect..." et "unprotect..." avaient disparu ! Je
devais être fatigué ;-)

il est tard, je vais dormir.


(et moi, j'avais hâte de me réveiller pour connaître la réponse ;-) Pas
autant de mérite que toi !)

Bonne journée,

JP



Si cela t'aide c'est tant mieux, sinon tu nous diras

@+

Cordialement.

lSteph

Re,

C'est incroyable, ça a l'air de marcher parfaitement !
Mais je ne vois pas d'où est lancé "sub sqm ()" ?
Tu as supprimé tous mes ActiveSheet.Protect Password:="mdp" etc. ?
Je ne trouve pas : userinterfaceonly:=true dans le code !

A+ ?

JP

"LSteph" a écrit dans le message de news:

Bonsoir,

Le fait d'ajouter
userinterfaceonly:=true

à
ActiveSheet.Protect Password:="mdp"


ce qui donne
ActiveSheet.protect password:="mdp", userinterfaceonly:=true

Quel est l'effet de


évite d'avoir sans arrêt à déprotéger et reprotéger en début et fin de
code.

Ce qui sera probablement une solution à tes soucis, outre d'avoir à
t'assurer que les cellules concernées sont bien locked.

Je ne sais si cela solutionnera ton pb qui ne se produit pas chez moi.
Quoiqu'il en soit, s'il s'agit de protèger mais pouvoir executer du
code
s'éviter les déprotège reprotège est amha une solution plus
confortable
et en l'occurence ce paramètre de protect est prévu pour.

http://cjoint.com/?czx2VxjZJd

Cordialement.

lSteph

Bonsoir,

Dans mon cas (...) cela signifie-t-il que je doivent remplacer :
ActiveSheet.protect password:="mdp", userinterfaceonly:=true
à
ActiveSheet.Protect Password:="mdp"
?

Si oui, faut-il que j'utilise quand-même :
ActiveSheet.Unprotect Password:="mdp"
Auquel je dois ajouter : ", userinterfaceonly:=true
?

Quel est l'effet de "userinterfaceonly" ?
J'avoue qu'à ce stade, je ne comprends pas grand chose ;-(

A+ ?

JP

PS : aussi merdique que puisse être ce classeur, j'aimerais bien
pouvoir l'utiliser ...
J'ajouterais même que si je viens à bout de ce pb, je suis à peu près
sûr que je pourrai le mettre à profit pour bien d'autre choses.
Conclusion : je suis (très) motivé ;-)

PS : comment sort-on d'une boucle avec F8 ? (svp !)

"LSteph" a écrit dans le message de news:
%
Bonjour,

Pour ne plus être ennuyé avec cette méthode
utilise userinterfaceonly
cela restreint la protection à l'interface utilisateur
Au lieu d'avoir à déprotèger reprotèger sans arrêt
tu protèges à l'ouverture ou autre et tu peux agir par macro.

ActiveSheet.protect password:="mdp", userinterfaceonly:=true

Cordialement.

lSteph

Bonjour à tous,

J'ai un classeur dont l'onglet principal est protégé. Sur ce
classeur, j'effectue des tris et MEFC par macro ... J'ai mis en
pratique les conseils de JB pour "déverrouiller" et "reverrouiller"
ladite feuille avant et après le tri. Sur le principe, ça marche,
mais dans mon classeur, j'ai le pb suivants :

- Lorsque je rouvre le classeur après enregistrement, le menu
"outils" indique bien que la feuille est protégée (puisqu'il me
propose d'ôter la protection ... ) mais les cellules ne le sont
plus
(colonnes E et F entre autres) ! Je dois ôter le protection
(manuellement) et la remettre. J'ai essayé de "suivre" le
cheminement
de la macro avec la touche "F8" depuis le workbook_open, mais je
n'ai
rien trouvé d'anormal (à l'ouverture tout au moins).
J'ai planché des heures sur le sujet, en modifiant l'emplacement
des
ActiveSheet.Unprotect Password:="" et ActiveSheet.Protect
Password:="" en vain !!

A noter que le MdP est "travail" ...

Si vous avez le courage, il est ici le bougre :
http://cjoint.com/?czuDqHZN3A
Puristes de macros, s'abstenir ;-)

Un grand merci d'avance pour vos réponses éventuelles.














1 2