> Tous les forumsBureautique

 Activer les macros au démarrage
Statut du sujet : NON RESOLU Imprimer
 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+

 Afficher le profil de titoubiEnvoyer un message privé à titoubi
 
 
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 !

Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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+

Afficher le profil de titoubiEnvoyer un message privé à titoubi
 Revenir en haut de la page
 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+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 Bérylion  Posté le 30/04/2008 à 08:26  
Astucien


1826 Messages
galopin01 a écrit :

bonjour,

ça sera peut-être pas si facile de retrouver :

Faire une recherche sur selfcert sur google...

A+




l'était pas si loin : http://forum.pcastuces.com/activer_les_macros-f23s18607.htm


Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 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

Afficher le profil de m@rinaEnvoyer un message privé à m@rina
 Revenir en haut de la page
 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+

Afficher le profil de titoubiEnvoyer un message privé à titoubi
 Revenir en haut de la page
 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...


Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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.

Afficher le profil de ferrandEnvoyer un message privé à ferrand
 Revenir en haut de la page
 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...

Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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]
Afficher le profil de ferrandEnvoyer un message privé à ferrand
 Revenir en haut de la page
 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 ...)


Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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+

Afficher le profil de titoubiEnvoyer un message privé à titoubi
 Revenir en haut de la page
 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
Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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.

Afficher le profil de ferrandEnvoyer un message privé à ferrand
 Revenir en haut de la page
 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 !



Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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+

Afficher le profil de titoubiEnvoyer un message privé à titoubi
 Revenir en haut de la page
 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

Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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...







Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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

Afficher le profil de titoubiEnvoyer un message privé à titoubi
 Revenir en haut de la page
 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
Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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+

Afficher le profil de titoubiEnvoyer un message privé à titoubi
 Revenir en haut de la page
 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...?!



Afficher le profil de Bérylion Voir la configuration de BérylionEnvoyer un message privé à Bérylion
 Revenir en haut de la page
 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+

Afficher le profil de titoubiEnvoyer un message privé à titoubi
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte





 > Tous les forumsBureautique

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page
Comme PC Astuces, mettez-vous au vert avec Ikoula !
Faites le choix d'un hébergeur acteur de l'environnement !