dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016
-
12 juil. 2016 à 12:39
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016
-
25 août 2016 à 00:22
Bonjour,
j'aimerai créer une macro dans thisworkbook qui me permettrait de créer à chaque ouverture du classeur
un menu personnalisé. la macro réinitialisera à chaque fois le toolbar et créera des boutons qui me permettront de manipuler mes macros. En fait j'aimerai que tout utilisateur à qui jenvoierai mon classeur puisse avoir accès au menu personnalisé sans problème. Est ce possible avc excel vba?????? de l'aide svp!!!!
A voir également:
Impossible d'executer la macro il est possible qu'elle ne soit pas disponible
Impossible d'exécuter la macro il est possible qu'elle ne soit pas disponible dans ce classeur - Meilleures réponses
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 12 juil. 2016 à 12:48
Bonjour,
de l'aide sur ta question ? Une réponse à apporter ? ===>>
Oui, cela l'est (possible).
Sur quelle partie (isolée, et spécifique) de ton code rencontres-tu ta difficulté ?
(relis s'il te plait à ce propos les règles de ce forum).
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 13 juil. 2016 à 16:56
je n'ai pas encore commencé à coder cette partie là... je voulais juste savoir si cest possible et voudrais également une documentation sur la création de menus personnalisés par macro
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 14 juil. 2016 à 15:23
Bonjour,
Qu'est-ce que tu entends par menu personnalisé ?
Et quelle version utilises-tu ?
Il y a différentes méthodes d'approche selon les besoins.
Ça pourrait être un combobox qui contient les différentes macros que tu utilises.
Ou un Userform ouvert en vbModeless qui contiendrait des contrôles déclencheurs.
Ou un menu intégré à ceux d'Excel (selon la version)
Ou un menu sur click droit d'une cellule
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 14 juil. 2016 à 16:02
Avez vous une documentation ou plusieurs qui traitent de ces méthodes? Merci
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 14 juil. 2016 à 18:45
Bonjour,
Ce que tu demandes relève avant tout de la conception.
Il n'y a pas, en ce domaine, UNE ou QUELQUES méthode(s) ! Il y en a une véritable floppée (autant qu'il y a d'idées de conception).
Commence par arrêter la tienne, d'idée.
La conception n'est pas la vocation de ce forum, dédié, lui, à la recherche de solution à une difficulté technique, spécifique, parfaitement isolée et accompagnée du code tenté pour la résoudre.
Par ailleurs : si ce que tu cherches à faire est ajouter dans la barre d'outil de Excel un menu personnalisé, ce que tu auras à faire dépendra avant tout de ta version Excel
A lire :
http://ericrenaud.fr/Ribbon.htm Cette lecture t'apprendra que depuis la version 2007, c'est en XML (et non VBA), que se gère et s'écrit la barre de menus de Excel.
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 15 juil. 2016 à 17:34
MERCI....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Après apprentissage j'ai essayé le code suivant mais j'ai l'erreur d'exécution suivant: erreur d'exécution '91' variable objet ou variable de bloc With non définie
ThisWorkbook.Protect "feuzzz"
Dim Cbar As CommandBar
Dim Donngener As CommandBarButton
Dim Nouv As CommandBarButton
Dim Supp As CommandBarButton
Dim Donn As CommandBarButton
Dim Actu As CommandBarButton
Dim Corr As CommandBarButton
Dim w As Worksheet
For Each w In ActiveWorkbook.Sheets
w.Protect Password:="feuzzz", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
Next
Set Cbar = CommandBars.Add(Name, [Position], [MenuBar], [Temporary])
Cbar.Visible = True
Cbar.Name = "PROGIWATERCOLD"
Cbar.Position = msoBarBottom
Set Nouv = Cbar.Controls.Add(msoControlButton)
With Nouv
.Style = msoButtonIconAndCaptionBelow
.FaceId = 137
.Caption = "Nouveau local"
.OnAction = "Copy_Feuille"
.TooltipText = "Permet d'ajouter un nouveau local"
.BeginGroup = True
.Priority = 2
End With
Set Supp = Cbar.Controls.Add(msoControlButton)
With Supp
.Style = msoButtonIconAndCaptionBelow
.FaceId = 1088
.Caption = "Supprimer le local"
.OnAction = "Suppression_Local"
.TooltipText = "Permet de supprimer le local"
.BeginGroup = True
.Priority = 3
End With
Set Donngener = Cbar.Controls.Add(msoControlButton)
With Donngener
.Style = msoButtonIconAndCaptionBelow
.FaceId = 576
.Caption = "Température et Constructeur"
.OnAction = "Saisir_cond_clim"
.TooltipText = "Permet de donner la température intérieure des locaux et le constructeur pour les différents équipements"
.BeginGroup = True
.Priority = 1
End With
Set Donn = Cbar.Controls.Add(msoControlButton)
With Donn
.Style = msoButtonIconAndCaptionBelow
.FaceId = 588
.Caption = "Données du local"
.OnAction = "Recup_donnees_local"
.TooltipText = "Permet de donner les données du local"
.BeginGroup = True
.Priority = 4
End With
Set Corr = Cbar.Controls.Add(msoControlButton)
With Corr
.Style = msoButtonIconAndCaptionBelow
.FaceId = 960
.Caption = "Recalculer"
.OnAction = "corrigerBT"
.TooltipText = "Permet de recalculer le bilan thermique pour l'ensemble des locaux"
.BeginGroup = True
.Priority = 5
End With
Set Actu = Cbar.Controls.Add(msoControlButton)
With Actu
.Style = msoButtonIconAndCaptionBelow
.FaceId = 1020
.Caption = "Actualiser l'onglet Synthèse"
.OnAction = "Somme_charges"
.TooltipText = "Permet d'actualiser le tableau de synthèse des différents locaux"
.BeginGroup = True
.Priority = 6
End With
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 20 juil. 2016 à 13:53
Prends s'il te plait l'(habitude :
1) de présenter ton code entre balises code
2) de dire sur quelle ligne de code l'erreur est dénoncée
Merci de t'y conformer.
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 20 juil. 2016 à 16:51
ok. l'erreur se trouve à partir de:
Set Cbar = CommandBars.Add(Name, [Position], [MenuBar], [Temporary])
Dim Cbar As CommandBar
Dim Donngener As CommandBarButton
Dim Nouv As CommandBarButton
Dim Supp As CommandBarButton
Dim Donn As CommandBarButton
Dim Actu As CommandBarButton
Dim Corr As CommandBarButton
mais aussi les instancier
Dim Cbar As new CommandBar
Dim Donngener As new CommandBarButton
Dim Nouv As new CommandBarButton
Dim Supp As new CommandBarButton
Dim Donn As new CommandBarButton
Dim Actu As new CommandBarButton
Dim Corr As new CommandBarButton
Pas testé.
Bonne journée
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 20 juil. 2016 à 16:52
ok. A quoi servirait le fait de les instancier stp???
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 22 août 2016 à 12:38
bonjour j'ai finalement opté pour la solution de customui editor qui me permet de créer un menu personnalisé à ma guise. Le menu a été bien ajouté à mon fichier Excel mais le seul problème est que les boutons exécutant les macros ne marchent pas. Le message d'erreur suivant survient à chaque fois que je presse sur l'un des boutons: impossible d'exécuter la macro il est possible qu'elle ne soit disponible dans le classeur ou que toutes les macros soient désactivées. Aidez moi svp
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 22 août 2016 à 14:24
Quel est le code XML que tu as écrit ou généré avec Custom UI
Et comment gères-tu ça dans ton code VBA ?
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 22 août 2016 à 14:26
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="PROGIWATERCOLD" label="Menu PROGIWATERCOLD" insertAfterMso="TabHome" visible="true"> <group id="grp0" label="PROGIWATERCOLD Tools"> <button id="btn0" size="large" label="Données générales" screentip="Données générales" supertip=" Permet de renseigner la tempéture intérieure des locaux et le constructeur des équipents de climatisation" imageMso="PlayMacro" onAction="Saisir_cond_clim"/> <button id="btn1" size="large" label="Nouveau local" screentip="Nouveau local" supertip=" Permet la création d'un nouveau local" imageMso="BlogHomePage" onAction="Copy_Feuille"/> <button id="btn2" size="large" label="Suppression local" screentip="Suppression local" supertip=" Permet la suppression d'un local" imageMso="CoverPageRemove" onAction="Suppression_Local"/> <button id="btn3" size="large" label="Données du local" screentip="Données du local" supertip="Permet de renseigner les données intérieures du local" imageMso="RmsSendBizcardDesign" onAction="Recup_donnees_local"/> <button id="btn4" size="large" label="Bilan thermique" screentip="Bilan thermique" supertip=" Permet d'actualiser le bilan thermique global " imageMso="Calculator" onAction="Resume_Simple"/> <button id="btn5" size="large" label="Synthèse" screentip="Synthèse" supertip=" Permet d'actualiser la synthèse du bilan thermique et des équipements de climatisation" imageMso="PersonaStatusBusy" onAction="SommeFeuilles"/> <button id="btn6" size="large" label="Correction" screentip="Synthèse" supertip=" Permet de recalculer le bilan thermique une fois les données générales changées" imageMso="Refresh" onAction="corrigerBT"/> <button id="btn7" size="large" label="Page de garde" screentip="Page de garde" supertip=" Permet de remplir la page de garde" imageMso="AutoFormatWizard" onAction="Saisie_pagedegarde"/> <button id="btn8" size="large" label="Pertes de charges" screentip="Calculs de pertes de charges" supertip=" Permet de calculer les pertes de charges pour chaque tronçon enregistrée" imageMso="SetPertWeight" onAction="Calcul_pertes"/> <button id="btn9" size="large" label="Tronçons principaux" screentip="Tronçons principaux" supertip=" Permet de calculer les diamètres des tronçons principaux du réseau de tuyauterie" imageMso="ModuleInsert" onAction="CalculTroncons"/> <button id="btn10" size="large" label="Suppression tronçon" screentip="Suppression tronçon" supertip=" Permet de supprimer le tronçon se trouvant sur la ligne sélectionnée" imageMso="ReviewRejectChange" onAction="supp"/> <button id="btn11" size="large" label="Raffraîchir le tableau" screentip="Raffraîchir le tableau " supertip=" Permet de raffraîchir le tableau des pertes de charges ou de calcul des diamètres de tronçons principaux" imageMso="ViewGridlinesWord" onAction="supp"/> </group> </tab> </tabs> </ribbon> </customUI>
j'ai par la suite copier les callback des boutons sur un module standard.
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 22 août 2016 à 21:59
j'ai fait comme ceci pour toutes les macros
'Callback for btn0 onAction Sub Saisir_cond_clim(control As IRibbonControl) End Sub
'Callback for btn1 onAction Sub Copy_Feuille(control As IRibbonControl) End Sub
'Callback for btn2 onAction Sub Suppression_Local(control As IRibbonControl) End Sub
'Callback for btn3 onAction Sub Recup_donnees_local(control As IRibbonControl) End Sub
'Callback for btn4 onAction Sub Resume_Simple(control As IRibbonControl) End Sub
'Callback for btn5 onAction Sub SommeFeuilles(control As IRibbonControl) End Sub
'Callback for btn6 onAction Sub corrigerBT(control As IRibbonControl) End Sub
'Callback for btn7 onAction Sub Saisie_pagedegarde(control As IRibbonControl) End Sub
'Callback for btn8 onAction Sub Calcul_pertes(control As IRibbonControl) End Sub
'Callback for btn9 onAction Sub CalculTroncons(control As IRibbonControl) End Sub
'Callback for btn10 onAction Sub supp(control As IRibbonControl) End Sub
'Callback for btn11 onAction Sub raffraichir(control As IRibbonControl) End Sub
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 23 août 2016 à 15:11
Ça semble correct, mais as-tu ajouté du code à ces macros ?
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016
>
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018 23 août 2016 à 15:49
non pas vraiment. Qu'est ce que je pourrais bien y ajouter comme code????? Je croyais que les callback suffisaient.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 23 août 2016 à 17:57
Mets-y le code que tu as déjà créé ou seulement le nom de ces macros (plus simple...)
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016
>
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018 23 août 2016 à 18:21
je viends d'essayer ta dernière propoition mais lorsque je presse sur les boutons le même message d'erreur survient :(
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 24 août 2016 à 17:38
dyjatou92
Messages postés34Date d'inscriptionmercredi 15 juin 2016StatutMembreDernière intervention30 septembre 2016 25 août 2016 à 00:22
Bonjour à tous,
j'ai finalement trouvé la solution à mon problème. En fait il fallait juste ajouter au niveau des parenthèses de la déclaration de chaque macro:
control As IRibbonControl
Ce n'était pas la peine de créer un module standard pour y copier les callback de toutes les macros vu qu'elles ont été déjà créées
Merci à toutes les personnes qui ont répondu à mon appel de détresse