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 :

Alimenter le Ruban selon une plage d'une feuille de classeur. [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut Alimenter le Ruban selon une plage d'une feuille de classeur.
    Bonjour le Forum,

    Voilà, j'ai fais un Ruban dans Excel avec l'AssistantRuban.accde de Arkham46, j'ai créer plein de petits menus dont des ComboBox.
    J'ai d'une part, dans la partie XML de mon fichier Excel ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        ........
       <tabs>
          <tab id="customTab" label="Carto 200" >
            <group id="Geo" label="Géographie" >
    	    <comboBox id="GeograAfc" label="Alsace Franche Conté" onChange="GeoAfc" sizeString="###########################" >
    	      <item id="Afc1" label="Lot 4" />
    	      <item id="Afc2" label="Lot 9" />
    	      <item id="Afc3" ..........
    Et d'autre part, j'ai dans une feuille le contenu de ces ComboBox comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Colone A : 
    Alsace Franche Conté
    Lot 4
    Lot 5
    Lot 6
    ....
    J'aimerais remplir mon ruban depuis les différentes liste que j'ai dans mon classeur. De telle façon que, si je ne suis pas là, on peut ajouter une Zone (exemple : "Lot 9" dans la colonne "Alsace Franche Conté") sans accéder directement au Ruban via l'AssistantRuban ou Custom UI Editor.

    Car je suis le seul à savoir m'en servir.

    J'ai déjà lu des tutos sur le Ruban mais je n'arrive pas à comprendre l’interaction entre le Ruban et le Classeur...

    Si quelqu'un à des conseils, trucs, astuces voir même un exemple, je suis preneur...

    Merci à tous,

    Denis...

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut utiliser GetLabel
    Bonsoir.

    As-tu essayé de remplacer "Label" par des callback "GetLabel" ?

    Cordialement,

    pgz

  3. #3
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Bonjour, et merci de m'aider pgz,

    Si je place un GetLabel, je le fais comme çà ?
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <comboBox id="GeograAfc" GetLabel="Alsace Franche Conté" onChange="GeoAfc" sizeString="######################" >
    et je laisse le contenu de ce ComboBox vide ?

    Et ensuite, je place quoi dans VBA ? Car je n'en ai aucune idée... Ça devrait ce trouver dans le "Workbook_Open" ?

    J'ai testé GetLabel, mais Custom UI Editor me signal une erreur quand je génère les CallBack, "L'attribut 'GetLabel' n'est pas déclaré"...

    Et merci encore,

    Denis...

  4. #4
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Je viens d'essayé de remplacer mes ComboBox par des DynamicMenu... Ce qui me conviendrait parfaitement.

    Mais l'exemple de http://silkyroad.developpez.com/exce...backs/#LIII-26 ne fonctionne pas chez moi...

    Il y aurait-il un autre tutoriel à jour pour Excel 2013 ?

    Denis...

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Pour ta première question après une fonction d'appel, on met entre doubles quotes le nom d'une procédure. ET tu dois faire pareil pur tous les items de la combobox.
    Les procédures d'appel se mettent dans un module standard.

    C'est parfaitement illustré dans le tuto de silkyroad que tu cites.

    Pour l'utilisation de ce tuto, tu as fais quoi ? On ne peut jamais être sûr de rien mais c'est étonnant que cela ne fonctionne pas sur Excel 2013.

    Bonne journée,

    pgz

  6. #6
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Merci de me répondre pgz,

    Je pense que c'était dans le lien xmlns qui était .../2006/01/... au lieu de .../2009/07/... qui ne devait pas être compatible avec le fichier .xlsm...

    Voilà ce que j'ai trouvé dans mes recherches et qui fonctionne (http://excel.developpez.com/faq/?pag...nComboCellules) :

    Code xml : 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
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    	<ribbon startFromScratch="false">
    		<tabs>
     			<tab id="OngletPerso" label="OngletPerso" visible="true">
       				<group id="Projet01" label="Projet 01"> 
          <!-- getItemCount="NbItemCombo" va définir le nombre d'items dans la combobox. --> 
          <!-- getItemLabel="ComboLabel" permet d'alimenter la combobox. -->
          <!-- onChange="ChangeCombo1" gère l'évènement 'Change' dans la combobox. --> 
          				<comboBox id="Combo1" label="Choix : " 
    					getItemCount="NbItemCombo" 
    					getItemLabel="ComboLabel"
             				onChange="ChangeCombo1"
    					invalidateContentOnDrop="true" />
       				</group>
    			</tab>
    		</tabs>
    	</ribbon>
    </customUI>
    Et dans 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
    Option Explicit
     
    'Callback for Combo1 getItemCount
    Sub NbItemCombo(control As IRibbonControl, ByRef returnedVal)
        'Définit le nombre d'éléments dans la combobox
        returnedVal = 4
    End Sub
     
    'Callback for Combo1 getItemLabel
    'Index est défini par la valeur saisie dans Sub NbItemCombo (=4)
    Sub ComboLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
         'Alimente le Combobox à partir des données de la plage A1:A4
        returnedVal = Worksheets("Feuil1").Cells(index + 1, 1)
    End Sub
     
    'Callback for Combo1 onChange
    Sub ChangeCombo1(control As IRibbonControl, text As String)
        'Renvoie l'élément sélectionné dans la combobox
        MsgBox text
    End Sub
    Je n'ai plus qu'à adapter çà dans mes codes...

    Encore merci au forum et à pgz en particulier pour l'aide,

    Denis...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/07/2014, 18h57
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 18h37
  3. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  4. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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