Problème Affichage Ruban personnalisé

Bonjour,

J'ai créé avec custom UI des rubans personnalisés qui s'affichent en fonction de la feuille choisie dans le classeur.

Voici deux exemples de ruban dédiés:

Feuille "Saisie"

ruban saisie window

Pour la feuille "Placements":

ruban placements window

Cela fonctionne bien mais parfois, le logiciel n'affiche plus ces rubans personnalisés. Je n'ai pas trouvé a cause de cette anomalie. Il faut alors fermer et rouvrir Excel pour rétablir la fonctionnalité ruban personnalisé.

Voici le code utilisé pour afficher le ruban dédié à la feuille "Saisie"

Dim Rib As IRibbonUI
Dim MyTag As String

'Callback for customUI.onLoad
Sub RibbonOnLoad(Ribbon As IRibbonUI)
    Set Rib = Ribbon
    Call RefreshRibbon(Tag:="SAISIE")
End Sub

Sub GetVisible(control As IRibbonControl, ByRef visible)
    If control.Tag Like MyTag Then
        visible = True
    Else
        visible = False
    End If
End Sub

Sub RefreshRibbon(Tag As String)
    If FOuvert = True Then Exit Sub                   ' Evite problème d'affichage du menu lors report données à l'ouverture
    MyTag = Tag
    If Rib Is Nothing Then
        MsgBox "Erreur!" & Chr(13) & "Cliquer sur bouton 'Switch Ruban'" & Chr(13) & "ou" & Chr(13) & "Redémarrer le tableur"
    Else
        Rib.Invalidate
    End If
End Sub

Lorsque le problème d'affichage du ruban dédié se produit, si j'essaie de relancer par macro avec le code

Call RefreshRibbon(Tag:="SAISIE")

le ruban dédié à "Saisie" ne s'affiche pas.

Y-a-t-il un moyen de réactiver par macro les rubans sans fermer et relancer Excel?

Merci par avance pour votre aide

Cdt

JMV

Bonsoir pour que nous puissions voir directement pouvez-vous faire une copie de votre classeur avec des données fictives si il y a des noms de personnes que nous puissions voir directement s'il vous plaît

Bonjour,

Ça me semble illusoire d'espérer une réponse sans avoir un classeur fonctionnel. Visiblement ce n'est pas le Ribbon lui même qui pose problème mais les macros. Comme tu dois avoir un classeur gros comme ça, Je suppose que tu dois largement dépasser le Mo autorisé... Je te donne mon adresse en MP pour que tu puisses éventuellement le passer par mail. J'insiste le classeur doit être fonctionnel : Tu peux alléger des enregistrements trop nombreux sans dénaturer l'ensemble.

Pas de toto, tata, tipi, popo kaka : Du compréhensible hein !

A+

Bonsoir,

merci pour vos réponses.

Désolé de ne pas avoir répondu plus tôt. D'habitude, je reçois une notification de réponse sur mon mail. Cette fois, je n'ai rien reçu.

Est-ce que cette fonction très pratique a été désactivée pour les non-premium?

Cette application sert à gérer l'activité d'une PME du contact client jusqu'au paiement de la facture. Elle est en exploitation depuis près de 10 ans et le classeur pèse 4 Mo, ce n'est pas exorbitant. La table principale contient un peu plus de ~3 200 lignes de 64 colonnes.

Pour limité la taille du classeur au maximum,

  • le classeur contient les données sur 5 années glissantes, A chaque nouvel exercice, les données soldées de N-5 sont archivées.
  • une procédure permet de supprimer toutes les formules d'une ligne de la table lorsque cette ligne est soldée

Le classeur contient 421 procédures avec au total 7045 lignes de code et 2821 lignes de commentaires.

Ce n'est pas évident de créer un fichier permettant de reproduire l'anomalie constatée d'autant plus que cette anomalie ne se produit pas systématiquement.

Personnellement, j'ai remarqué que l'anomalie survient principalement lorsque j'ai modifié du code VBA et que je teste.

Mes menus personnalisés ont été réalisés avec custom UI editor en suivant le document de Ron De Bruyn. .

Je ne comprends pas pourquoi le logiciel perd parfois l'information "Ribbon", ni pourquoi je n'arrive pas à le réactiver sans fermer/ouvrir le classeur. Il doit y avoir un point concernant l'activation du menu custom UI qui m'échappe.

Quelqu'un peut-il m'expliquer le processus permettant de relancer le code Custom UI avec le classeur ouvert? Est-ce possible? ou m'indiquer un lien où je peux éventuellement trouver une explication.

Merci par avance pour votre aide.

Cdt

JMV

Bonsoir,

j'ai préparé un fichier dédié fonctionnel permettant de reproduire l'anomalie d'affichage des rubans customisés.

La taille du fichier fait encore 1.21 Mo, je ne sais pas l'envoyer en pièce jointes sauf à Galopin qui m'a transmis son mail.

Cdt,

JMV

Bonsoir,

Je n'ai rien reçu pour l'instant mais un incident sur ma messagerie me fait suspecter que ton message à été rejeté par mon hébergeur.

Si c'est le cas (C'est à dire si tu as bien déjà envoyé ton fichier par mail) je te suggère de procéder différemment :

Aller sur cjoint (rajouter .com : Tu trouveras l'adresse exacte sur google) Uploader ton fichier chez cet hébergeur et comme il n'est pas possible de passer le lien sur le forum, me communiquer ce lien par mail privé.

Ce qui me permettra de le télécharger directement sur la plateforme.

A+

Bonsoir,

OK, j'ai mis le fichier sur Cjoint

Cdt

JMV

Bonjour,

Je n'ai pas tout épluché hein !

Tu ne peux pas avoir plusieurs types d'évènementielles "Activate" : Une pour chaque Feuille et une pour "Workbook_SheetActivate" !

Supprime cette dernière et (je pense que...) tu n'auras plus de problème.

A+

Bonjour,

Si je te comprends correctement, dans Workbook, il faut supprimer la procédure:

'Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'    Select Case Sh.CodeName
'        Case "Feuil1": Call RefreshRibbon(Tag:="SAISIE")
'        Case "Feuil3": Call RefreshRibbon(Tag:="Investissements")
'        Case Else: Call RefreshRibbon(Tag:="AUTRE")
'    End Select
'End Sub

Dans ces conditions, pour afficher le ruban dédié à la feuille sélectionnée, je dois rajouter dans la procédure Activate de chaque feuille le call RefreshRibbon avec le Tag adapté à cette feuille.

J'ai fait les modifications et l'affichage ruban est correct.

Je vais faire ce weekend une série de tests pour vérifier que l'anomalie a bien disparue. Je te confirmerai.

Un grand merci pour ton aide.

Cdt

JM

Re-bonjour,

la vérification rapide de la modification de code a été faite sur le fichier complet qui je le rappelle ne présentait pas systématiquement l'anomalie d'affichage ruban dédié.

Je n'ai pas eu d'erreur.

Par contre, j'ai fait la même modification sur le fichier de test V7. Et, lorsque je sélectionne l'onglet "contrat" pour provoquer une erreur de code comme dans la procédure de test décrite précédemment, lorsque je ferme le débogueur, j'obtiens à nouveau l'erreur Ruban décrite précédemment lorsque je change d'onglet.

Il doit y avoir un autre conflit dans le code.

Cdt

JM

C'est normal tu as des erreurs de compilation dans ce fichier : Supprime les erreurs de compilation et tu n'auras plus de problème de ribbon !

OK!

Les erreurs de compilation dans V7 proviennent des formulaires qui ont été supprimés pour alléger le fichier.

C'est sans doute la raison qui explique que l'anomalie apparaissait systématiquement sur ce fichier réduit dès qu'on faisait appel à l'un de ces formulaires.

Dans le fichier source complet, j'ai vérifié, il n'y a aucune erreur de compilation.

Pour le moment, je n'ai plus l'anomalie de ruban sur ce fichier . J'attends un peu avant de clore le sujet.

Par contre, je reviens à ma question d'origine:

En cas d'anomalie, Y-a-t-il un moyen de relancer et de rétablir le fonctionnement du Ruban personnalisé sans fermer et rouvrir le fichier?

Merci pour ton aide,

Cdt

JMV

Rechercher des sujets similaires à "probleme affichage ruban personnalise"