|
| titoubi | Posté le 29/04/2008 @ 22:14 |
Petit astucien
39 Messages
| Bonjour à toutes et à tous , Selon la protection d'excel en vigueur chez différents utilisateurs, il y a (ou non) à l'ouverture d'un fichier contenant des macros, une fenêtre qui demande d'activer ou non les macros... 1°) Est-ce possible d'activer automatiquement les macros? (je pense que non, sinon pourquoi une protection !mais sait-on jamais...) 2°) si un utilisateur a cette question à l'ouverture et qu'il clique sur non (pour ne pas activer les macros) peut-on lui renvoyer, de suite à l'ouverture, une fenêtre qui l'informerait que le fichier va se fermer et que pour l'ouvir de nouveau il faudra cliquer sur oui à la demande d'activation des macros. Ainsi, il n'y aurait pas de problème d'utilisation, par d'autres personnes, d'un fichier macroté . Astuciens, Astuciennes à vous de jouer... A+
|
| |
| |
| Liens utiles |
|
|
| Bérylion | Posté le 29/04/2008 à 23:02 |
Astucien
1826 Messages
| Salut
bin, la réponse est dans la question... 
mais il est très facile d'activer automatiquement les macros signées très peux d'utilisateurs (à ma connaissance) fonctionnent avec un niveau de sécurité TRES ELEVE
un niveau ELEVE désactivera automatiquement toute macro non signée, et activera automatiquement toute macro signée.
il suffit de créer un certificat (voir sujet traité par notre artiste galopin1er yapa si longtemps)...
autre solution, passer par une xla. bonne chance ! |
| |
|
| titoubi | Posté le 30/04/2008 à 06:21 |
Petit astucien
39 Messages
| Bonjour Bérylion , Je vais fouiner pour trouver ce que Galopin01 propose sur la signature (de l'artiste ! ) et le certificat. Et une XLA c'est quoi? A+ |
| |
|
| galopin01 | Posté le 30/04/2008 à 07:32 |
Astucien
3964 Messages
| bonjour, ça sera peut-être pas si facile de retrouver : Faire une recherche sur selfcert sur google... A+ |
| |
|
| Bérylion | Posté le 30/04/2008 à 08:26 |
Astucien
1826 Messages
| |
| |
|
| galopin01 | Posté le 30/04/2008 à 23:51 |
Astucien
3964 Messages
| Bonjour, Oui, c'est bizarre la fonction de recherche de PCA est incapable de retrouver ce topic avec le critère selfcert... A+ |
| |
|
| m@rina | Posté le 02/05/2008 à 01:06 |
Petit astucien
884 Messages
| Bonjour, Même si la macro est signée, si l'utilisateur a décidé de ne pas activer les macros, la macro ne sera pas activée... Il y a une technqiue (que j'utilise) qui n'affiche qu'une feulle au démarrage du classeur, les autres étant cachées et le classeur verrouillé. Sur la feuille visible, il est écrit en clair d'activer les macros pour faire fonctionner ce fichier, avec l'explication pour le faire. Quand les macros fonctionnent, il y a une macro autoopen qui déverrouille le fichier, et affiche la feuille souhaitée. Par la même occasion elle cache la feuille d'accueil. Et puis il y a une macro autoclose qui fait le contraire. m@rina |
| |
|
| titoubi | Posté le 06/05/2008 à 10:18 |
Petit astucien
39 Messages
| Bonjour M@rina, Ton idée me plait bien, aurais-tu par hasard un exemple. A+ |
| |
|
| Bérylion | Posté le 06/05/2008 à 12:00 |
Astucien
1826 Messages
| m@rina a écrit :
Bonjour, Même si la macro est signée, si l'utilisateur a décidé de ne pas activer les macros, la macro ne sera pas activée... Il y a une technqiue (que j'utilise) qui n'affiche qu'une feulle au démarrage du classeur, les autres étant cachées et le classeur verrouillé. Sur la feuille visible, il est écrit en clair d'activer les macros pour faire fonctionner ce fichier, avec l'explication pour le faire. Quand les macros fonctionnent, il y a une macro autoopen qui déverrouille le fichier, et affiche la feuille souhaitée. Par la même occasion elle cache la feuille d'accueil. Et puis il y a une macro autoclose qui fait le contraire. m@rina
Salut m@rina
j'avais déja tenté ce genre d'approche (encore plus brutale certe), mais impossible de gérer les multiples enregistrements du fichier 
si tu as une solution, je suis preneur au même titre que l'ami titoubi...

|
| |
|
| ferrand | Posté le 06/05/2008 à 20:10 |
Astucien
1416 Messages
| Salut à vous, Il n'y a pas de solution parfaite dans ce genre de choses. Je crois qu'il faut tabler qu'on n'a pas affaire à la fois à des utilisateurs animés de la volonter d'esquinter le fichier et compétents. En analysant la population des utilisateurs potentiels on devrait pouvoir définir les principaux risques de traitements erronés auquel il faut parer. Si le problème de Titoubi se circonscrit uniquement sur l'ouverture pour obliger les utilisateurs à activer les macros, le système M@rina est tout à la fois simple et efficace. On peut toujours contourner, bien sûr, mais la très grande majorité de ceux en mesure de la faire sont généralement ceux qui n'essaieront pas. Et si quelqu'un ne veut pas utiliser le fichier comme il est prévu, on aura de toute façon du mal à l'empêcher de le faire. J'ai eu ce genre de problème pendant 4 ans : mise à jour semestrielle de l'organisation et de la composition de structures de directions d'entités, mon problème était que les gens chargés de la mise à jour ne tapent pas directement dans le tableau, le programme faisant la mise en forme et la mise aux normes requises. J'en étais arrivé à un système de fichier lanceur allant puiser un mot de passe calculé selon un système aléatoire dans un autre fichier et ouvrant finalement le fichier à mettre à jour en verrouillant tout accès aux feuilles (on ne pouvait voir le résultat qu'en imprimant). Je pouvais considérer avoir réussi mais j'ai quand même eu deux correspondants qui, ne pouvant plus parvenir à rentrer sur le tableau, ne l'ont simplement pas utilisé et en ont monté un autre à côté...! A Titoubi de voir et d'expérimenter. Bonne soirée. |
| |
|
| Bérylion | Posté le 06/05/2008 à 22:26 |
Astucien
1826 Messages
| ferrand a écrit :
Salut à vous, Il n'y a pas de solution parfaite dans ce genre de choses. Je crois qu'il faut tabler qu'on n'a pas affaire à la fois à des utilisateurs animés de la volonter d'esquinter le fichier et compétents. En analysant la population des utilisateurs potentiels on devrait pouvoir définir les principaux risques de traitements erronés auquel il faut parer. Si le problème de Titoubi se circonscrit uniquement sur l'ouverture pour obliger les utilisateurs à activer les macros, le système M@rina est tout à la fois simple et efficace. On peut toujours contourner, bien sûr, mais la très grande majorité de ceux en mesure de la faire sont généralement ceux qui n'essaieront pas. Et si quelqu'un ne veut pas utiliser le fichier comme il est prévu, on aura de toute façon du mal à l'empêcher de le faire. J'ai eu ce genre de problème pendant 4 ans : mise à jour semestrielle de l'organisation et de la composition de structures de directions d'entités, mon problème était que les gens chargés de la mise à jour ne tapent pas directement dans le tableau, le programme faisant la mise en forme et la mise aux normes requises. J'en étais arrivé à un système de fichier lanceur allant puiser un mot de passe calculé selon un système aléatoire dans un autre fichier et ouvrant finalement le fichier à mettre à jour en verrouillant tout accès aux feuilles (on ne pouvait voir le résultat qu'en imprimant). Je pouvais considérer avoir réussi mais j'ai quand même eu deux correspondants qui, ne pouvant plus parvenir à rentrer sur le tableau, ne l'ont simplement pas utilisé et en ont monté un autre à côté...! A Titoubi de voir et d'expérimenter. Bonne soirée.

ça me donne tout plein d'idées toutes plus tordues les unes que les autres !!!
mais je vais creuser, et je trouvreai bien qqch...
|
| |
|
| ferrand | Posté le 06/05/2008 à 22:30 |
Astucien
1416 Messages
|  (pour les idées en germe). N'oublie pas d'en faire part !  [j'an ai plus aucun besoin mais je reste amateur] |
| |
|
| Bérylion | Posté le 06/05/2008 à 23:49 |
Astucien
1826 Messages
| ferrand a écrit :
(pour les idées en germe). N'oublie pas d'en faire part ! [j'an ai plus aucun besoin mais je reste amateur]
bon, c'est fait pdt la pub, alors forcément c'est pas déverminé comme ça devrait, mais l'idée est la :
VBA Private Sub Workbook_BeforeClose(Cancel As Boolean) With Workbooks.Add With .VBProject.VBComponents(1) .CodeModule.InsertLines 1, "Private Sub Workbook_BeforeClose(Cancel As Boolean)" .CodeModule.InsertLines 2, "Set xlApp = New Excel.Application" .CodeModule.InsertLines 3, "With xlApp.Workbooks.Open(""" & ThisWorkbook.FullName & """)" .CodeModule.InsertLines 4, " .IsAddin = True" .CodeModule.InsertLines 5, " .Close True" .CodeModule.InsertLines 6, "End With" .CodeModule.InsertLines 7, "xlApp.Quit" .CodeModule.InsertLines 8, "set xlApp = nothing" .CodeModule.InsertLines 9, "end sub" End With End With End Sub
Private Sub Workbook_Open() ThisWorkbook.IsAddin = False End Sub
à coller dans le thisworkbook.
(attention c'est gourmand en ressources sur le moment, je sais pas pourquoi ...)
|
| |
|
| titoubi | Posté le 07/05/2008 à 19:57 |
Petit astucien
39 Messages
| Bonjour à tous, Je souhaite effectivement cette action car les utilisateurs, pour la plupart novice avec des fichiers macrotés, risquent de ne pas l'ouvrir ou de l'ouvrir sans activer les macros par méconnaissances de ce genre d'utilisation d'Excel (le message de mise en garde fait paniquer l'utilisateur novice en informatique). Je n'ai pas peur d'une modif car dans thisworkbook. de mon fichier j'ai prévu de ne pas enregistrer à la fermeture (l'utilisateur n'a aucune donnée particulière à saisir, cet un outil pour rechercher une liste d'infos, de les extraire ou de les imprimer directement) et tout ça si les macros sont activées!!! Je pense donc que pour mon utilisation l'idée de M@rina me convient (je n'ai pas encore commencé mais je pense m'y mettre bientôt..) M@rina as-tu un exemple? Pour Bérylion j'ai essayé vite fait et le message suivant apparaît lorsque je veux quitter le programme: Erreur d'exécution '1004: L'accès par programme au projet Visual basic n'est pas fiable
Impossible de faire "Fin" débogage permanent ??!! je l'ai mis brut dans le thisworkbook. d'un fichier vierge...à suivre
A+
 
|
| |
|
| Bérylion | Posté le 07/05/2008 à 20:10 |
Astucien
1826 Messages
| titoubi a écrit :
Je n'ai pas peur d'une modif car dans thisworkbook. de mon fichier j'ai prévu de ne pas enregistrer à la fermeture (l'utilisateur n'a aucune donnée particulière à saisir, cet un outil pour rechercher une liste d'infos, de les extraire ou de les imprimer directement) et tout ça si les macros sont activées!!!
fallait commencé par ça !!!!!
dans ce cas, un simple : Private Sub Workbook_Open() ThisWorkbook.IsAddin = False End Sub
fait très bien la maille. quand ton classeur est finalisé (càd juste avant de le mettre à disposition de tes utlisateurs) tu lances la sub suivante : Sub Switch_addin() with ThisWorkbook .IsAddin = true .close true end with End Sub
si tes peones n'autorisent pas les macros, le classeur reste addin (et la tu va te faire insulter paske "je clic, je clic, mais y se passe rien je comprends pas ça marche pas ton truc c'est naze je préférais avant... - et blablabla, le laïus habituel quoi) titoubi a écrit :
Erreur d'exécution '1004: L'accès par programme au projet Visual basic n'est pas fiable
 
je vois d'ou ça viens. je creuse pour y remédier, mais j'ai peu d'espoir...

Modifié par Bérylion le 07/05/2008 23:11 |
| |
|
| ferrand | Posté le 07/05/2008 à 20:31 |
Astucien
1416 Messages
| IsAddin ça me plait assez. Je testerais. Intéressant, tu circule dans des zones de VB que j'avais plutôt laissé de côté, à tort sans doute, mais il est toujours temps. Dans Sub Switch_addin, ne faudrait-il pas mettre la valeur à True ? A plus tout le monde. Bonne soirée. |
| |
|
| Bérylion | Posté le 07/05/2008 à 23:10 |
Astucien
1826 Messages
| ferrand a écrit :Dans Sub Switch_addin, ne faudrait-il pas mettre la valeur à True ? ça semblerait plus judicieux, en effet...  je corrige ça ! 
|
| |
|
| titoubi | Posté le 07/05/2008 à 23:41 |
Petit astucien
39 Messages
| Re Bérylion, et Bravo Ferrand avec "true" cela fonctionne "brutalement" bien....mais effectivement, ils ne vont pas comprendre ce qu'il se passe et...avant de vouloir activer les macros ils auront fait dans leurs culottes plusieurs fois mes novices..... Ne peut-on pas afficher un petit message qui expliquerait que ce fichier est fiable (venant de moi!!!!) et qu'ils doivent activer les macros pour l'utiliser? A+ |
| |
|
| Bérylion | Posté le 08/05/2008 à 00:30 |
Astucien
1826 Messages
| titoubi a écrit :
Ne peut-on pas afficher un petit message qui expliquerait que ce fichier est fiable (venant de moi!!!!) et qu'ils doivent activer les macros pour l'utiliser? 
sub test()
msgbox "Ce fichier est sur, vous pouvez activer les macros ;)" end sub |
| |
|
| Bérylion | Posté le 08/05/2008 à 00:35 |
Astucien
1826 Messages
| j'ai pas pu m'en empêcher...
bon, j'ai "en partie" résolu le probleme plus haut (je fais ça pour le sport paske ça servira jamais).
j'arrive à cocher la case "faire confiance au projet visual basic" en trifouillant la BDR par VBA, mais ça n'est pris en compte que si excel est fermé 
donc je tourne en boucle, et ça fait pas avancer le pb...

|
| |
|
| titoubi | Posté le 08/05/2008 à 01:51 |
Petit astucien
39 Messages
| Et je le mets dans un module? ou dans l'open? ou avec le Switch? sub test() msgbox "Ce fichier est sur, vous pouvez activer les macros ;)" end sub
|
| |
|
| Bérylion | Posté le 08/05/2008 à 21:34 |
Astucien
1826 Messages
| titoubi a écrit :
Et je le mets dans un module? ou dans l'open? ou avec le Switch? sub test() msgbox "Ce fichier est sur, vous pouvez activer les macros ;)" end sub

bin, si les macros sont désactivées, tu peux bien le mettre où tu veux... la méthode isaddin est un peu brutale, mais ça reste ma préférence. sur la base de la proposition de m@rina, tu peux monter un truc de ce style :
insère une nouvelle feuille dans ton classeur sur laquelle tu mets une jolie zone de texte ("pour faire fonctionner ce classeur, merci d'activer les macros si cela vous est demandé - signé Titoubi")
ensuite, tu masques toutes les autres feuilles.
enfin, dans le thisworkbook :
private sub workbook_open() for each sh in worksheets if sh.visible = true then sh.visible = false else sh.visible = true end if next end sub et ça devrait suffire pour ton histoire

Modifié par Bérylion le 12/05/2008 22:13 |
| |
|
| titoubi | Posté le 12/05/2008 à 12:22 |
Petit astucien
39 Messages
| Bonjour Bérylion Dans ton dernier message enfin, dans le thisworkbook : private sub workbook_open() for each sh in worksheets if sh.visible = true then sh.visible = false else sh.visible = true end if end sub
Il manque un "Next sh" puisque tu commences par un "For", mais bon soit je l'ai mal placé soit il y a encore autre chose mais ça ne fonctionne pas. Grâce à la touche "F1" (il y en a qui vont être contents j'uitilise cette touche!!!) j'ai utilisé ceci PrivateSub workbook_open() For Each sh In Sheets sh.Visible = True Next sh Worksheets("feuil1").Visible = False (feuille où il y a le message d'attention si les macros ne sont pas activées) End Sub Pour utiliser ce genre de commande à la fermeture (obtenir l'inverse), est-ce que l'écrire dans "PrivateSub workbook_close()" suffit? j'ai essayé mais la macro ne semble pas s'exécuter lorsque je quitte le fichier!!! Merci pour l'aide A+ |
| |
|
| Bérylion | Posté le 12/05/2008 à 22:17 |
Astucien
1826 Messages
| titoubi a écrit :
Bonjour Bérylion Dans ton dernier message enfin, dans le thisworkbook : private sub workbook_open() for each sh in worksheets if sh.visible = true then sh.visible = false else sh.visible = true end if end sub
Il manque un "Next sh" puisque tu commences par un "For", mais bon soit je l'ai mal placé soit il y a encore autre chose mais ça ne fonctionne pas. Grâce à la touche "F1" (il y en a qui vont être contents j'uitilise cette touche!!!) j'ai utilisé ceci PrivateSub workbook_open() For Each sh In Sheets sh.Visible = True Next sh Worksheets("feuil1").Visible = False (feuille où il y a le message d'attention si les macros ne sont pas activées) End Sub Pour utiliser ce genre de commande à la fermeture (obtenir l'inverse), est-ce que l'écrire dans "PrivateSub workbook_close()" suffit? j'ai essayé mais la macro ne semble pas s'exécuter lorsque je quitte le fichier!!! Merci pour l'aide A+
 j'ai remis le "next" à sa place... 
mais ta macro fait aussi bien l'affaire !!
je comprends pas pourquoi tu veux faire l'inverse à la fermeture si tes utilisateurs ne sauvegardent pas les modifs...?! 
|
| |
|
| titoubi | Posté le 12/05/2008 à 22:54 |
Petit astucien
39 Messages
| Bonjour Bérylion, Effectivement ils ne sauvegardent rien, mais c'est juste pour mon apprentissage j'en aurai peut-être besoin pour prochaine application 
A+ |
| |
|
|
| Haut de la page |