JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 2011
-
24 juil. 2007 à 14:21
chaudier37 -
26 déc. 2008 à 21:31
Bonjour,
Etrange problème que voilà !
J'ouvre un fichier excel qui contient du code piloté par des boutons
Si j'enregistre le fichier (enregistré sous) immédiatement après l'ouverture, lorsque je clic sur l'un de boutons de la feuille active, j'obtiens ce message "Impossible de trouver la macro ... "
Si une autre feuille est sélectionnée après l'enregistrement, tout fonctionne correctement !!!!!
Merci de votre support
JML
Partageons notre savoir et nos acquis
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 27 juil. 2007 à 11:36
En effet le serpent se mord la queue, il va falloir finter :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
dim SaveOK as boolean
dim FileSaveName as string
cancel=true
if SaveOK=true then
FileSaveName = Application.GetSaveAsFilename(InitialFileName:=nom de ton fichier, fileFilter:="Classeur Microsoft Office Excel (*.xls), *.xls")
'ça te permet d'afficher la boîte de dialogue de sauvegarde et de stocker le chemin dans FileSaveName
If FileSaveName = False Then Exit Sub
'si on clique sur annuler
'à partir de là tu lances ta sauvegarde
SaveOK=false
ActiveWorkbook.SaveAs Filename:=FileSaveName
else
SaveOK=true
'Et maintenant la fameuse macro de création de la barre d'outil
end if
end sub
pense à mettre SaveOK=true dans auto_open
dis moi si c'est bon
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 16 nov. 2007 à 09:42
Bonjour,
Je n'ai trouvé aucune solution rationelle si ce n'est que avant d'exécuter la sauvegarde, le code de "BeforeSave" fait sélectionner une feuille différente de celle à partir de laquelle l'utilisateur à lancé la sauvegarde ce qui l'oblige après exécution de la sauvegarde à resélectionner sa feuile ... ce qui en même temps réactive les macros !!!
Oui je sais les utilisateurs ralent mais bon !!! faute de mieux
Mais j'ai effectivement noté que certaine macro gardait le nom du fichier d'origine dans la liste et ce jusqu'à ce qu'une sélection de feuille remette tout en ordre !!!
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 24 juil. 2007 à 18:02
Je viens de faire ce test et tout fonctionne correctement. Peut être que tu devrais essayer de te mettre en niveau de sécurité moyen afin que le logiciel te demande d'activer les macros.
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 25 juil. 2007 à 09:12
Bonjour,
C'est le niveau de config que j'ai.
Ce qui est surprenant c'est que le problème soit réglé par le fait de sélectionner une autre feuille (ce qui fait exécuter du code au niveau des feuilles sans générer d'erreur) et de revenir sur la feuille initiale
J'ai essayé en programmant cette sélection de feuille mais ça ne change rien
Un détail supplémentaire, le fichier est chargé à partir de Sharepoint
JML
Partageons notre savoir et nos acquis
Vous n’avez pas trouvé la réponse que vous recherchez ?
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 25 juil. 2007 à 09:24
J'avoue que je vois pas du tout la source du problème. Peut être que les macros gardent l'adresse de l'ancien emplacement du fichier enfin ça dépend de ton fichier je vois pas comment il est fait mais moi il m'est déjà arrivé d'avoir des macros qui ne fonctionnaient plus car je déplacé des feuilles d'un classeur à un autre et les boutons gardaient l'adresse des macros de l'ancien fichier. Je pense qu'il te faut l'aide d'un admin ou membre club.
Sincèrement désolé de n'avoir pu t'aider mais je vais quand même continuer de chercher.
Meilleures salutations
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 25 juil. 2007 à 09:40
Bonjour,
Lorsqu'une macro est assignée elle prend comme nom "NomClasseur.TaMacro" si elle est enrégistrée dans le classeur ou "NomModule.TaMacro" , du fait que tu change le nom du classeur, Excel ne retrouve pas ce nom, du moins la 1ére fois. Il est difficile de donner plus d'explication sans avoir toute l'appli. Une solution pour détecter l'erreur, voir sous quel nom elle est enrégistrée et Où, (le classeur en cour ou le classeur Perso.)
Mais si la macro est dans le classeur tu peu la déplacer dans un module, il faut un peu la transformer pour situer la feuille auquel elle se rapporte.
A+
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 25 juil. 2007 à 09:53
Merci de votre temps
Comme le fichier est ouvert à partir de Sharepoint, la 1ère sauvegarde se fait systématiquement par "Enregistrer Sous" même si on clique sur "Enregistrer"
Si le nom est changé, le problème ne se produit pas. Il ne se produit que lorsque le nom est conservé pour l'enregistrement ... Ce qui est illogique !!!
JML
Partageons notre savoir et nos acquis
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 25 juil. 2007 à 10:29
Quel que soit le problème il faudrait, dans un premier temps savoir où est la macro et sous quel nom elle est enrégistrée.
Je ne comprend pas, tu fait chaque fois un nouveau classeur ? vu que tu dit
'la 1ère sauvegarde se fait systématiquement par "Enregistrer Sous" même si on clique sur "Enregistrer"
Autre question, quel est le code dans l'événement Clic du bouton ?
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 25 juil. 2007 à 10:38
Je n'avait pas fait le rapport avec Sharepoint, le classeur est-il sur ton PC ou sur le reseau ?
et surtout .. quel est le code d'appel dans l'événement Clic du bouton ?
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 25 juil. 2007 à 11:14
J'ai créé, dans Excel, un formulaire (Form_FC.xls) qui contient un code qui à l'ouverture du fichier lit une séquence dans un autre fichier et sauvegarde le formulaire sous un nom utilisant la séquence (FC_00001.xls)
A ce niveau, il n'y a aucun problème lorsque je clique sur un bouton du fichier auquel est associé un code
En fin de traitement, le fichier (FC_00001.xls) est sauvegardé manuellement par l'utilisateur
Un rappel important, les fichiers sont stockés dans un espace Sharepoint ou à l'ouverture des fichiers, la notion de "Lecture seule" est toujours affichée mais non effective à partir du moment ou cette option n'est pas définie dans les propriétés du fichier ... Oui je sais c'est pas simple mais je vie avec ça depuis 3 mois et c'est limite l'enfer ... avant l'appli tournait sur un réseau traditionnel et la vie était un long fleuve tranquille
Ou ça se gate c'est lorsque l'utilisateur ouvre le fichier (FC_00001.xls) pour le modifier
Lorsque l'utilisateur va enregistrer ces modifs, le système au clic sur l'icone "Enregistrer" du menu Excel va exécuter "Enregistrer Sous" - du fait de l'option "Lecture seule" mais va autoriser de conserver le même nom puisque l'option "Lecture seule" n'est pas effective.
C'est après l'enregistrement que les boutons ne répondent plus ... sauf si avant de cliquer un bouton je sélectionne une autre feuille
Bizzzzzare Non !!!
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 25 juil. 2007 à 11:25
Il va falloir patienter un peu pour les exemples de code, le Site Sharepoint est indisponible depuis ce matin
JML
Partageons notre savoir et nos acquis
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 25 juil. 2007 à 11:46
Ouha, je compatis, en effet, ca doit pas etre facile tous les jours dans ces conditions,=.
Respect, LOL.
Mais tu as du code qui s'execute automatiquement sur l'enregistrement du fichier ???? Un code dans lequel tu fait appel a une macro ???? Qu'est ce qui va chercher une macro et ou ???
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 26 juil. 2007 à 14:53
Bonjour,
Désolé pour la réponse tardive mais les aléas du métier
Nicko11 merci de ta sollicitude
Lermitte merci de tes questions qui m'aide à mieux analyser le problème
L'application est stockée sur Sharepoint
En fait ce sont les boutons d'une barre d'outils créées par l'applicxation qui génère ce message d'erreur ... les boutons dans la feuille réagissent correctement
Si après la sauvegarde j'exécute manuellement le code de création de barre d'outils, le problème disparait au même titre que lorsque je fais une sélection de feuille
Le problème c'est que je ne peux pas faire exécuter le code de création de barre d'outils ou une sélection de feuille dans le code de "Workbook_BeforeSave" puisque la sauvegarde est la dernière action exécutée
Il se passe quelque chose au moment de la 1ère sauvegarde - après aouverture du classeur - qui désactive les boutons de cette barre d'outils. Je pense que le pseudo "lecture seule" n'est pas étrangé à ce problème dans la mesure ou il disparait après la première sauvegarde
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 26 juil. 2007 à 16:01
pourquoi ne pas mettre la création de ta barre d'outils en ouverture du classeur, ainsi tu peux faire un RunAutoMacro pour ramener ta barre d'outil sur ton Workbook_BeforeSave. Il est possible que je réponde complètement à côté vu que je comprends pas bien comment est fait ton logiciel.
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 26 juil. 2007 à 16:08
En fait le probème c'est comment faire excéuter automatiquement le code de création de barre d'outil immédiatement après une sauvegarde manuelle afin d'éviter ce problème.
Tenant en compte que si on programme l'"xécution du code en dernière ligne du code de "Workbook_BeforeSave", il sera exécuté avant la souvegarde ... donc sans effet sur le problème
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 26 juil. 2007 à 16:21
Il faudrait essayer de trouver l'évenement qui va bien mais là je bloque et je pense que se serait pas le mieux de faire un événement qui se répete trop de fois sinon ton programme va bugger. Je fais quelques recherches et on verra bien.
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 27 juil. 2007 à 11:08
Mon petit JM247L, je crois que j'ai eureka la solution
Dans ta macro beforesave, il te suffit d'annuler l'enregistrement avec cancel=true, ensuite tu enregistres le fichier avec des lignes de macro en faisant :
dim FileSaveName as string
FileSaveName = Application.GetSaveAsFilename(InitialFileName:=nom de ton fichier, fileFilter:="Classeur Microsoft Office Excel (*.xls), *.xls")
'ça te permet d'afficher la boîte de dialogue de sauvegarde et de stocker le chemin dans FileSaveName
If FileSaveName = False Then Exit Sub
'si on clique sur annuler
'à partir de là tu lances ta sauvegarde
ActiveWorkbook.SaveAs Filename:=FileSaveName
'Et maintenant la fameuse macro de création de la barre d'outil
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 27 juil. 2007 à 11:24
Par contre je sais pas si ça ne se mord pas la queue vu que tu lances une sauvegarde dans beforesave peut-être que ça bugg car une ligne de la macro beforesave relance beforesave tout ça est très compliqué