Execution d'une macro dans un autre classeur a nom variable

osfou Messages postés 10 Date d'inscription mercredi 12 juillet 2006 Statut Membre Dernière intervention 20 septembre 2006 - 15 sept. 2006 à 15:00
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 19 sept. 2006 à 15:34
je cherche un solution pour que mon menu contextuel reste actif a la fermeture du classeur si d'autre classeur son ouvert, le probleme est que le nom des autres classeur n'est pas fixe, il varie en fonction de la date.il faut donc que je lance avant de fermer la macro "creer_menu_contextuel" du classeur restant ouvert (ayant un nom variable) pour que cela fonctionne correctement.
je joint ma macro qui ne fonctionne pas evidemment, le bug etant qu'il ne trouve pas le nom du classeur puisque je lui met une variable.
d'avance merci a celui qui veut se faire les dents sur ça:

   Private Sub Workbook_beforeclose(Cancel As Boolean)
                                              'verif si autre classeur ouvert
   If Sheets("démarrage").Range("d21") <> Empty Then
   nom_classeur = Format(Sheets("démarrage").Range("d21") - 5, "mm mmmm yyyy")
   nom_classeur2 = Format(Sheets("démarrage").Range("d21") + 34, "mm mmmm yyyy")
   If Workbooks.Count <> 0 Then
           For p = 1 To Workbooks.Count
           If Workbooks(p).Name = nom_classeur & ".xls" Then
           Workbooks(nom_classeur & ".xls").Activate
           Application.Run "nom_classeur!creer_menu_contextuel"
       Exit Sub
           ElseIf Workbooks(p).Name = nom_classeur2 & ".xls" Then
           Workbooks(nom_classeur2 & ".xls").Activate
           Application.Run "nom_classeur2!creer_menu_contextuel"
       Exit Sub
       End If
           Next p
   End If
   End If
                                           'supp le menu contextuel
   Supp_Menu_Contextuel
   End Sub

2 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 sept. 2006 à 19:48
Salut,

Private Sub CommandButton1_Click()
Dim xlBook As Workbook
Dim i As Byte

i = 0
For Each xlBook In Application.Workbooks
i = i + 1
Next xlBook
If i < 2 Then Supp_Menu_Contextuel
End Sub

@++
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
19 sept. 2006 à 15:34
Salut 819469 osfou, salut =647037 mortalino,

comprends-je bien?
Tu as une application (VBA sûrement) autonome, qui affiche un popup, quelque soit le (nom de) classeur ouvert (mais de même type) dans Excel?
Ou peut-être la même application (série de macros) est dans chaque déclinaison (instance) de ton classeur initial?

Dans les 2 cas, essaies peut-être de t'occuper de la libération du popup dans le BeforeClose (du classeur qui se ferme), et de sa ré-activation dans le Activate (du classeur qui reste dans Excel, et qui devrait donc peut-être le déclencher).

Qu'en penses-tu?
à+

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0
Rejoignez-nous