OVH Cloud OVH Cloud

Macro complémentaire

3 réponses
Avatar
Laurent26
Bonjour,

J'ai crée pour un classeur un certain nombre de macros que j'aimerais réunir
dans une boîte à outils et je pense que l'outil le plus adapté est le fichier
de macros complémentaires. Comment créer ces macros complémentaires ?

D'avance merci

3 réponses

Avatar
Laurent26

Bonjour,

J'ai crée pour un classeur un certain nombre de macros que j'aimerais réunir
dans une boîte à outils et je pense que l'outil le plus adapté est le fichier
de macros complémentaires. Comment créer ces macros complémentaires ?

D'avance merci



Quelques précisions complémentaires:
- j'ai enregistré mon fichier .xls contenant les macros en .xla
- j'ai ajouté le fichier .xla aux macros complémentaires via le menu
"outilsmacro complémentaires"
Mais, je n'ai toujours pas accés à ces macros:
- faut-il associer un menu ?
- y-a-t-il un détail que j'ai oublié ?

d'avance un double merci

Avatar
Mousnynao
Bonjour,

suggestion :

utiliser un menu dynamique appellé par WorkBook_Open
et WorkBook_Before_Close

exemple :

Option Explicit
Option Private Module
'

Function AjoutBarreMenu() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, MaBarre, MonItem As Object

On Error GoTo Err_Barre

Flag = SupprimeMenu
Flag = False

'Création de la barre de menu
Set BarreMenu = Application.CommandBars.ActiveMenuBar
Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup,
temporary:=True)

MaBarre.Caption = "MomMenu"

'Insère menu
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Ouvrir sans VBA"
.OnAction = "OuvrirSansVBA"
.FaceId = 71
End With

Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "VB Editeur"
.OnAction = "VBEditeur"
.FaceId = 72
End With

Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Nouveau"
.OnAction = "Boucle"
.FaceId = 73
End With

AjoutBarreMenu = True

Exit_Barre:
Exit Function

Err_Barre:
AjoutBarreMenu = False
Texte = "Erreur dans la routine AjoutBarreMenu"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next

End Function
'

Function SupprimeMenu() As Boolean

Dim Cmpt, Nombre As Integer
Dim Barre As CommandBarControl

Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
For Cmpt = 1 To Nombre
If
(Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption =
"Automatisme") Then
Application.CommandBars("Worksheet Menu
Bar").Controls("MonMenu").Delete
End If
Next Cmpt
Cmpt = 0
SupprimeMenu = True

Exit_Close:
Exit Function

Err_Close:
Texte = "Erreur dans la routine SupprimeMenu!"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
SupprimeMenu = False

End Function

mousnynao





Bonjour,

J'ai crée pour un classeur un certain nombre de macros que j'aimerais réunir
dans une boîte à outils et je pense que l'outil le plus adapté est le fichier
de macros complémentaires. Comment créer ces macros complémentaires ?

D'avance merci



Quelques précisions complémentaires:
- j'ai enregistré mon fichier .xls contenant les macros en .xla
- j'ai ajouté le fichier .xla aux macros complémentaires via le menu
"outilsmacro complémentaires"
Mais, je n'ai toujours pas accés à ces macros:
- faut-il associer un menu ?
- y-a-t-il un détail que j'ai oublié ?

d'avance un double merci



Avatar
Laurent26
Merci, j'ai adapté ton exemple à mon cas et l'activation/désactivation de
menu fonctionne trés bien. Malheureusement une fois sauvegardé en .xla et
déclaré dans "outilsmacro compl" le menu n'est pas crée pour un classeur
quelconque.

Encore merci, si tu as une autre idée je suis preneur.


Bonjour,

suggestion :

utiliser un menu dynamique appellé par WorkBook_Open
et WorkBook_Before_Close

exemple :

Option Explicit
Option Private Module
'

Function AjoutBarreMenu() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, MaBarre, MonItem As Object

On Error GoTo Err_Barre

Flag = SupprimeMenu
Flag = False

'Création de la barre de menu
Set BarreMenu = Application.CommandBars.ActiveMenuBar
Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup,
temporary:=True)

MaBarre.Caption = "MomMenu"

'Insère menu
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Ouvrir sans VBA"
.OnAction = "OuvrirSansVBA"
.FaceId = 71
End With

Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "VB Editeur"
.OnAction = "VBEditeur"
.FaceId = 72
End With

Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Nouveau"
.OnAction = "Boucle"
.FaceId = 73
End With

AjoutBarreMenu = True

Exit_Barre:
Exit Function

Err_Barre:
AjoutBarreMenu = False
Texte = "Erreur dans la routine AjoutBarreMenu"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next

End Function
'

Function SupprimeMenu() As Boolean

Dim Cmpt, Nombre As Integer
Dim Barre As CommandBarControl

Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
For Cmpt = 1 To Nombre
If
(Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption =
"Automatisme") Then
Application.CommandBars("Worksheet Menu
Bar").Controls("MonMenu").Delete
End If
Next Cmpt
Cmpt = 0
SupprimeMenu = True

Exit_Close:
Exit Function

Err_Close:
Texte = "Erreur dans la routine SupprimeMenu!"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
SupprimeMenu = False

End Function

mousnynao





Bonjour,

J'ai crée pour un classeur un certain nombre de macros que j'aimerais réunir
dans une boîte à outils et je pense que l'outil le plus adapté est le fichier
de macros complémentaires. Comment créer ces macros complémentaires ?

D'avance merci



Quelques précisions complémentaires:
- j'ai enregistré mon fichier .xls contenant les macros en .xla
- j'ai ajouté le fichier .xla aux macros complémentaires via le menu
"outilsmacro complémentaires"
Mais, je n'ai toujours pas accés à ces macros:
- faut-il associer un menu ?
- y-a-t-il un détail que j'ai oublié ?

d'avance un double merci