Bonjour,
Pour les besoins d'une application de gestion de "Tournoi de Bridge" (calcul
de résultats, classement, etc...), j'ai créé un menu personnalisé comportant
une quinzaine de commandes (chacune correspond à une formule de tournoi :
nombre de tables, nombre d'équipes, nombre de donnes, etc...).
Je voudrais créer une macro me permettant de récupérer le nom de cette macro
(nom du bouton par ex.) tel qu'il s'affiche dans mon menu déroulant pour
ensuite appeler une sub-routine correspondant à la formule choisie.
Actuellement, j'ai résolu ce pb en écrivant autant de sub-routines que de
formules présentes dans mon menu déroulant ; ceci marche bien mais conduit à
un module assez lourd qu'il doit y avoir moyen d'alléger.
J'ai pensé à la commande "Case" mais je bute sur le pb du renvoi du nom de
la macro dans une routine.
Merci d'avance de toute suggestion.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mousnynao
Bonjour,
Pour lire les macros d'un classeur, vous avez besoin d'une référence complémentaire ! Microsoft Visual Basic for Applications Extensibility
voici un exemple de classeur http://www.excel-downloads.com/telechargements/file/vizioxla/435.htm
qui montre comment charger la référence si cell-ci est absente.
vous y trouverez aussi du code qui copy des macros dans un textbox.
mousnynao
Bonjour, Pour les besoins d'une application de gestion de "Tournoi de Bridge" (calcul de résultats, classement, etc...), j'ai créé un menu personnalisé comportant une quinzaine de commandes (chacune correspond à une formule de tournoi : nombre de tables, nombre d'équipes, nombre de donnes, etc...). Je voudrais créer une macro me permettant de récupérer le nom de cette macro (nom du bouton par ex.) tel qu'il s'affiche dans mon menu déroulant pour ensuite appeler une sub-routine correspondant à la formule choisie. Actuellement, j'ai résolu ce pb en écrivant autant de sub-routines que de formules présentes dans mon menu déroulant ; ceci marche bien mais conduit à un module assez lourd qu'il doit y avoir moyen d'alléger. J'ai pensé à la commande "Case" mais je bute sur le pb du renvoi du nom de la macro dans une routine. Merci d'avance de toute suggestion.
Bonjour,
Pour lire les macros d'un classeur, vous avez besoin d'une référence
complémentaire !
Microsoft Visual Basic for Applications Extensibility
voici un exemple de classeur
http://www.excel-downloads.com/telechargements/file/vizioxla/435.htm
qui montre comment charger la référence si cell-ci est absente.
vous y trouverez aussi du code qui copy des macros dans un textbox.
mousnynao
Bonjour,
Pour les besoins d'une application de gestion de "Tournoi de Bridge" (calcul
de résultats, classement, etc...), j'ai créé un menu personnalisé comportant
une quinzaine de commandes (chacune correspond à une formule de tournoi :
nombre de tables, nombre d'équipes, nombre de donnes, etc...).
Je voudrais créer une macro me permettant de récupérer le nom de cette macro
(nom du bouton par ex.) tel qu'il s'affiche dans mon menu déroulant pour
ensuite appeler une sub-routine correspondant à la formule choisie.
Actuellement, j'ai résolu ce pb en écrivant autant de sub-routines que de
formules présentes dans mon menu déroulant ; ceci marche bien mais conduit à
un module assez lourd qu'il doit y avoir moyen d'alléger.
J'ai pensé à la commande "Case" mais je bute sur le pb du renvoi du nom de
la macro dans une routine.
Merci d'avance de toute suggestion.
Pour lire les macros d'un classeur, vous avez besoin d'une référence complémentaire ! Microsoft Visual Basic for Applications Extensibility
voici un exemple de classeur http://www.excel-downloads.com/telechargements/file/vizioxla/435.htm
qui montre comment charger la référence si cell-ci est absente.
vous y trouverez aussi du code qui copy des macros dans un textbox.
mousnynao
Bonjour, Pour les besoins d'une application de gestion de "Tournoi de Bridge" (calcul de résultats, classement, etc...), j'ai créé un menu personnalisé comportant une quinzaine de commandes (chacune correspond à une formule de tournoi : nombre de tables, nombre d'équipes, nombre de donnes, etc...). Je voudrais créer une macro me permettant de récupérer le nom de cette macro (nom du bouton par ex.) tel qu'il s'affiche dans mon menu déroulant pour ensuite appeler une sub-routine correspondant à la formule choisie. Actuellement, j'ai résolu ce pb en écrivant autant de sub-routines que de formules présentes dans mon menu déroulant ; ceci marche bien mais conduit à un module assez lourd qu'il doit y avoir moyen d'alléger. J'ai pensé à la commande "Case" mais je bute sur le pb du renvoi du nom de la macro dans une routine. Merci d'avance de toute suggestion.
Mousnynao
plus spécifiquement, je crois que ce serait dans cette section :
Function ScanListeSousMenus()
Dim OptionMenu As Variant Dim CtrlMenu As Variant Dim MenuItem As Variant Dim Cmpt As Long Dim NomMenu As String Dim Feuille As String
NomMenu = InputBox("Nom du menu : ", "Choix du sous-menu à répertorié", "Menu des Listes")
Set OptionMenu = CommandBars(1).Controls Set CtrlMenu = OptionMenu(NomMenu)
Cells.Clear
With ActiveSheet .Rows(1).Font.Bold = True .Rows(1).Font.Size = 9 .Range("A1:D1").Value = Array("MENU", "SOUS-MENU", "ID", "Icon ID") Cmpt = 1 For Each MenuItem In CtrlMenu.Controls ActiveCell.Offset(Cmpt, 0).Value = CtrlMenu.Caption ActiveCell.Offset(Cmpt, 1).Value = MenuItem.Caption ActiveCell.Offset(Cmpt, 2).Value = MenuItem.ID ActiveCell.Offset(Cmpt, 3).Value = MenuItem.FaceId ActiveCell.Offset(Cmpt, 4).Value = MenuItem.OnAction Cmpt = (Cmpt + 1) Next MenuItem .Range("A1").CurrentRegion.Columns.AutoFit End With Columns("C:D").HorizontalAlignment = xlCenter
Sheets(Feuille).Select Application.ScreenUpdating = True Message = "Voir la feuille ListeSousMenus" MsgBox FINAL & vbCrLf & vbCrLf & Message
End Function '
La ligne [ActiveCell.Offset(Cmpt, 1).Value = MenuItem.Caption] donne le nom dans le menu et la ligne [ActiveCell.Offset(Cmpt, 4).Value = MenuItem.OnAction] fournit le nom d'appel de la routine.
Mousnynao
Bonjour,
Pour lire les macros d'un classeur, vous avez besoin d'une référence complémentaire ! Microsoft Visual Basic for Applications Extensibility
voici un exemple de classeur http://www.excel-downloads.com/telechargements/file/vizioxla/435.htm
qui montre comment charger la référence si cell-ci est absente.
vous y trouverez aussi du code qui copy des macros dans un textbox.
mousnynao
Bonjour, Pour les besoins d'une application de gestion de "Tournoi de Bridge" (calcul de résultats, classement, etc...), j'ai créé un menu personnalisé comportant une quinzaine de commandes (chacune correspond à une formule de tournoi : nombre de tables, nombre d'équipes, nombre de donnes, etc...). Je voudrais créer une macro me permettant de récupérer le nom de cette macro (nom du bouton par ex.) tel qu'il s'affiche dans mon menu déroulant pour ensuite appeler une sub-routine correspondant à la formule choisie. Actuellement, j'ai résolu ce pb en écrivant autant de sub-routines que de formules présentes dans mon menu déroulant ; ceci marche bien mais conduit à un module assez lourd qu'il doit y avoir moyen d'alléger. J'ai pensé à la commande "Case" mais je bute sur le pb du renvoi du nom de la macro dans une routine. Merci d'avance de toute suggestion.
plus spécifiquement, je crois que ce serait dans cette section :
Function ScanListeSousMenus()
Dim OptionMenu As Variant
Dim CtrlMenu As Variant
Dim MenuItem As Variant
Dim Cmpt As Long
Dim NomMenu As String
Dim Feuille As String
NomMenu = InputBox("Nom du menu : ", "Choix du sous-menu à répertorié",
"Menu des Listes")
Set OptionMenu = CommandBars(1).Controls
Set CtrlMenu = OptionMenu(NomMenu)
Cells.Clear
With ActiveSheet
.Rows(1).Font.Bold = True
.Rows(1).Font.Size = 9
.Range("A1:D1").Value = Array("MENU", "SOUS-MENU", "ID", "Icon ID")
Cmpt = 1
For Each MenuItem In CtrlMenu.Controls
ActiveCell.Offset(Cmpt, 0).Value = CtrlMenu.Caption
ActiveCell.Offset(Cmpt, 1).Value = MenuItem.Caption
ActiveCell.Offset(Cmpt, 2).Value = MenuItem.ID
ActiveCell.Offset(Cmpt, 3).Value = MenuItem.FaceId
ActiveCell.Offset(Cmpt, 4).Value = MenuItem.OnAction
Cmpt = (Cmpt + 1)
Next MenuItem
.Range("A1").CurrentRegion.Columns.AutoFit
End With
Columns("C:D").HorizontalAlignment = xlCenter
Sheets(Feuille).Select
Application.ScreenUpdating = True
Message = "Voir la feuille ListeSousMenus"
MsgBox FINAL & vbCrLf & vbCrLf & Message
End Function
'
La ligne [ActiveCell.Offset(Cmpt, 1).Value = MenuItem.Caption] donne le nom
dans le menu et la ligne [ActiveCell.Offset(Cmpt, 4).Value =
MenuItem.OnAction]
fournit le nom d'appel de la routine.
Mousnynao
Bonjour,
Pour lire les macros d'un classeur, vous avez besoin d'une référence
complémentaire !
Microsoft Visual Basic for Applications Extensibility
voici un exemple de classeur
http://www.excel-downloads.com/telechargements/file/vizioxla/435.htm
qui montre comment charger la référence si cell-ci est absente.
vous y trouverez aussi du code qui copy des macros dans un textbox.
mousnynao
Bonjour,
Pour les besoins d'une application de gestion de "Tournoi de Bridge" (calcul
de résultats, classement, etc...), j'ai créé un menu personnalisé comportant
une quinzaine de commandes (chacune correspond à une formule de tournoi :
nombre de tables, nombre d'équipes, nombre de donnes, etc...).
Je voudrais créer une macro me permettant de récupérer le nom de cette macro
(nom du bouton par ex.) tel qu'il s'affiche dans mon menu déroulant pour
ensuite appeler une sub-routine correspondant à la formule choisie.
Actuellement, j'ai résolu ce pb en écrivant autant de sub-routines que de
formules présentes dans mon menu déroulant ; ceci marche bien mais conduit à
un module assez lourd qu'il doit y avoir moyen d'alléger.
J'ai pensé à la commande "Case" mais je bute sur le pb du renvoi du nom de
la macro dans une routine.
Merci d'avance de toute suggestion.
NomMenu = InputBox("Nom du menu : ", "Choix du sous-menu à répertorié", "Menu des Listes")
Set OptionMenu = CommandBars(1).Controls Set CtrlMenu = OptionMenu(NomMenu)
Cells.Clear
With ActiveSheet .Rows(1).Font.Bold = True .Rows(1).Font.Size = 9 .Range("A1:D1").Value = Array("MENU", "SOUS-MENU", "ID", "Icon ID") Cmpt = 1 For Each MenuItem In CtrlMenu.Controls ActiveCell.Offset(Cmpt, 0).Value = CtrlMenu.Caption ActiveCell.Offset(Cmpt, 1).Value = MenuItem.Caption ActiveCell.Offset(Cmpt, 2).Value = MenuItem.ID ActiveCell.Offset(Cmpt, 3).Value = MenuItem.FaceId ActiveCell.Offset(Cmpt, 4).Value = MenuItem.OnAction Cmpt = (Cmpt + 1) Next MenuItem .Range("A1").CurrentRegion.Columns.AutoFit End With Columns("C:D").HorizontalAlignment = xlCenter
Sheets(Feuille).Select Application.ScreenUpdating = True Message = "Voir la feuille ListeSousMenus" MsgBox FINAL & vbCrLf & vbCrLf & Message
End Function '
La ligne [ActiveCell.Offset(Cmpt, 1).Value = MenuItem.Caption] donne le nom dans le menu et la ligne [ActiveCell.Offset(Cmpt, 4).Value = MenuItem.OnAction] fournit le nom d'appel de la routine.
Mousnynao
Bonjour,
Pour lire les macros d'un classeur, vous avez besoin d'une référence complémentaire ! Microsoft Visual Basic for Applications Extensibility
voici un exemple de classeur http://www.excel-downloads.com/telechargements/file/vizioxla/435.htm
qui montre comment charger la référence si cell-ci est absente.
vous y trouverez aussi du code qui copy des macros dans un textbox.
mousnynao
Bonjour, Pour les besoins d'une application de gestion de "Tournoi de Bridge" (calcul de résultats, classement, etc...), j'ai créé un menu personnalisé comportant une quinzaine de commandes (chacune correspond à une formule de tournoi : nombre de tables, nombre d'équipes, nombre de donnes, etc...). Je voudrais créer une macro me permettant de récupérer le nom de cette macro (nom du bouton par ex.) tel qu'il s'affiche dans mon menu déroulant pour ensuite appeler une sub-routine correspondant à la formule choisie. Actuellement, j'ai résolu ce pb en écrivant autant de sub-routines que de formules présentes dans mon menu déroulant ; ceci marche bien mais conduit à un module assez lourd qu'il doit y avoir moyen d'alléger. J'ai pensé à la commande "Case" mais je bute sur le pb du renvoi du nom de la macro dans une routine. Merci d'avance de toute suggestion.