Macro dans une feuille Excel invisible [Résolu]

Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Dernière intervention
17 octobre 2012
- 1 déc. 2009 à 18:51 - Dernière réponse :
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
20 novembre 2013
2 déc. 2009 à 16:57
3
Merci
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+

Merci bigfish_le vrai 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de bigfish_le vrai
Meilleure réponse
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
20 novembre 2013
2 déc. 2009 à 18:54
3
Merci
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+

Merci bigfish_le vrai 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de bigfish_le vrai
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
1 déc. 2009 à 20:54
0
Merci
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.
Commenter la réponse de us_30
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Dernière intervention
17 octobre 2012
1 déc. 2009 à 22:01
0
Merci
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
Commenter la réponse de victorcoasne
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Dernière intervention
8 décembre 2015
2 déc. 2009 à 08:10
0
Merci
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
Commenter la réponse de cs_nitho
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Dernière intervention
17 octobre 2012
2 déc. 2009 à 12:38
0
Merci
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
Commenter la réponse de victorcoasne
Messages postés
8
Date d'inscription
jeudi 25 juin 2009
Dernière intervention
30 mars 2010
2 déc. 2009 à 16:09
0
Merci
bonjour
essai ceci
Application.WindowState = xlMinimized
A+
Commenter la réponse de alain122
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Dernière intervention
17 octobre 2012
2 déc. 2009 à 17:48
0
Merci
Bonjour,

Je vais voir dans cette direction.

Merci et bonne prog,
@++

Victor
Commenter la réponse de victorcoasne

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.