J'ai essayé de m'inspirer d'un classeur qui avait fait
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un long
fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le téléchargement
dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
J'ai essayé de m'inspirer d'un classeur qui avait fait
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un long
fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le téléchargement
dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
J'ai essayé de m'inspirer d'un classeur qui avait fait
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un long
fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le téléchargement
dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et par
macro, on peut agir. Donc on passe par ce qui est prévu dans le programme
et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu près
ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il en soit
dans toute autre alternative faut oublier la protection parceque même
quelqu'un qui ne sait pas écrire un bout de code a vite fait sur la toile
de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un long
fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le téléchargement
dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et par
macro, on peut agir. Donc on passe par ce qui est prévu dans le programme
et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu près
ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il en soit
dans toute autre alternative faut oublier la protection parceque même
quelqu'un qui ne sait pas écrire un bout de code a vite fait sur la toile
de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un long
fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le téléchargement
dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et par
macro, on peut agir. Donc on passe par ce qui est prévu dans le programme
et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu près
ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il en soit
dans toute autre alternative faut oublier la protection parceque même
quelqu'un qui ne sait pas écrire un bout de code a vite fait sur la toile
de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un long
fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le téléchargement
dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active
par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active
par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uUPsnNT1HHA.4816@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active
par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active
par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active
par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uUPsnNT1HHA.4816@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active
par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly et
montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave (comme
j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai fait
ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active par
rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs dedans
et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et par
macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il en
soit dans toute autre alternative faut oublier la protection parceque
même quelqu'un qui ne sait pas écrire un bout de code a vite fait sur la
toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly et
montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave (comme
j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai fait
ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LSteph
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active par
rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs dedans
et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uUPsnNT1HHA.4816@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et par
macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il en
soit dans toute autre alternative faut oublier la protection parceque
même quelqu'un qui ne sait pas écrire un bout de code a vite fait sur la
toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly et
montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave (comme
j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai fait
ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que le
fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au début
de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly" et
autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler
par macro une feuille protégée, tout en laissant la protection active par
rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs dedans
et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et par
macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il en
soit dans toute autre alternative faut oublier la protection parceque
même quelqu'un qui ne sait pas écrire un bout de code a vite fait sur la
toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont pas
"systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont parfois
accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher crée
avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
(Moment de solitude ...)
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
(Moment de solitude ...)
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eBqwyba1HHA.3768@TK2MSFTNGP06.phx.gbl...
Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:
La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LSteph
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uUPsnNT1HHA.4816@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
(Moment de solitude ...)
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eBqwyba1HHA.3768@TK2MSFTNGP06.phx.gbl...
Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:
La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LSteph
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uUPsnNT1HHA.4816@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly et
montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au
début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eBqwyba1HHA.3768@TK2MSFTNGP06.phx.gbl...
Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly et
montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LSteph
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au
début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uUPsnNT1HHA.4816@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû mettre
ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque chose
en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly et
montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter les
effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois "épuré",
pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére des
"bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas) au
début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi qu'il
en soit dans toute autre alternative faut oublier la protection
parceque même quelqu'un qui ne sait pas écrire un bout de code a vite
fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée un
commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
(?) ...
Oui!
Bonjour,
J'étudie toujours avec bcp de soin les réponses qu'on m'apporte sur le
forum. De même, j'enregistre et ouvre les classeurs qu'on met à ma
disposition sur cjoint.com. Assez souvent (comme c'est le cas pour ton
dernier classeur !) je les archive précieusement car il sont simples et
surtout très pédagogiques ;-)
Les problèmes compliqués, pris séparément, souvent "souvent"
intelligibles. Mais 2 petits problèmes combinés peuvent devenir un GROS
pb ... pour moi ;-)
Un grand merci pour l'aide que tu m'as apportée jusqu'ici et ... bonnes
vacances (?) ...
@+
JP
"LSteph" a écrit dans le message de news:...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû
mettre ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le "
& LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible
!", vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme
: " & "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque
chose en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est
l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je
l'ai fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code
(je veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis,
que le fait de lancer un tri par macro sur une feuille protégée
génére des "bugs" ... Dans le cas présent, si je clique sur F8 (pas
à pas) au début de ma procédure de Tri, je me retrouve dans la
procédure "Worksheet_Change", etc, et là je me dis que les
"protections" et "déprotections" consécutives provoquent des effets
non voulus ...
La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant
pas enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai
fait l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout
et par macro, on peut agir. Donc on passe par ce qui est prévu
dans le programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à
peu près ce qu'il fait( à bon ou mauvais essient certes ) mais
quoi qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout
de code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que
tu rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet
d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne
sont pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
(?) ...
Oui!
Bonjour,
J'étudie toujours avec bcp de soin les réponses qu'on m'apporte sur le
forum. De même, j'enregistre et ouvre les classeurs qu'on met à ma
disposition sur cjoint.com. Assez souvent (comme c'est le cas pour ton
dernier classeur !) je les archive précieusement car il sont simples et
surtout très pédagogiques ;-)
Les problèmes compliqués, pris séparément, souvent "souvent"
intelligibles. Mais 2 petits problèmes combinés peuvent devenir un GROS
pb ... pour moi ;-)
Un grand merci pour l'aide que tu m'as apportée jusqu'ici et ... bonnes
vacances (?) ...
@+
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
e4ri8Zi1HHA.6072@TK2MSFTNGP03.phx.gbl...
...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû
mettre ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le "
& LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible
!", vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme
: " & "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque
chose en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eBqwyba1HHA.3768@TK2MSFTNGP06.phx.gbl...
Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:
La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est
l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je
l'ai fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LSteph
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code
(je veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis,
que le fait de lancer un tri par macro sur une feuille protégée
génére des "bugs" ... Dans le cas présent, si je clique sur F8 (pas
à pas) au début de ma procédure de Tri, je me retrouve dans la
procédure "Worksheet_Change", etc, et là je me dis que les
"protections" et "déprotections" consécutives provoquent des effets
non voulus ...
La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant
pas enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai
fait l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uUPsnNT1HHA.4816@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout
et par macro, on peut agir. Donc on passe par ce qui est prévu
dans le programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à
peu près ce qu'il fait( à bon ou mauvais essient certes ) mais
quoi qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout
de code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que
tu rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet
d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne
sont pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
(?) ...
Oui!
Bonjour,
J'étudie toujours avec bcp de soin les réponses qu'on m'apporte sur le
forum. De même, j'enregistre et ouvre les classeurs qu'on met à ma
disposition sur cjoint.com. Assez souvent (comme c'est le cas pour ton
dernier classeur !) je les archive précieusement car il sont simples et
surtout très pédagogiques ;-)
Les problèmes compliqués, pris séparément, souvent "souvent"
intelligibles. Mais 2 petits problèmes combinés peuvent devenir un GROS
pb ... pour moi ;-)
Un grand merci pour l'aide que tu m'as apportée jusqu'ici et ... bonnes
vacances (?) ...
@+
JP
"LSteph" a écrit dans le message de news:...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû
mettre ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le "
& LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible
!", vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme
: " & "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque
chose en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est
l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura disparu..§!...
donc il faut appeller essentiellement cette protection comme je
l'ai fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code
(je veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis,
que le fait de lancer un tri par macro sur une feuille protégée
génére des "bugs" ... Dans le cas présent, si je clique sur F8 (pas
à pas) au début de ma procédure de Tri, je me retrouve dans la
procédure "Worksheet_Change", etc, et là je me dis que les
"protections" et "déprotections" consécutives provoquent des effets
non voulus ...
La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant
pas enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai
fait l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
C'est pourtant la solution simple et efficace , tu protèges tout
et par macro, on peut agir. Donc on passe par ce qui est prévu
dans le programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à
peu près ce qu'il fait( à bon ou mauvais essient certes ) mais
quoi qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout
de code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que
tu rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet
d'un long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne
sont pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,
1-Tu as mis call restitue, mais la sub restitue n'y est pas
et c'est elle qui remet tout à l'ouverture, si on a activé les macros et
avec userinterfaceonly en guise de protection.
A défaut le tri ne fonctionnera pas.
2-Pas sûr que le cumul de deux beforesave aille ainsi sans souci de
fermeture ou enregistrement.
Si ajout il y a , il doit avoir lieu avant enregistrement du classeur,
mais effectivement pas de la copie, sauf si'la copie, s'assortit également
des mêmes dispositions dans le workbook_open.
4-Attention j'avais utilisé Feuil3 (codename) en guise d'avertissement,
dans l'exemple en est-il ainsi dans le classeur.
(?) ...
Oui!
@+
LStephBonjour,
J'étudie toujours avec bcp de soin les réponses qu'on m'apporte sur le
forum. De même, j'enregistre et ouvre les classeurs qu'on met à ma
disposition sur cjoint.com. Assez souvent (comme c'est le cas pour ton
dernier classeur !) je les archive précieusement car il sont simples et
surtout très pédagogiques ;-)
Les problèmes compliqués, pris séparément, souvent "souvent"
intelligibles. Mais 2 petits problèmes combinés peuvent devenir un GROS
pb ... pour moi ;-)
Un grand merci pour l'aide que tu m'as apportée jusqu'ici et ... bonnes
vacances (?) ...
@+
JP
"LSteph" a écrit dans le message de news:...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû
mettre ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End
Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme :
" & "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque
chose en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est
l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura
disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en
vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,
1-Tu as mis call restitue, mais la sub restitue n'y est pas
et c'est elle qui remet tout à l'ouverture, si on a activé les macros et
avec userinterfaceonly en guise de protection.
A défaut le tri ne fonctionnera pas.
2-Pas sûr que le cumul de deux beforesave aille ainsi sans souci de
fermeture ou enregistrement.
Si ajout il y a , il doit avoir lieu avant enregistrement du classeur,
mais effectivement pas de la copie, sauf si'la copie, s'assortit également
des mêmes dispositions dans le workbook_open.
4-Attention j'avais utilisé Feuil3 (codename) en guise d'avertissement,
dans l'exemple en est-il ainsi dans le classeur.
(?) ...
Oui!
@+
LSteph
Bonjour,
J'étudie toujours avec bcp de soin les réponses qu'on m'apporte sur le
forum. De même, j'enregistre et ouvre les classeurs qu'on met à ma
disposition sur cjoint.com. Assez souvent (comme c'est le cas pour ton
dernier classeur !) je les archive précieusement car il sont simples et
surtout très pédagogiques ;-)
Les problèmes compliqués, pris séparément, souvent "souvent"
intelligibles. Mais 2 petits problèmes combinés peuvent devenir un GROS
pb ... pour moi ;-)
Un grand merci pour l'aide que tu m'as apportée jusqu'ici et ... bonnes
vacances (?) ...
@+
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
e4ri8Zi1HHA.6072@TK2MSFTNGP03.phx.gbl...
...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.
Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû
mettre ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End
Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme :
" & "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque
chose en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eBqwyba1HHA.3768@TK2MSFTNGP06.phx.gbl...
Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:
La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est
l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura
disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LSteph
Bonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uUPsnNT1HHA.4816@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en
vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LSteph
Bonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.
Bonjour,
1-Tu as mis call restitue, mais la sub restitue n'y est pas
et c'est elle qui remet tout à l'ouverture, si on a activé les macros et
avec userinterfaceonly en guise de protection.
A défaut le tri ne fonctionnera pas.
2-Pas sûr que le cumul de deux beforesave aille ainsi sans souci de
fermeture ou enregistrement.
Si ajout il y a , il doit avoir lieu avant enregistrement du classeur,
mais effectivement pas de la copie, sauf si'la copie, s'assortit également
des mêmes dispositions dans le workbook_open.
4-Attention j'avais utilisé Feuil3 (codename) en guise d'avertissement,
dans l'exemple en est-il ainsi dans le classeur.
(?) ...
Oui!
@+
LStephBonjour,
J'étudie toujours avec bcp de soin les réponses qu'on m'apporte sur le
forum. De même, j'enregistre et ouvre les classeurs qu'on met à ma
disposition sur cjoint.com. Assez souvent (comme c'est le cas pour ton
dernier classeur !) je les archive précieusement car il sont simples et
surtout très pédagogiques ;-)
Les problèmes compliqués, pris séparément, souvent "souvent"
intelligibles. Mais 2 petits problèmes combinés peuvent devenir un GROS
pb ... pour moi ;-)
Un grand merci pour l'aide que tu m'as apportée jusqu'ici et ... bonnes
vacances (?) ...
@+
JP
"LSteph" a écrit dans le message de news:...oui tu l'as testé, j'avais mal lu la fin!
Si j'ai le temps demain avant de partir je jette un oeil.
Sinon il y a nombre de participants sur ce forum...
;-)
@+
Bonne nuit.Bonsoir,
Merci pour tous ces détails. En te lisant, tout à l'air simple ... ;-)
Je me suis empressé d'essayer tout ceci ce matin au bureau ...
J'ai lancé un tri, ce qui m'a donné :
"Erreur d'exécution '1004':
Impossible de définir la propriété Text de la classe Characters."
(Moment de solitude ...)
Fenêtre de débogage apparue dans :
"Private Sub Worksheet_Change(ByVal Target As Range)"
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").Value (surligné en jaune !)
Je n'ai donc pas pu aller plus loin.
J'ai déjà qqch dans Workbook_open (et je pense que je n'ai pas dû
mettre ton code où il fallait :
----------------------------------------------
Sub auto_open()
'Worksheets("jan 07").Protect UserInterfaceOnly:=True
Call restitue 'ajout LSteph
Call DateEtHeure
MsgBox "Bonjour Xavier !" & Chr(10) & Chr(10) & "Nous sommes le " &
LaDate & Chr(10) & Chr(10) & "Il est " & Format(LHeure, "hh:mm"),
vbOKOnly + vbInformation, "hello"
End Sub
---------------------------------------------------------
Pour la fermeture, j'ai bcp de choses ... :
(J'ai mis seulement ton code situé entre "Private sub ... et End
Sub" )
----------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme :
" & "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
'Feuil3.Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
'If sh.CodeName <> "Feuil3" Then
'sh.Visible = xlSheetVeryHidden
'End If
Next
'---------------- fin ajout LSteph
End Sub
---------------------------------------------------------
Je n'ai pas traîté l'aspect 'message si macro non activée". Chaque
chose en son temps ;-)
Merci pour ton classeur joint que je garde précieusement car très
pédagogique.
Je crains que dans mon classeur, je sois confronté à des messages
d'erreurs pour les "text", les "shapes", etc.
@+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,
...suite à l'exemple
(qui n'a aucun intérêt autre que d'exemple pour ce userinterfaceonly
et montrer qu'on peut faire un tri ..par macro, bien sûr)
je réponds à tes questions
Oui, tout à fait basique comme protection
Si tu utilises userinterfaceonly, il ne s'agit plus de déprotèger
reprotèger, il n'y aura donc plus de soucis du style:"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
Et concernant ceci:La question résumée serait : où faut-il mettre le
"UserInterfaceOnly" et autre "Protect.." et "Deprotect" ? J'ai lu
sur un forum :
....Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
C'est bien cela, dans le workbook open
On peut mettre des dispositions autres de protection en beforesave
(comme j'ai fait dans l'exemple).
Si on y met la protection elle subsitera à l'ouverture, c'est
l'intérêt,
mais seulement
tu ne pourra pas trier car le userinterfaceonly lui aura
disparu..§!...
donc il faut appeller essentiellement cette protection comme je l'ai
fait ici et comme tu avais lu:
Private Sub Workbook_Open()
Call restitue
End Sub
'''''
Sub restitue()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Protect userinterfaceonly:=True
sh.Visible = xlSheetVisible
Feuil3.Visible = xlSheetVeryHidden
Next
End Sub
Ainsi on peut trier avec la macro prévue pour.
Cordialement.
LStephBonsoir,
En l'occurence, j'ai besoin d'une protection "basique" pour éviter
les effacements par inadvertance ...
As-tu accès au code que j'ai joint ?
Avec NotePad++, ce qui est bien, c'est qu'on peut réduire le code (je
veux dire, en cliquant sur les petits "moins" ;-) ). Une fois
"épuré", pour un oeil averti, il doit être possible de voir que les
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
... ne sont pas à leurs places ... et qu'il doit manquer des
"UserInterfaceOnly" ça et là ....
Si je prends un exemple, simple, j'ai vérifié sur d'autre applis, que
le fait de lancer un tri par macro sur une feuille protégée génére
des "bugs" ... Dans le cas présent, si je clique sur F8 (pas à pas)
au début de ma procédure de Tri, je me retrouve dans la procédure
"Worksheet_Change", etc, et là je me dis que les "protections" et
"déprotections" consécutives provoquent des effets non voulus ...
La question résumée serait : où faut-il mettre le "UserInterfaceOnly"
et autre "Protect.." et "Deprotect" ? J'ai lu sur un forum :
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de
manipuler par macro une feuille protégée, tout en laissant la
protection active par rapport aux manipulations de l'utilisateur.
Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas
enregistrée avec le classeur.
Dans Workbook_open ?? J'ai essayé, mais j'ai déjà pas mal de trucs
dedans et ça n'a pas marché !
Tu parles d'une solution "simple et efficace". Efficace, j'en ai fait
l'expérience, mais simple !!!
Peut-être (????) @+ ?
JP
"LSteph" a écrit dans le message de news:Bonjour,J'ai essayé de m'inspirer d'un classeur qui avait fait
l'objet d'un long fil sur le sujet (UserInterfaceOnly), mais en
vain.
C'est pourtant la solution simple et efficace , tu protèges tout et
par macro, on peut agir. Donc on passe par ce qui est prévu dans le
programme et pour celui qui code , quel soulagement.
Reste que l'on peut contourner la protection par une autre macro.
Alors dans ce cas, tu as au moins affaire à quelqu'un qui sait à peu
près ce qu'il fait( à bon ou mauvais essient certes ) mais quoi
qu'il en soit dans toute autre alternative faut oublier la
protection parceque même quelqu'un qui ne sait pas écrire un bout de
code a vite fait sur la toile de trouver de quoi la faire sauter.
Pour le reste , il faudrait préciser davantage les problèmes que tu
rencontre...
Cordialement.
LStephBonjour,
Avant de poster, j'ai fait de multiples essais ... ;-)
J'ai bcp, bcp de mal avec les :
"ActiveSheet.Unprotect Password:=""" et les
"ActiveSheet.Protect Password:="", DrawingObjects:=True,
Contents:=True"
J'ai essayé de m'inspirer d'un classeur qui avait fait l'objet d'un
long fil sur le sujet (UserInterfaceOnly), mais en vain.
La difficulté dans le cas présent, c'est que les problèmes ne sont
pas "systématiquement" reproductibles ...
Ex : dans la zone de saisies (feuille "jan 07", colonnes P à AT,
normalement, quand on clique deux fois sur une cellule, cela crée
un commentaire ... et parfois, ça ouvre la liste déroulante !!!
Idem pour les tris qui passent par "Worksheet-Change", etc et les
protections se perdent ...
Idem pour la protection des cellules vérouillées ... elles sont
parfois accessibles !!
En résumé, je ne comprends rien ;-(
Même allégé, mon classeur est trop lourd pour cjoint.com
Le code est là : http://cjoint.com/?ict07lK4xs
C'est amusant parce que j'avais sauvegardé le code dans un ficher
crée avec Notpad++ et je pensais que cjoint allait proposer le
téléchargement dudit fichier, en fait il le développe !
Sinon, c'est très joli avec :
http://notepad-plus.sourceforge.net/fr/download.php?lang=fr
avec le langage "VB" bien sûr ;-)
Merci d'avance pour vos lumières.