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 :

Problème ImageMSO pour ruban perso


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 247
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 247
    Par défaut Problème ImageMSO pour ruban perso
    Salut à tous,

    Dans un classeur, je voudrais avoir un onglet perso afin de placer 3 choix (pour l'instant) qui ouvrirais différentes feuilles de mon classeur.
    J'ai le prg suivant pour effectuer le Xml, je le trouve un peu basic mais bon.

    voici le xml
    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
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon>
        <tabs>
          <tab id="tabMenuVente" label="Menu Vente">
            <group id="grpActions" label="Actions">
     
              <!-- Bouton Effectuer Vente -->
              <button id="btnVente" 
                      label="Effectuer Vente" 
                      imageMso="Calculator" 
                      size="large" 
                      onAction="Open_Vente"/>
     
              <!-- Bouton Ajouter Produit -->
              <button id="btnProduit" 
                      label="Ajouter Produit" 
                      imageMso="TableInsert" 
                      size="large" 
                      onAction="Ajouter_Produit"/>
     
              <!-- Bouton Résumé Caisse -->
              <button id="btnResume" 
                      label="Résumé Caisse" 
                      imageMso="ChartInsert" 
                      size="large" 
                      onAction="Ouvrir_Resume_Caisse"/>
     
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>
    Le problème, c'est que les images ne s'affichent pas, à part Calculator.
    comment faire

    Merci

  2. #2
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 222
    Par défaut
    Hello,

    pour un prog un peu moins basique y'a ça https://excel-downloads.com/resource...n.1447/updates
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  3. #3
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 516
    Par défaut
    Bonjour à tous,
    Pour ma part je n'arrive pas à reproduire votre problème !
    Votre version d'Excel ne comporte peut-être pas ces images !
    Pour un fonctionnement minimum vous devez :
    • Insérer un module pour les Callbacks.
    • Définir la procédure pour le onAction des boutons (voir exemple xlm)
    • Définir la procédure sur chargement du ruban (Pour sauvegarder le Handle du ruban, garder un référence au ruban et autres...)
    • l'espace de nom à été mis à jour utilisez la dernière version. (Selon votre version d'Excel)


    Plus généralement :
    • Éviter les underscores pour les noms de procédures (Ceux-ci étant plutôt réservés pour les méthodes et procédures des contrôles
    • Suivez une convention de nommage
      • Pour les variables le camel case est populaire avec le premier mot en minuscule exemple 'monBudget'
      • Pour les procédures, fonctions, constantes le PascalCase est recommandé exemple 'CalculFondDeCaisse'
      • Donner des noms explicites. Et éviter les raccourcis. (nommer : 'CalculFondDeCaisse' et pas 'CalcFondCaiss')


    Voici un exemple de fichier xlm mis à jour :
    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
    <!--Mettez à jour l'espace de nom. Une version plus récente est disponible !-->
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
              onLoad="OnRibbonLoad">
        <ribbon>
            <tabs>
                <tab id="tabMenuVente"
                     label="Menu Vente"
                     visible="true">
                    <group id="grpActions"
                           label="Actions">
                        <!-- Bouton Effectuer Vente -->
                        <button id="btnVente"
                                label="Effectuer Vente"
                                imageMso="Calculator"
                                size="large"
                                onAction="OpenVente"/>
                        <!-- Bouton Ajouter Produit -->
                        <button id="btnProduit"
                                label="Ajouter Produit"
                                imageMso="TableInsert"
                                size="large"
                                onAction="AjouterProduit"/>
                        <!-- Bouton Résumé Caisse -->
                        <button id="btnResume"
                                label="Résumé Caisse"
                                imageMso="ChartInsert"
                                size="large"
                                onAction="OuvrirResumeCaisse"/>
                    </group>
                </tab>
            </tabs>
        </ribbon>
    </customUI>
    Et un exemple du module Callbacks minimum :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    '@ModuleDescription "Callbacks for CustonUI."
    '@IgnoreModule
    '@Folder "Ribbon"
    Option Explicit
     
    Private mUIRibbon As Office.IRibbonUI
     
    #If VBA7 Then
        Private Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef destination As Any, _
                                                                                        ByRef SOURCE As Any, _
                                                                                        ByVal Length As Long)
    #Else
        Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef destination As Any, _
                                                                                ByRef SOURCE As Any, _
                                                                                ByVal Length As Long)
    #End If
     
    #If VBA7 Then
        Private Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
    #Else
        Private Function GetRibbon(ByVal lRibbonPointer As Long) As Object
    #End If
        Dim RibbonTemp As Object
        CopyMemory RibbonTemp, lRibbonPointer, LenB(lRibbonPointer)
        Set GetRibbon = RibbonTemp
        Set RibbonTemp = Nothing
    End Function
     
    '@Description "Function to be run when loading ribbons."
    Public Sub OnRibbonLoad(Ribbon As IRibbonUI)
        Set mUIRibbon = Ribbon
        mUIRibbon.ActivateTab "tabMenuVente"
     
        ' // Save the Ribbon Handle
            sys_Settings.Range("sysvr_RibbonHandle").Value = CStr(ObjPtr(mUIRibbon))
     
    End Sub
     
    '@Description "Recovers the ribbon if lost."
    Sub RefreshRibbon(Optional ByVal ControlID As String = "")
        If mUIRibbon Is Nothing Then
            #If VBA7 Then
                        Set mUIRibbon = GetRibbon(CLngPtr(sys_Settings.Range("sysvr_RibbonHandle").Value))
            #Else
                        Set mUIRibbon = GetRibbon(CLng(sys_Settings.Range("sysvr_RibbonHandle").Value))
            #End If
            If ControlID = vbNullString Then
                mUIRibbon.Invalidate
            Else
                mUIRibbon.InvalidateControl ControlID
            End If
        Else
            If ControlID = vbNullString Then
                mUIRibbon.Invalidate
            Else
                mUIRibbon.InvalidateControl ControlID
            End If
        End If
    End Sub
     
    Public Sub OpenVente(control As IRibbonControl)
        MsgBox "Bouton " & control.ID & " Cliqué !"
    End Sub
     
    Public Sub AjouterProduit(control As IRibbonControl)
        MsgBox "Bouton " & control.ID & " Cliqué !"
    End Sub
     
    Public Sub OuvrirResumeCaisse(control As IRibbonControl)
        MsgBox "Bouton " & control.ID & " Cliqué !"
    End Sub
    Vous avez la possibilité d'utiliser des images personnelles (par exemple images 32*32 pixels en *.png) qui seront peut-être plus adaptées que les images intégrées d'Excel.
    Vous pouvez aussi tenter de changer d'image Mso exemple :

    • DataFormAddRecord
    • SourceControlAddObjects


    Et :
    • CitationMark
    • CreateStoredProcedure
    • CalculateSheet


    Testez avec ce fichier, bonne programmation.
    Pièce jointe 669725

    Et pour créer votre ruban vous avez : Assistant ruban pour Office
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en :resolu: Vous avez aimé la discussion alors un :plusser: fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Hello,

    Autre application WYSIWYG très utile:
    assistant-ruban

  5. #5
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 516
    Par défaut
    Bonjour à tous,
    @Deedolith,
    Et pour créer votre ruban vous avez : Assistant ruban pour Office
    S'il passe à coté c'est qu'il le fait exprès...
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en :resolu: Vous avez aimé la discussion alors un :plusser: fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  6. #6
    Membre chevronné
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 204
    Par défaut pour trouver ton icon
    Bonjour
    dans mon creatorRibbonX imageMso

    tu a le dialog xlicondialog3

    tu peux chercher ton icon
    • par version d'Excel
    • par categorie(groupe)
    • par type(button,gallery,toggleButton,etc..


    ou
    par une partie du nom
    ou
    par la première lettre avec les touches de A à Z en passant par les particulier _xxxx

    la liste d'icone contient toute les listes d'icon à jour dans le fluent mars 2025 y compris ceux pour MAC

    si tu trouve pas ton icon la dedans ben alors c'est que le nom est mal orthographié il y a plus de 8600 ref d'icon

    Attention selon la version le même icon peut être dessiné différemment

    en tout cas dans mon creator ton projet ressort bien les 3 icones

    Nom : Capture.PNG
Affichages : 128
Taille : 107,3 Ko

    j'ajoute que mon creator créer le fichier compatible 2007 à 2024
    car je cré deux xml un pour 2007 l'autres pour les versions superieures et que les xml sont en standalone
    autrement dit le shemas xml employé est automatiquement choisi en fonction de votre version d'excel
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. VBA et XML pour transfert de ruban perso dans Excel
    Par canichon dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 06/01/2014, 15h14
  2. [XL-2007] VBA et XML pour transfert de ruban perso
    Par canichon dans le forum Excel
    Réponses: 1
    Dernier message: 25/11/2013, 15h13
  3. [AC-2010] Code VBA pour ruban perso
    Par CmzxNene dans le forum IHM
    Réponses: 5
    Dernier message: 21/05/2012, 13h20
  4. un serveur JSP gratuit pour page perso ?
    Par VerrNum dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 26/04/2006, 10h14

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