Autres CreatorRibbonX palette color pour DUDU2

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 !

patricktoulon

XLDnaute Barbatruc
Bonsoir @Dudu2
J’ai pu dézipper une archive et j'ai retrouvé les deux exemples
Le premier avec les images externes et l'autre intégrées
J’ai dû les updater car il n'y avait pas d'events click
Par contre je n'ai plus le code couleur des images j'ai donc mis dans le tag 1,2,3,4,5...10
tu peux faire un array si tu les a encore sans devoir revenir sur le xml
Voilà elles ont le même rendu toutes les deux

je regarde ton xml
 

Pièces jointes

Punaise pour un petit xml
Alors en fait il y avait des doublons d'id (INTERDIT!!!!! en customUI) et impossible avec le creatorRibbonX.
Ça t'apprendra a faire de la copiettecollette excessive

tu a un creator sert toi en

Alors voici un zip avec le projet complet + a l'intérieur les deux versions( interne et externe ).

Maintenant je peux faire un exemple avec les icônes dynamiques ce sera interne sans l'être en fait.
 

Pièces jointes

Dernière édition:
En mettant des traces je vois quels CallBacks sont appelés:
Sub button_1_getImage(control As IRibbonControl, ByRef image)
Sub button_2_getImage(control As IRibbonControl, ByRef image)
Sub button_3_getImage(control As IRibbonControl, ByRef image)

Mais je ne comprends toujours pas qui les appelle.
Qu'est-ce qui provoque leur exécution ?
Et d'ailleurs par quel mystère le RibbonX les a codés ? L'attribut getImage ?
 
Dernière édition:
parce que tu n'a pas compris ce que vraiment veut dire callback avec le customui
le customui va appeler tout les callback concernant un eventuel Get..... en l'occurence ici l'attribut le getimage
c'est TOTOMATIC

je peux reconaitre que pour certains cela peut être déconcertant
par exemple
Ici on a 10 boutons
Dans ces 10 boutons on a donné l'attribut getimage="geticon"
donc quand tu va faire appel a l'onglet contenant ses boutons

le callback va se déclencher

le callback va demander et recevoir (call back)

Sub geticone(control As IRibbonControl, ByRef returnedVal)
ici control et returnval sont simultatement des argument d'appel (comme les fonction) et des return

on peut faire pareil avec une sub ou fonction (si tu comprends mieux comme ça )

exemple



VB:
Function qui(personne, nom$)
   Select Case personne
        Case 1
             nom = "dudu2"
         Case 2
             nom = "patricktoulon"
     End Select
 End Function


Sub test()
    Dim nom$
  
    qui 1, nom
     MsgBox nom
  
    qui 2, nom
    MsgBox nom

End Sub
Comme tu peux le voir dans la sub nom part vers qui et il revient instruit part=call revient=back

et c'est le même principe avec le customui des argument sont envoyer en interne par le ruban
les callback les renvois instruit ou modifié

toi tu comprends mieux ça
Code:
Function qui2(personne)
   Select Case personne
        Case 1
             qui2 = "dudu2"
         Case 2
             qui2 = "patricktoulon"
     End Select
 End Function
 Sub test2()
    Dim nom$
   
    nom = qui2(1)
     MsgBox nom
   
    nom = qui2(2)
    MsgBox nom

End Sub
le return(back) ici c'est la fonction et non pas la variable nom à l'inverse du premier exemple
 
Dernière édition:
re:
Tiens ce matin je t'ai refait un exemple
et la pour le coup tu n'a même pas besoins de garder les shapes elles sont construites et supprimées simultanément
et en plus il n'y a qu'un seul callback pour les icons
Avec ça j'ai du paracétamol aussi si tu veux
demo4.gif


VB:
'Callback pour customUI.onLoad
Sub CustomUIOnLoad(ribbon As IRibbonUI)
End Sub

'Callback pour icon_1 onAction
Sub ChangeColor(control As IRibbonControl)
ActiveCell.Interior.color = Val(control.Tag)
End Sub

'Callback pour tout les controls qui ont <<geticone>> dans leur attribut <<getImage>>
Sub geticone(control As IRibbonControl, ByRef returnedVal)
'le callback m'envoi le control et la variablerenurnedval(vide)
'donc avec le control j'ai son id  qui est le même que le nom de la shape correspondnate
Dim shap As Shape
Set shap = createIcon(control.ID, control.Tag) 'je crée donc une shape avec pour nom le id du control et pour couleur la valeur de son tag
DoEvents
'et maintenant j'instruit returnedval en lui donnant comme valeur l'object stdpicture que me renvoie la fonction capture
'et dans la fonction capture j'envoie la shape à transformer en stdpicture
Set returnedVal = Capture(shap, , True)'fonction de mon module fonction_images
shap.Delete 'maintenant que j'ai obtenu mon object stdpicture je peut supprimer la shape
End Sub

Function createIcon(n, color) As Shape
    Dim shap As Shape
    Set shap = ActiveSheet.Shapes.AddShape(msoShapeOval, 10, 30 * i, 20, 20)
    shap.Fill.ForeColor.RGB = color
    shap.Line.Weight = 0
      shap.Name = n
    Set createIcon = shap
End Function

Et voilà, du interne sans vraiment l’être

it's can a magic
Pour information avec ce modèle si tu veux ajouter des couleurs la seule chose que a à faire c'est
Ajouter une ligne button dans le xml
Code:
<button id="id de l'icon" screentip="nom de la couleur" onAction="ChangeColor" getImage="nomducallback" tag="valeur de la couleur"/>
me une recrudescence de consommation de paracétamol dans l'air
diabolo.gif
 

Pièces jointes

Dernière édition:
Bonjour @patricktoulon et les lecteurs,

Merci @patricktoulon pour l'exemple de création dynamique des Shapes du Post précédent, c'est très puissant comme outil.

Pour ma part, je suis reparti de ma ressource où je manipule des Shape et IPicture pour coder à ma sauce (et donc sans dépendance du code de quelqu'un d'autre) et sans signature d'auteur dans le code (donc libre pour tout usage) la fonction qui transforme une Shape en IPicture et la rend carrée (option) pour les icônes du ruban. Voici le fichier avec le code modifié et anonymisé.
 

Pièces jointes

re
tout les ids provix sont des id provisoires pour pouvoir les identifier dans le creator car le tabhome par exemple n'a pas d'id et ne doit pas en avoir
lui a un idmso

Lors de la finalisation, ces identifiants "provix..." sont supprimés, puis automatiquement régénérés quand on recharge le projet.

je répète c'est juste pour les identifier pendant le travail de création

Quand a la question comment on ajoute ben en cliquant d'abords sur le parent dans le visuel(faux treview) et en cliquant sur le bouton group bleu foncé en bas bref c'est pareil qu'avec des tab perso

c'est dans les vidéos de base tout ça
 
Merci pour ta réponse.
Mais désolé je n'ai toujours pas compris où il faut cliquer. Mais bon, je vais me re-regarder les vidéos !

1762356436816.png


Sinon, comme promis, ma version complète de la "Palette couleurs" après ma ré-écriture complète de l'équivalent de ta version "Palette couleurs avec images intégrées" suite à tes explications du getImage().
 

Pièces jointes

Dernière édition:
- 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