Excel VBA - Macro Introuvable [Résolu]

JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 24 juil. 2007 à 14:21 - Dernière réponse :  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
Afficher la suite 

Votre réponse

25 réponses

nanardino64 131 Messages postés vendredi 18 août 2006Date d'inscription 17 mars 2010 Dernière intervention - 27 juil. 2007 à 11:36
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de nanardino64
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 16 nov. 2007 à 09:42
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de JM247L
nanardino64 131 Messages postés vendredi 18 août 2006Date d'inscription 17 mars 2010 Dernière intervention - 24 juil. 2007 à 18:02
0
Utile
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.
Commenter la réponse de nanardino64
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 25 juil. 2007 à 09:12
0
Utile
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
Commenter la réponse de JM247L
nanardino64 131 Messages postés vendredi 18 août 2006Date d'inscription 17 mars 2010 Dernière intervention - 25 juil. 2007 à 09:24
0
Utile
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
Commenter la réponse de nanardino64
cs_lermite222 500 Messages postés jeudi 5 avril 2007Date d'inscription 2 juillet 2012 Dernière intervention - 25 juil. 2007 à 09:40
0
Utile
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+
Commenter la réponse de cs_lermite222
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 25 juil. 2007 à 09:53
0
Utile
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
Commenter la réponse de JM247L
cs_lermite222 500 Messages postés jeudi 5 avril 2007Date d'inscription 2 juillet 2012 Dernière intervention - 25 juil. 2007 à 10:29
0
Utile
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 ?
Commenter la réponse de cs_lermite222
cs_lermite222 500 Messages postés jeudi 5 avril 2007Date d'inscription 2 juillet 2012 Dernière intervention - 25 juil. 2007 à 10:38
0
Utile
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 ?
Commenter la réponse de cs_lermite222
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 25 juil. 2007 à 11:14
0
Utile
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
Commenter la réponse de JM247L
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 25 juil. 2007 à 11:25
0
Utile
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
Commenter la réponse de JM247L
cs_Nicko11 1141 Messages postés mercredi 7 mars 2007Date d'inscription 19 septembre 2007 Dernière intervention - 25 juil. 2007 à 11:46
0
Utile
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 ???
Commenter la réponse de cs_Nicko11
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 26 juil. 2007 à 14:53
0
Utile
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
Commenter la réponse de JM247L
nanardino64 131 Messages postés vendredi 18 août 2006Date d'inscription 17 mars 2010 Dernière intervention - 26 juil. 2007 à 16:01
0
Utile
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.
Commenter la réponse de nanardino64
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 26 juil. 2007 à 16:08
0
Utile
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
Commenter la réponse de JM247L
nanardino64 131 Messages postés vendredi 18 août 2006Date d'inscription 17 mars 2010 Dernière intervention - 26 juil. 2007 à 16:21
0
Utile
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.
Commenter la réponse de nanardino64
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 26 juil. 2007 à 16:22
0
Utile
Merci,

JML
 Partageons notre savoir e
Commenter la réponse de JM247L
nanardino64 131 Messages postés vendredi 18 août 2006Date d'inscription 17 mars 2010 Dernière intervention - 27 juil. 2007 à 11:08
0
Utile
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
Commenter la réponse de nanardino64
nanardino64 131 Messages postés vendredi 18 août 2006Date d'inscription 17 mars 2010 Dernière intervention - 27 juil. 2007 à 11:24
0
Utile
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é
Commenter la réponse de nanardino64
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 27 juil. 2007 à 13:54
0
Utile
Bonjour,


JML





 Partageons notre savoir e
Commenter la réponse de JM247L

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Excel VBA - Macro Introuvable - page 2