IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ruban Excel, GetCustomUI()


Sujet :

Macros et VBA Excel

  1. #1
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut Ruban Excel, GetCustomUI()
    Bonjour à tous,

    je m'attaque à sujet qui peut ne pas en être un, mais qui peut déboucher sur un tuto si la manipulation est particulièrement efficace

    Je souhaite pouvoir potentiellement fusionner deux fichiers Excel ensemble, tout en fusionnant leur ruban respectif.

    J'ai pour l'instant facilement "fusionner" les feuilles des classeurs, mais je souhaiterai pouvoir lire les fichiers xml de rubans de chacun des classeurs, qui à manipuler ultérieurement un 3e ruban dans lequel j'y écrirai les deux autres.

    La seule piste que j'ai actuellement sont les fonctions GetCustomUi et SetCustomUI, mais je n'ai pas le moindre exemple à faire tourner pour comprendre à quoi servirait exactement ces fonctions.

    Quelqu'un aurait-il déjà été confronté à l'une ou l'autre de ces fonctions, et puisse m'indiquer le chemin ?

    Merci et bon Allo ween (Ici Trouille) à tous
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut moi je suis interéssé
    Bonjour jpcheck

    sujet interessant dans le sens on l'on peut faire des plus jolis et interactif rubans qu'avec les fonction commandbar.add

    on trouve divers exemple pas trop compliqué qui démontre le fonctionnement

    source :https://msdn.microsoft.com/fr-fr/lib...ffice.14).aspx
    exemple 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit 
     
    Dim oWD As Object    
    Implements IRibbonExtensibility 
     
    ' Implement the IRibbonExtensibility Interface
    ' In this step, you implement the IRibbonExtensibilty interface's only member, GetCustomUI. Add the following procedure at the bottom of the code window. 
     
    Public Function IRibbonExtensibility_GetCustomUI(ByVal RibbonID As String) As String 
          IRibbonExtensibility_GetCustomUI = GetRibbonXML() 
    End Function 
     
    ' This procedure calls the GetRibbonXML method that, as its name implies, returns the customization XML to the GetCustomUI method which then adds it to the ribbon to implement when the add-in loads. 
    ' Retrieve the XML Customization Code
    ' In this step, you add the GetRibbonXML function. Here, the customization code is stored in a String variable that is returned to the GetCustomUI method. 
     
    Public Function GetRibbonXML() As String 
       Dim sRibbonXML As String 
     
       sRibbonXML = "<customUI xmlns=""http://schemas.microsoft.com/office/2006/01/customui"" >" & _ 
                    "<ribbon>" & _ 
                    "<tabs>" & _ 
                    "<tab id=""CustomTab"" label=""My Tab"">" & _ 
                    "<group id=""SampleGroup"" label=""Sample Group"">" & _ 
                    "<button id=""Button"" label=""Insert Company Name"" size=""large"" onAction=""InsertCompanyName"" />" & _ 
                    "</group >" & _ 
                    "</tab>" & _ 
                    "</tabs>" & _ 
                    "</ribbon>" & _ 
                    "</customUI>" 
     
       GetRibbonXML = sRibbonXML 
     
    End Function 
     
    ' Add the Procedure That Is Called When You Click the Button
    ' Add the procedure that gets called when you click the custom button: 
     
    Public Sub InsertCompanyName(ByVal control As IRibbonControl) 
       ' Inserts the specified text at the beginning of a range. 
       Dim MyText As String 
       Dim MyRange As Object 
       Set MyRange = oWD.ActiveDocument.Range 
       MyText = "Microsoft Corporation"   
       ' Inserts text at the beginning 
       ' of the active document. 
       MyRange.InsertBefore (MyText) 
    End Sub
    ou bien encore
    exemple 2
    Le code suivant montre l'exemple VBA complet pour le projet de test, en utilisant le Gestionnaire d'événements Project_Open.
    VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Option Explicit
    Sub ToggleManualTasksColor()
        Dim tsks As Tasks
        Dim t As Task
        Dim rgbColor As Long
        Set tsks = ActiveProject.Tasks
        For Each t In tsks
            If (Not t Is Nothing) And (Not t.Summary) Then
                SelectTaskField Row:=t.ID, Column:="Name", rowrelative:=False
                rgbColor = ActiveCell.CellColorEx
                If t.Manual Then                ' Check whether the manual task color is white.
                    If rgbColor = &HFFFFFF Then
                        Font32Ex CellColor:=&HF0D9C6  ' Change the background to light blue.
                    Else
                        Font32Ex CellColor:=&HFFFFFF  ' Change the background to white.
                    End If
                Else                ' The task is automatically scheduled, so change the background to white.
                    Font32Ex CellColor:=&HFFFFFF
                End If
            End If
        Next t
    End Sub
     
    Private Sub Project_Open(ByVal pj As Project)
        AddHighlightRibbon
    End Sub
     
    Private Sub AddHighlightRibbon()
        Dim ribbonXml As String
        ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">"
        ribbonXml = ribbonXml + "  <mso:ribbon>"
        ribbonXml = ribbonXml + "    <mso:qat/>"
        ribbonXml = ribbonXml + "    <mso:tabs>"
        ribbonXml = ribbonXml + "      <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">"
        ribbonXml = ribbonXml + "        <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
        ribbonXml = ribbonXml + "          <mso:button id=""highlightManualTasks"" label=""Toggle Manual Task Color"" "
        ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""ToggleManualTasksColor""/>"
        ribbonXml = ribbonXml + "        </mso:group>"    ribbonXml = ribbonXml + "      </mso:tab>"
        ribbonXml = ribbonXml + "    </mso:tabs>"
        ribbonXml = ribbonXml + "  </mso:ribbon>"
        ribbonXml = ribbonXml + "</mso:customUI>"
        ActiveProject.SetCustomUI (ribbonXml)
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir, Jpchek,

    malheureusement il semble que ces fonctions GetCustomUI , SetCustomUI ne soient pas accessibles en VBA....

    Cdt.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    OK, donc essentiellement tourner le sujet depuis VSTO en C# ou VB.Net pour obtenir pareille manipulation.

    Merci patrick, source pour Project effectivement.

    Je vais voir ce que je peux faire avec tout ca.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    j'aurais une question cependant

    et il possible de loader un ruban
    je m'explique je n'ai aucun soucis pour coder un xml pour un ruban avec Blok note ou autre voir même dynamiquement en vba
    ce que je voudrais savoir c'est si on peut après avoir ouvert le classeur loader le xml pour modifier le ruban
    ca serait vraiment on bon truc ca
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    En fait l'outil qui est le plus souvent mis en avant est le CustomUIEditor. Mais justement, mis à part la gestion dynamique du ruban avec InvalidateControl() pas de grande possibilité, d'où ma question
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut hé!!! pas si sur !!!!
    re

    j'etais en train de finaliser un autre projet excel to html et j'ai pensé a ton idée

    je n'ai pas encore aprofondi le sujet mais il y a peut etre une solution ( a etudier)

    dans les contribution tu trouve comment zipper ou dézipper un fichier en rar

    manuellement quand on veut récupérer le xml du ruban en general on change l'extention du xlm en rar
    ensuite on ouvre le rar et on choppe le xml

    serait il pas possible de :par macro changer l'extention, dezipper le rar) recupe xml .sur les deux fichier

    ensuite merger les deux xml en gardant que les controls et en réécrivant l'entete du xml dans un freefile avec open et sauvé en xml
    et rezipper ou rar avec le fichier avec le xml mergé et rechangement d'extention

    le tout dans des fonctions bien ficelée afin d'avoir que les actions base a coder

    2 eme solution
    apres faudrait voir aussi si avec commandbar non buildin on peu recupérer les barres ajouté en xml avec customui


    a mediter
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    c'est effectivement la solution vers laquelle je compte me tourner
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 216
    Par défaut
    Bonjour,

    En passant j'ai vu ce sujet et voici des pistes...en espérant aider.
    Pour créer et charger un ruban ne vba, il y a la méthode décrite pour Access mais qui est tout à fait possible d'utiliser pour Excel: http://warin.developpez.com/access/ruban/

    Sinon, au sujet des rubans à regrouper:
    On peut dans la définition des groupes de contrôles définir des IdQ à la place des Id. Cela permet à priori de regrouper des groupes de contrôles.
    Perso, je n'ai jamais testé...

    Cordialement.

Discussions similaires

  1. PB .XML RUBAN EXCEL 2007
    Par la_mule dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 29/03/2011, 09h39
  2. comment désactiver un ruban excel 2007
    Par foze81 dans le forum VB.NET
    Réponses: 0
    Dernier message: 09/04/2010, 13h38
  3. ruban excel avec lien sur une feuille du classeur excel 2007
    Par corbisier dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/09/2007, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo