CreatorRibbonX ImageMso evolution

CreatorRibbonX ImageMso evolution v 6.7b

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonjour @JPaul78
je l'ai dis garder toujours l'original sans ruban , je l'ai dis et ecrit plusieurs fois
il faudrait que je fasse un nettoyeur un jour je vais m'y mettre
pourtant j'ai bien avance la chose
pourrait on avoir ce fichier anonymisé svp
 
Bonjour @JPaul78
je l'ai dis garder toujours l'original sans ruban , je l'ai dis et ecrit plusieurs fois
il faudrait que je fasse un nettoyeur un jour je vais m'y mettre
pourtant j'ai bien avance la chose
pourrait on avoir ce fichier anonymisé svp
Merci de ton retour! Je m'en doutais un peu! j'ai gardé une version que je mettrai à jour ce n'est pas très grave. Je t'envoie mon fichier en question anonymisé. Soit indulgent sur ma programmation je suis autodidacte mais néanmoins je ne suis pas contre de conseils pour m'améliorer.
 

Pièces jointes

Bonjour @JPaul78
bon j'ai plein de bugs mais c'est normal il me manque plein de trucs
je voyais ça plus compliqué ( c'est un petit ruban mais c'est pas mal car tu semble avoir compris ,le truc

mais il y a encore des chose qui t'echapes

en ce qui concerne les callbacks
par exemple le invalidate
si tu a déboguer dans les modules ta variable myRibbon est nothing du coup le dynamico ben ...tu reviens demain hein si il fait beau

du coup je te l'ai refait et je t'ai mis le safeRibbon
 

Pièces jointes

Bonjour @JPaul78
bon j'ai plein de bugs mais c'est normal il me manque plein de trucs
je voyais ça plus compliqué ( c'est un petit ruban mais c'est pas mal car tu semble avoir compris ,le truc

mais il y a encore des chose qui t'echapes

en ce qui concerne les callbacks
par exemple le invalidate
si tu a déboguer dans les modules ta variable myRibbon est nothing du coup le dynamico ben ...tu reviens demain hein si il fait beau

du coup je te l'ai refait et je t'ai mis le safeRibbon
Merci de ton retour, je pense avoir compris le getsave, c'est vrai que lors de mes débogages, le ruban ne fonctionnait plus donc je fermais le fichier et le relançais et tout revenait dans l'ordre. avec cela cette manœuvre n'est plus utile. j'apprend petit à petit... Merci!
 
Bonjour à tous,
Je sais que ce post n'est pas prévu pour débattre du fichier de @JPaul78. Mais bon.
Petites pensées personnelles...
XML:
<?xml version="1.0" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
          onLoad="CustomUIOnLoad">
    <!--CreatorRibbonX ImageMso 2025 Version 6.5+ developed BY patricktoulon-->
    <!--project Ribbon name :test_solidarauto-->
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabAddIns"
                 getVisible="provix_TabAddIns_getVisible"/>
            <tab idMso="TabHome"
                 getVisible="provix_TabHome_getVisible"/>
            <tab idMso="TabInsert"
                 getVisible="provix_TabInsert_getVisible"/>
            <tab idMso="TabPageLayoutExcel"
                 getVisible="provix_TabPageLayoutExcel_getVisible"/>
            <tab idMso="TabFormulas"
                 getVisible="provix_TabFormulas_getVisible"/>
            <tab idMso="TabData"
                 getVisible="provix_TabData_getVisible"/>
            <tab idMso="TabReview"
                 getVisible="provix_TabReview_getVisible"/>
            <tab idMso="TabView"
                 getVisible="provix_TabView_getVisible"/>
            <tab idMso="TabDeveloper"
                 getVisible="provix_TabDeveloper_getVisible"/>
            <tab id="tab_1"
                 label="Solidarauto">
                <group id="group_0"
                       label="Mise à Jour"
                       imageMso="AccessRefreshAllLists">
                    <button id="button_1"
                            imageMso="DatabaseLinedTableManager"
                            size="large"
                            label="Actualisation Données"
                            onAction="button_1_Click"
                            supertip="Permet d'actualiser les données issues des garages."/>
                </group>
                <group id="group_1"
                       imageMso="CalendarMonthDetailsSplitButton"
                       label="Année de Référence">
                    <labelControl id="labelControl_1"
                                  label="Choix Année de Référence"/>
                    <comboBox id="comboBox_1"
                              imageMso="CalendarMonthDetailsSplitButton"
                              onChange="comboBox_1_onChange"
                              getText="comboBox_1_getText"
                              getItemCount="comboBox_1_getItemCount"
                              getItemLabel="comboBox_1_getItemLabel"/>
                </group>
                <group id="group_2"
                       label="Export Format PDF"
                       imageMso="PowerQueryDataFromPDFFile">
                    <button id="button_2"
                            label="Export Indicateurs"
                            size="large"
                            onAction="button_2_Click"
                            supertip="Exporte la page générale des indicateurs au format pdf."
                            imageMso="FileEmailAsPdfEmailAttachment"/>
                    <button id="button_3"
                            imageMso="PowerQueryDataFromPDFFile"
                            onAction="button_3_Click"
                            size="large"
                            label="Export benchmark"
                            supertip="Exporte le benchmark des garages au format pdf."/>
                </group>
                <group id="group_3"
                       label="Sauvegarde"
                       imageMso="AutoSaveSwitch">
                    <button id="button_4"
                            size="large"
                            label="Sanvegarde Indicateurs"
                            onAction="button_4_Click"
                            supertip="Permet de sauvegarder l'ensemble des indicateurs et des bases de données dans un fichier Excel (A réaliser tous les ans)."
                            imageMso="AutoSaveSwitch"/>
                </group>
                <group id="group_4"
                       label="Administration"
                       imageMso="ControlsGalleryClassic">
                    <button id="button_5"
                            label="Affichage Admin."
                            size="large"
                            onAction="button_5_Click"
                            supertip="Permet l'affichage de tous les onglets et de l'ensemble du ruban."
                            imageMso="ControlsGalleryClassic"/>
                    <button id="button_6"
                            size="large"
                            label="Choix Répertoire"
                            supertip="Permet de choisir le répertoire qui regoupe tous les fichiers indicateurs envoyés par les garages."
                            onAction="button_6_Click"
                            imageMso="ToggleFolderShowInFavorites"
                            getVisible="button_6_getVisible"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
Quand je vois des lignes de codes comme ceci. C'est juste pas possible.
Code:
<button id="button_6"
Est-ce si compliqué de donner des noms de contrôle explicite ?
 
Bonjour @Valtraze

et est ce c'est si compliqué de comprendre que tu par le du ID 🤣 🤣

qu'un id est Unique et que le creator compte les élements de même type et teste "button_" & index pour créer le ID et vérifie même
si (au cas ou un bouton pendant la création aurait été supprimé )

autrement dit
creation de bouton: id="Button_1"
creation de bouton: id="Button_2"
creation de bouton: id="Button_3"
creation de bouton: id="Button_4"
suppression du bouton avec le id "Button_2"
creation de bouton: id="Button_2"

voila aucun trou dans le décompte

oserais-je dire aussi qu'il y a un bouton spécial a coté de l'input pour mettre un id particulier
histoire de le reconnaitre même a partir d'un autre ruban par l’intermédiaire de idQ
et que les callbacks peuvent être créés avec le label
exemple:
le xml
VB:
<button id="button_1"
                            imageMso="DatabaseLinedTableManager"
                            size="large"
                            label="Actualisation Données"
                            onAction="button_1_Click"
                            supertip="Permet d'actualiser les données issues des garages."/>
set bien le calback sera
Code:
sub Actualisation_Données_click(control As IRibbonControl)

msgbox control.id

End Sub
impossible de se tromper dans les callback
bien que j'ai laissé la possibilité de mettre le nom de callback que l'on veut ,je le déconseille aux débutants
d'autant plus que dans les callback générés on trouve ce genre de chose
visuel
1747575379732.png

code du callbak
Code:
'procedure {onAction} du bouton [ID:''button_1'' Label:''Bird (Anniversaire)'']'dans le parent [menu_1'' Label:''Date 2'']
Sub Bird_Click(control As IRibbonControl)
'DATEDIFF_AMJ4$(ByVal dat1 As Date, Optional ByVal dat2 As Date = 0, Optional JustYear As Boolean = False)
ActiveCell.Formula = "=DATEDIFF_AMJ4(,,)"
    CreateObject("WScript.Shell").SendKeys "{F2}{LEFT}{LEFT}{LEFT}"
End Sub
on voit bien que le commentaire du callback nous en dis long sur l'élément non ?

@JPaul78 fait ses armes laissons le aller à son rythme
 
Dernière édition:
Bonjour @Valtraze

et est ce c'est si compliqué de comprendre que tu par le du ID 🤣 🤣

qu'un id est Unique et que le creator compte les élements de même type et teste "button_" & index pour créer le ID et vérifie même
si (au cas ou un bouton pendant la création aurait été supprimé )

autrement dit
creation de bouton: id="Button_1"
creation de bouton: id="Button_2"
creation de bouton: id="Button_3"
creation de bouton: id="Button_4"
suppression du bouton avec le id "Button_2"
creation de bouton: id="Button_2"

voila aucun trou dans le décompte

oserais-je dire aussi qu'il y a un bouton spécial a coté de l'input pour mettre un id particulier
histoire de le reconnaitre même a partir d'un autre ruban par l’intermédiaire de idQ
et que les callbacks peuvent être créés avec le label
exemple:
le xml
VB:
<button id="button_1"
                            imageMso="DatabaseLinedTableManager"
                            size="large"
                            label="Actualisation Données"
                            onAction="button_1_Click"
                            supertip="Permet d'actualiser les données issues des garages."/>
set bien le calback sera
Code:
sub Actualisation_Données_click(control As IRibbonControl)

msgbox control.id

End Sub
impossible de se tromper dans les callback
bien que j'ai laissé la possibilité de mettre le nom de callback que l'on veut ,je le déconseille aux débutants
d'autant plus que dans les callback générés on trouve ce genre de chose
visuel
Regarde la pièce jointe 1217988
code du callbak
Code:
'procedure {onAction} du bouton [ID:''button_1'' Label:''Bird (Anniversaire)'']'dans le parent [menu_1'' Label:''Date 2'']
Sub Bird_Click(control As IRibbonControl)
'DATEDIFF_AMJ4$(ByVal dat1 As Date, Optional ByVal dat2 As Date = 0, Optional JustYear As Boolean = False)
ActiveCell.Formula = "=DATEDIFF_AMJ4(,,)"
    CreateObject("WScript.Shell").SendKeys "{F2}{LEFT}{LEFT}{LEFT}"
End Sub
on voit bien que le commentaire du callback nous en dis long sur l'élément non ?

@JPaul78 fait ses armes laissons le aller à son rythme
Merci à vous deux, à mon âge qui se rapproche des septuagénaires il me faut des délais de réflexions. Mais je suis friands d'informations qui me font progresser.
Bonjour à tous,
Je sais que ce post n'est pas prévu pour débattre du fichier de @JPaul78. Mais bon.
Petites pensées personnelles...
XML:
<?xml version="1.0" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
          onLoad="CustomUIOnLoad">
    <!--CreatorRibbonX ImageMso 2025 Version 6.5+ developed BY patricktoulon-->
    <!--project Ribbon name :test_solidarauto-->
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabAddIns"
                 getVisible="provix_TabAddIns_getVisible"/>
            <tab idMso="TabHome"
                 getVisible="provix_TabHome_getVisible"/>
            <tab idMso="TabInsert"
                 getVisible="provix_TabInsert_getVisible"/>
            <tab idMso="TabPageLayoutExcel"
                 getVisible="provix_TabPageLayoutExcel_getVisible"/>
            <tab idMso="TabFormulas"
                 getVisible="provix_TabFormulas_getVisible"/>
            <tab idMso="TabData"
                 getVisible="provix_TabData_getVisible"/>
            <tab idMso="TabReview"
                 getVisible="provix_TabReview_getVisible"/>
            <tab idMso="TabView"
                 getVisible="provix_TabView_getVisible"/>
            <tab idMso="TabDeveloper"
                 getVisible="provix_TabDeveloper_getVisible"/>
            <tab id="tab_1"
                 label="Solidarauto">
                <group id="group_0"
                       label="Mise à Jour"
                       imageMso="AccessRefreshAllLists">
                    <button id="button_1"
                            imageMso="DatabaseLinedTableManager"
                            size="large"
                            label="Actualisation Données"
                            onAction="button_1_Click"
                            supertip="Permet d'actualiser les données issues des garages."/>
                </group>
                <group id="group_1"
                       imageMso="CalendarMonthDetailsSplitButton"
                       label="Année de Référence">
                    <labelControl id="labelControl_1"
                                  label="Choix Année de Référence"/>
                    <comboBox id="comboBox_1"
                              imageMso="CalendarMonthDetailsSplitButton"
                              onChange="comboBox_1_onChange"
                              getText="comboBox_1_getText"
                              getItemCount="comboBox_1_getItemCount"
                              getItemLabel="comboBox_1_getItemLabel"/>
                </group>
                <group id="group_2"
                       label="Export Format PDF"
                       imageMso="PowerQueryDataFromPDFFile">
                    <button id="button_2"
                            label="Export Indicateurs"
                            size="large"
                            onAction="button_2_Click"
                            supertip="Exporte la page générale des indicateurs au format pdf."
                            imageMso="FileEmailAsPdfEmailAttachment"/>
                    <button id="button_3"
                            imageMso="PowerQueryDataFromPDFFile"
                            onAction="button_3_Click"
                            size="large"
                            label="Export benchmark"
                            supertip="Exporte le benchmark des garages au format pdf."/>
                </group>
                <group id="group_3"
                       label="Sauvegarde"
                       imageMso="AutoSaveSwitch">
                    <button id="button_4"
                            size="large"
                            label="Sanvegarde Indicateurs"
                            onAction="button_4_Click"
                            supertip="Permet de sauvegarder l'ensemble des indicateurs et des bases de données dans un fichier Excel (A réaliser tous les ans)."
                            imageMso="AutoSaveSwitch"/>
                </group>
                <group id="group_4"
                       label="Administration"
                       imageMso="ControlsGalleryClassic">
                    <button id="button_5"
                            label="Affichage Admin."
                            size="large"
                            onAction="button_5_Click"
                            supertip="Permet l'affichage de tous les onglets et de l'ensemble du ruban."
                            imageMso="ControlsGalleryClassic"/>
                    <button id="button_6"
                            size="large"
                            label="Choix Répertoire"
                            supertip="Permet de choisir le répertoire qui regoupe tous les fichiers indicateurs envoyés par les garages."
                            onAction="button_6_Click"
                            imageMso="ToggleFolderShowInFavorites"
                            getVisible="button_6_getVisible"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
Quand je vois des lignes de codes comme ceci. C'est juste pas possible.
Code:
<button id="button_6"
Est-ce si compliqué de donner des noms de contrôle explicite ?
Bonjour @Valtraze
Tu as totalement raison sur le principe mais je laisse faire l'outil de Patrick et je me concentre sur la fonctionnalité des outils que je réalise. De plus je suis totalement ignare sur la programmation XML et j'ai peur de faire plus de mal que de bien.
 
Bonjour à tous,
Je ne veux pas spécialement d'ébattre de cela ici et avec tout le respect que j'ai pour toi Patrick. C'est n'est pas leur donner les bonnes bases que de laisser faire cela, on le retrouve ensuite dans le code plus générique.
Ok tu parts sur le label pour nommer les callback, question : à quoi sert le callback getlabel ? il n'y a pas de callback getId que je sache, non ?
De toute façon la réflexion n'était pas contre toi, tu fait un code et chacun en fait ce qu'il en veux.
Merci à vous deux, à mon âge qui se rapproche des septuagénaires il me faut des délais de réflexions. Mais je suis friands d'informations qui me font progresser.
Je m'en rapproche aussi.😉.
De plus je suis totalement ignare sur la programmation XML et j'ai peur de faire plus de mal que de bien.
Cela viendra, petit à petit. Vous avez du temps maintenant.
 
re:
juste pour le fun
un exemple de projet
le menu insertion image de 2024
sur 2013 on a que le bouton image et image en ligne dans le ruban
j'ai cré le projet qui imite ce bouton qui est un splitButton sur les versions supérieures
1748022426646.png


le projet à ouvrir avec le creatorRibbonX ImageMso
libre a vous après de faire les macros qui font ce que font les bouton dans 2024
les boutons et events sont pres a l'emploi
dans le zip il y a un sample

code xml de ce menu pour ceux qui utilisent un autre creator ou editeur customUI

XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="CustomUIOnLoad">
    <!--CreatorRibbonX All Image 2025 Version 6.2 developed BY patricktoulon-->
    <!--project Ribbon name :bouton menu insertion image-->
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabInsert" visible="true">
                <group id="group_1" label="." insertBeforeQ="GroupInsertIllustrations" centerVertically="true">
                    <splitButton id="splitButton_1" size="large">
                        <button id="iconX" label="Images" imageMso="AutoSigInsertPictureFromFile"/>
                        <menu id="menu_1">
                            <menu id="menu_2" label="Placer dans la cellule" imageMso="MailMergePictureFieldInsert" screentip="Placer dans la cellule" supertip="Insérer une image directement dans la cellule&#13;l'image peut être déplacée,triée,filtrée&#13;et référencée dans les cellule">
                                <menuSeparator id="menuSeparator_1" title="Insérer une image à partir de"/>
                                <button id="button_1" label="Cet apareil" screentip="Insertion Image (cet apareil)" supertip="Insérer une image à partir de&#13;cet appareil" imageMso="AutoSigInsertPictureFromFile" tag="1" onAction="Cet_apareil_Click"/>
                                <button id="button_2" label="Apareil mobile" screentip="Insertion Image(apareil mobile)" supertip="Insertion d'image à partir de :&#13;* Telephone mobile&#13;* Tablette connectée&#13;* Disque dur connecté en bluetooth" imageMso="QuickSearchHasMobilePhone" tag="1" onAction="Apareil_mobile_Click"/>
                                <button id="button_3" label="Images d'archive" supertip="Insertion d'images d'archive&#13;procedure d'extraction  dans dossier temporaire" screentip="C" imageMso="NewWorkspaceFromArchive" tag="1" onAction="Images_d'archive_Click"/>
                                <button id="button_4" label="Images en ligne" screentip="Insertion d'image en ligne" supertip="Insertion d'image  a partir du web &#13;" imageMso="MailMergeMorePictureOptions" tag="1" onAction="Images_en_ligne_Click"/>
                            </menu>
                            <menu id="menu_3" label="Placer sur les cellules" imageMso="AutoSigInsertPictureFromFile" supertip="Insérer une image directement &#13;dans la plage de cellule&#13;">
                                <menuSeparator id="menuSeparator_2" title="Insérer une image à partir de "/>
                                <button id="button_5" label="Cet apareil" supertip="Insérer une image à partir de&#13;cet appareil" screentip="Insertion Image (cet apareil)" imageMso="AutoSigInsertPictureFromFile" tag="2" onAction="Cet_apareil_Click"/>
                                <button id="button_6" label="Apareil mobile" screentip="Insertion Image(apareil mobile)" supertip="Insertion d'image à partir de :&#13;* Telephone mobile&#13;* Tablette connectée&#13;* Disque dur connecté en bluetooth" imageMso="QuickSearchHasMobilePhone" tag="2" onAction="Apareil_mobile_Click"/>
                                <button id="button_7" label="Images d'archive" supertip="Insertion d'images d'archive&#13;procedure d'extraction  dans dossier temporaire" screentip="Insertion d'images d'archive" imageMso="NewWorkspaceFromArchive" tag="2" onAction="Images_d'archive_Click"/>
                                <button id="button_8" label="Images en ligne " screentip="Insertion d'image en ligne" supertip="Insertion d'image  a partir du web &#13;" imageMso="MailMergeMorePictureOptions" tag="2" onAction="Images_en_ligne__Click"/>
                            </menu>
                        </menu>
                    </splitButton>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
 

Pièces jointes

Bonjour
question déjà posée
je répète la réponse est non
un projet c'est un projet
vous n'avez pas besoins de creatorRibbonX pour merger deux XML il vous suffit de prendre la partie de l'un qui vous intéresse et la coller dans l'autre a l'emplacement requis avec le simple block note
et reouvrir le xml resultant avec le creator pour recréer un sample ou intégrer dans un fichier
Attention aux règles du customUI quand même tout ne va pas partout
patrick
 
Bonjour @patricktoulon ,

Je me permet de revenir vers vous, j'ai réussi à créer un bouton dans mon ruban, mais je peine pour y accoler (en cliquant dessus) un userform d'un xlam créée séparément. si vous pourriez m'expliquer comment procéder. Merci à vous.
Nathe
 
Bonjour @Nathe
je présent un long truc encore ....
je pense que pour éviter de polluer cette ressource qu'il l'est déjà assez ,de créer une discussion sur le forum
j'interviendrais avec plaisir
en l’état tu me donne pas assez de renseignements

ici il est question de traiter les éventuels bugs de l'applicatif
pas ce que vous en faite sauf si projet détaillé
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour