Macro dans une feuille Excel invisible

Résolu
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 1 déc. 2009 à 18:51
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 2 déc. 2009 à 18:54
Bonjour,

J'ai créé quelques macros utilitaires que j'ai placé dans une feuille Excel dédiée afin de pouvoir déployer plus facilement les macros sur un autre poste.
Je lui ai adjoint des boutons dans une barre d'outil.

Serait-il possible qu'Excel lorsqu'il fait appel à l'une des macros ne charge pas la feuille en arrière plan.
Plus concrètement si l'utilisateur clique sur un bouton qui déclenche une macro, une invite lui confirme le chargement des macros, puis il exécute la macro après avoir chargé la feuille de macro. Le problème c'est que cette feuille persiste et que ça peut être déroutant pour un utilisateur classique : avoir tout d'un coups une feuille qui apparaît et dont il ignore l'existance.
Le but d'une macro étant de rendre plus simple les choses, ouvrir une feuille sans raison est un peu abstrait pour un utilisateur classique.
D'où ma question de savoir s'il n'y a pas un moyen de masquer cette feuille qui contient uniquement les macros.

Merci et bonne prog,
@++

Victor

8 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
2 déc. 2009 à 16:57
Salut,

alors ce que tu cherches c'est comment creer une macro complementaire. L'extension pour ce type de fichier est XLA.
Pour que cela fonctionne il faut que l'utilisateur place ce fichier.xla soit dans un repertoir specifique tel que par exemple:

C:\Program Files\Microsoft Office\OFFICE11\MACROLIB

ou soit dans le repertoire qui contient les autres fichiers .xls Dans ces 2 cas les macros complementaires seront chargées automatiquement au demarrage d'excel. Pour le deuxieme cas cela fonctionne si un des fichiers est ouvert par double clicks

Il existe une autre methode qui ne necessite pas de pseudo installation comme expliqué plus haut mais qui oblige l'utilisateur a ouvrir le fichier pour activer les macros complémebtaires.

Voici la methode:

Le fichier garde sont extension .xls. Le code qui suit est à placer dans le code de ThisWorkbook

Private Sub Workbook_Open()
    Dim Cmdbar As CommandBar
    Dim Bouton As CommandBarButton
    
    ThisWorkbook.IsAddin = True
    If Val(Application.Version) > 9 Then
        On Local Error Resume Next
        With Application.CommandBars("MesMacro") 'ici et pour la suite tu remplaces MesMacro par ce que tu veux MesMacro etant le nom de la ta barre
            .Visible = True
            .Controls(1).OnAction = "MaMacro" 'ici le nom de la macro associée au bouton
        End With
        If Not Err = 0 Then
            Set Cmdbar = Application.CommandBars _
                .Add(Name:="MesMacro", Position:=msoBarFloating, Temporary:=False)
            
            'Ajout du boutons dans la barre d'outils
            Set Bouton = Cmdbar.Controls.Add(Type:=msoControlButton)
            With Bouton
                .Style = msoButtonCaption
                .OnAction = "MaMacro"
                .Width = 50
            End With
            Cmdbar.Visible = True
        End If
    Else
        AddTimeInCmdBar
    End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Application.CommandBars("MesMacro").Visible = False
    'ThisWorkbook.IsAddin = False
End Sub


puis ce qui suit dans un module:

Sub AddMyButtonInCmdBar()
    Dim Cmdbar As CommandBar
    Dim Bouton As CommandBarButton
    On Local Error Resume Next
    With Application.CommandBars("MesMacro")
        .Visible = True
        .Controls(1).OnAction = "MaMacro"
    End With
    If Not Err = 0 Then
        Set Cmdbar = CommandBars.Add(Name:="MesMacro", Position:=msoBarTop, Temporary:=True)
        Set Bouton = Cmdbar.Controls.Add(Type:=msoControlButton)
        With Bouton
            .Style = msoButtonCaption
            .OnAction = "MaMacro"
            .Width = 50
        End With
        Cmdbar.Visible = True
        End With
    End If
End Sub


D'ailleurs tout ceci me fait penser à publier un exemple dans la rubrique codes.

A+
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
2 déc. 2009 à 18:54
Re,

je viens de poster une source ici:

http://www.vbfrance.com/codes/HORLOGE-DANS-BARRE-OUTIL-EXCEL-COMME-EXEMPLE-UTILISATION_50926.aspx

comme exemple du code que je t'ai donné plus haut.

A+
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
1 déc. 2009 à 20:54
Bonsoir,

Ben, il me semble bien que tu devrais regarder comment faire un menu personnalisé. Ainsi tu auras un nouveau menu totalement identique à ce qu'il existe avec des icônes... chaque icône déclenchant les macros...

Amicalement,
Us.
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
1 déc. 2009 à 22:01
Bonjour,

Je te remercie de ta réponse, seulement je sais déjà faire un menu personnalisé.

Mon problème c'est que je veux masquer la feuille Excel qui va s'ouvrir quand je vais faire appel à une macro stockée dans un classeur dédié nommé macros.xls.
Le but étant de créer les macros utilitaire stockée dedans et puis quand je vais chez un utilisateur débutant que ces macros lui facitent la vie de façon invisible.
Ma seule action est de copier le classeur de macro sur son Disque Dur et de le lancer pour qu'il ait accès aux macros.

D'autre part, mon classeur contient une barre d'outil qui est en réalité un menu, ce qui permet de l'inclure dans le classeur.

Merci et bonne prog,
@++

Victor
0

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

Posez votre question
cs_nitho Messages postés 130 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 8 décembre 2015
2 déc. 2009 à 08:10
Bonjour, Je ne suis pas sûr de te comprendre, les boutons de la barre d'outils dont tu parles, ils sont dans le classeur Excel? et comment ne veux-tu pas qu'on voie une feuille? Que veux tu qu'on voie à l'ouverture d'un classeur?
Bref, les solutions les plus courantes sont de désactiver l'affichage des onglets, désactiver affichage du quadrillage, désactiver l'affichage des barres de défilement et même désactiver l'affichage des entêtes de lignes et de colonnes. Tu te retrouve donc face à une feuille blanche qui fait beaucoup plus professionnel.
Sinon tu sais tu peux te rabattre sur vb6 qui est fait pour aller droit au but.





nitho l'amateur
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 déc. 2009 à 12:38
Bonjour,

Je réexplique :
- macros.xls classeur vierge qui contient macros, barre d'outils (avec menu)> On veut ne jamais le voir
- nimportequoi.xls classeur que l'utilisateur se sert pour faire ce qu'il veut> Il travaille dessus donc ça on le garde.

Admettons que macros.xls contienne une macro qui change la couleur d'une case.
L'utilisateur est sur sa feuille perso et clique sur le bouton "Changer la couleur", ça va afficher un message demandant s'il veut charger les macros. Il répond Oui et ça exécute une macro MAIS ça a ouvert macros.xls et l'utilisateur se demande qu'est ce que fait là. Du coups ça l'énerve d'avoir deux feuilles excels au lieu d'une ouverte et il m'appelle.
Si macros.xls n'était pas apparu tout se serait bien déroulé.
C'est précisément ce que je veux faire : masquer la feuille qui contient les macros à l'appel d'une macro.

J'espère que c'est plus clair pour vous.

PS : Je me passerai du commentaire qui dit qu'on peut changer de couleur via un bouton d'excel car c'était un exemple.

Merci et bonne prog,
@++

Victor
0
alain122 Messages postés 8 Date d'inscription jeudi 25 juin 2009 Statut Membre Dernière intervention 30 mars 2010
2 déc. 2009 à 16:09
bonjour
essai ceci
Application.WindowState = xlMinimized
A+
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 déc. 2009 à 17:48
Bonjour,

Je vais voir dans cette direction.

Merci et bonne prog,
@++

Victor
0
Rejoignez-nous