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

Messages postés
10
Date d'inscription
mercredi 12 juillet 2006
Statut
Membre
Dernière intervention
20 septembre 2006
-
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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

@++
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
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>