Excel VBA - Macro Introuvable

Résolu
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Derniè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
A voir également:

25 réponses

nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 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
3
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
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 !!!

 Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML
3
nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 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.
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 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
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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+
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
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
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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 ?
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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 ?
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
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 !!!

JML
 Partageons notre savoir et nos acquis
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
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
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
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 ???
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
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





Merci encore de votre temps

JML





 Partageons notre savoir et nos acquis
0
nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 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.
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
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






JML





 Partageons notre savoir e
0
nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 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.
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
26 juil. 2007 à 16:22
Merci,

JML
 Partageons notre savoir e
0
nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 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


Dis moi ce que tu en penses
0
nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 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é
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
27 juil. 2007 à 13:54
Bonjour,


JML





 Partageons notre savoir e
0
Rejoignez-nous