XL 2010 VBA. Sauvegarder son paramétrage de ruban personnalisé

pleasewait

XLDnaute Nouveau
Bonjour,

J'ai besoin de l'aide du forum.

J'ai un projet perso qui nécessite macros VBA et personnalisation du ruban Excel avec un onglet perso.
Les macros VB sont faites et tournent.

Le ruban Excel est modifié avec un onglet perso qui convient pour paramétrer le fonctionnement des macros.
Cet onglet perso contient deux checkbox et une combobox (réalisé avec Custom UI editor).
Je lis et écrit les 3 contrôles de l'onglet perso avec du code VB.

Tout va bien mais ..

Ma question est la suivante :

Si je set/reset les checkbox et/ou change la combobox du ruban onglet perso pour paramétrage du fonctionnement de mes macros, comment sauver ces 'réglages' de mon onglet perso après fermeture et ré-ouverture du classeur Excel sans init des checkbox et combobox de mon ruban à l'ouverture du classeur Excel pour retrouver les checkbox et combox dans le même état ?

Note :
Je pense que je pourrais 'sauver' les Value du ruban perso dans une feuille du classeur mais je trouve que c'est n'est pas très élégant et assez encombrant.
Et encore moins dans un fichier texte accolé au classeur Excel ...
Peur-être une UserForm ... ???
J'en sais complètement rien en fait ... 😶

Merci pour votre aide si ma question a une réponse. 🤩
 
Dernière édition:

bof

XLDnaute Occasionnel
bonjour,
Utilise des constantes pour le paramétrage initial et ensuite tu modifies tes valeurs de ruban comme tu veux.
EDIT : Comme la question ne me semble pas claire, dans le cas ou au contraire tu veux utiliser des variables, tu les stockes dans le Gestionnaire de noms au lieux d'utiliser des Constantes...
Tu peux même utiliser des Noms cachées (Hidden) si tu crains des fausses manips...
A+
 

pleasewait

XLDnaute Nouveau
  • bonjour,
Utilise des constantes pour le paramétrage initial et ensuite tu modifies tes valeurs de ruban comme tu veux.
EDIT : Comme la question ne me semble pas claire, dans le cas ou au contraire tu veux utiliser des variables, tu les stockes dans le Gestionnaire de noms au lieux d'utiliser des Constantes...
Tu peux même utiliser des Noms cachées (Hidden) si tu crains des fausses manips...
A+
Bonjour,
Merci pour l'aide.
j'essaie de clarifier.

Exemple :
1. Dans mon ruban personnalisé, j'ai une checkbox dont je peux modifier la valeur booléenne en cliquant dans le ruban (facile !)
2. Si je ferme le classeur après l'avoir sauvé, je voudrais retrouver, à la ré-ouverture du classeur la même valeur booléenne de la checkbox (avant fermeture/save précédente du classeur).

Donc, pour la checkbox de mon ruban, ce que je voudrais :
  • Si je ferme mon classeur (après un save du classeur) à True dans la checkbox , je récupère True dans la checkbox à l'ouverture suivante du classeur.
  • Si je ferme à False (après un save du classeur), je récupère False dans la checkbox à l'ouverture suivante du classeur.
Le 'truc' est peut-être infaisable ...

Désolé de ne pas avoir été plus clair dans mon premier message.

Bonne journée.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
ok
si tes call back peuvent lire et écrire dans tes combo et autres controls dans ton ruban perso
il te suffit de mettre une mémorisation des données dans une feuille (par exemple) ou même des propertyperso
et dans le call back body on load charger tes données a partir de ou tu les a a mémorisé la dernière fois
d'ailleurs tes combo sont elle rempli en dur en xml avec <item> ou les remplie tu avec le clal back getitem pareil pour un checkbox etc......

ET CHOISI MIEUX LE NOM DE TES CALL BACKS PAR exemple
exemple Ribbon_GetEnabled pour le checkbox c'est moyen si tu vois ce que je veux dire
perso je met toujours une reference au controls dans le nom du callback ca aide a s'y retrouver
VB:
'Callback for checkBox1 getEnabled
Sub Ribbon_GetEnabled(control As IRibbonControl, ByRef returnedVal)

tu a du boulot a reprendre tout ça ;)
 

patricktoulon

XLDnaute Barbatruc
re
celui fonctionne très bien
j'ai bien entendu changé le nom des callback dans vba et le xml
et renseigne toi sur invalidatecontrol

voila maintenant a chaque ouverture le checkbox reprends la valeur mémorise dans le name "Yarr"
 

Pièces jointes

  • CheckBoxMem V pat .xlsm
    16 KB · Affichages: 11

pleasewait

XLDnaute Nouveau
re
celui fonctionne très bien
j'ai bien entendu changé le nom des callback dans vba et le xml
et renseigne toi sur invalidatecontrol

voila maintenant a chaque ouverture le checkbox reprends la valeur mémorise dans le name "Yarr"
Trop fort !!!! o_O;):oops:🤩🤩🥳🥳.
J'ai testé vite fait.
Ca marche nickel apparemment ...
Je teste ça ce week-end et je check comme résolu.
Je te remercie beaucoup.
Bon week end.
 

pleasewait

XLDnaute Nouveau
ok
si tes call back peuvent lire et écrire dans tes combo et autres controls dans ton ruban perso
il te suffit de mettre une mémorisation des données dans une feuille (par exemple) ou même des propertyperso
et dans le call back body on load charger tes données a partir de ou tu les a a mémorisé la dernière fois
d'ailleurs tes combo sont elle rempli en dur en xml avec <item> ou les remplie tu avec le clal back getitem pareil pour un checkbox etc......

ET CHOISI MIEUX LE NOM DE TES CALL BACKS PAR exemple
exemple Ribbon_GetEnabled pour le checkbox c'est moyen si tu vois ce que je veux dire
perso je met toujours une reference au controls dans le nom du callback ca aide a s'y retrouver
VB:
'Callback for checkBox1 getEnabled
Sub Ribbon_GetEnabled(control As IRibbonControl, ByRef returnedVal)

tu a du boulot a reprendre tout ça ;)

Merci encore ... 👍👍

Quelques questions si tu veux bien ...

1. Qu'entends-tu par propertyperso ? C'est du propertypatricktoulon ??? 😉 pas bien compris ...
2. Les checkbox et combobox sont (étaient ?!!) remplies en dur dans le xml avec le tag="DefaultValue:=1" pour les checkbox et tag="DefaultValue:=1" (par exemple pour les mettre à True ...) et les

<item id="cmb1Item0" label="1" />
<item id="cmb1Item1" label="5" />
<item id="cmb1Item2" label="10" />

pour la combobox.
Ca marche mais c'est bien sûr codé en dur (donc moyen ...) !!

re
celui fonctionne très bien
j'ai bien entendu changé le nom des callback dans vba et le xml
et renseigne toi sur invalidatecontrol

voila maintenant a chaque ouverture le checkbox reprends la valeur mémorise dans le name "Yarr"
J'aime ton astuce du Yarr en Gestionnaire de Noms qui fonctionne très bien mais :

1. Je peux utiliser cette même astuce avec d'autres noms si d'autres checkbox à créer (je suis flemmard car je pourrais essayer !!)
(exemple Toto1_checkbox et Toto2_checkbox ... etc... comme pour le Nom "Yarr" ??)

2. Ce même principe de Noms peut s'appliquer à une combobox par exemple (avec des valeurs autres que booléennes ?)
 

patricktoulon

XLDnaute Barbatruc
re
toute les fonctions callback avec "Get....." se font d'entrée au load du ruban l'ors de l'ouverture du classeur
^par contre si tu remplie ta combo en dur dans le xml tu ne pourra pas la modifier
ne pas oublier d'invalider le controls pour opérer les changement par callback
 

pleasewait

XLDnaute Nouveau
re
toute les fonctions callback avec "Get....." se font d'entrée au load du ruban l'ors de l'ouverture du classeur
^par contre si tu remplie ta combo en dur dans le xml tu ne pourra pas la modifier
ne pas oublier d'invalider le controls pour opérer les changement par callback
Oui, bien sûr.
C'est bien pour ça que le codage en dur ne me plaît pas.
Les checkbox et combobox peuvent être 'remplies' en dur (pas choquant (quoique ...), nan, le problème était bien de mémoriser valeur courante des checkbox et combobox pour le classeur.

Comment référencer un Nom pour mémo comboxbox ??
 

pleasewait

XLDnaute Nouveau
Microsoft dit ça :

Sub CheckCustomProperties()

Dim wksSheet1 As Worksheet

Set wksSheet1 = Application.ActiveSheet

' Add metadata to worksheet.
wksSheet1.CustomProperties.Add _
Name:="Market", Value:="Nasdaq"

' Display metadata.
With wksSheet1.CustomProperties.Item(1)
MsgBox .Name & vbTab & .Value
End With

End Sub

Ca a pas l'air mal ... Je ne connaissais pas ...
C'est la bonne méthode pour mémo valeur courante de combobox ?
 

Discussions similaires

E
Réponses
8
Affichages
1 K
E