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

VSTO .NET Discussion :

Problème menu dynamique dans le ruban


Sujet :

VSTO .NET

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 46
    Points
    46
    Par défaut Problème menu dynamique dans le ruban
    Salut a tous,

    Alors voila je bloque depuis un bon moment sur un bug que je n'arrive pas résoudre.

    En fait dans mon ruban, j'ai un menu dynamique qui charge pour chaque feuille excel les données contenues dans les customproperties de la feuille correspondante. Pour chacune de ces feuilles je génère (dynamiquement) un autre sous menu contenant des boutons.

    Ce menu marche très bien lorsque je me sert de mon addin, seulement je rencontre un souci lorsque j'enregistre mon fichier (après avoir travaillé dessus et donc ajouté des customproperties aux feuilles).

    Donc une fois ce fichier enregistré, lors de sa réouverture, le menu ne fonctionne plus. au lieu d'afficher les sous menus avec leurs boutons, il n'affiche rien.

    J'ai cependant trouvé une petite feinte afin que celui ci fonctionne. Afin de faire cela, il faut que je lance un document excel vierge, que je modifie quelque chose afin qu'il soit considéré comme modifier et que j'ouvre a partir du menu d'excel mon fichier précédemment enregistré. Et la comme par magie le menu fonctionne.

    je vous met le code qui permet de généré ce menu

    Si quelqu'un pouvait m'aider ca serait super car je ne voie aucune solution.

    Merci d'avance

    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
            /// <summary>
            /// Rechargement automatique a chaque clic sur le menu dynamique avec affichage de toutes les pages et ses requetes associées
            /// </summary>
            public void Menu_Refresh_Refresh_ItemsLoading(object sender, RibbonControlEventArgs e)
            {
                string all_sheet = "";
                string Sheet_name = "";
                int count = 0;
                int countG = 0;
                string[] my_req = null;
                string[] Type_req = new string[] { Rib_Qualiac.Trad.Traduire("TaskPaneQdc"), Rib_Qualiac.Trad.Traduire("TaskPaneQquery"), Rib_Qualiac.Trad.Traduire("TaskPaneGtreq") };
     
                try
                {
                    int sheetCount = Rib_Qualiac.Wb.Sheets.Count;
                    Menu_Refresh_Refresh.Items.Clear();
     
                    //chargement des feuilles
                    for (int i = 1; i <= sheetCount; i++)
                    {
                        Excel._Worksheet Mysheet = (Excel._Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[i];
                        Sheet_name = Mysheet.Name;
                        all_sheet = Sheet_name + ";";
                        count = Mysheet.CustomProperties.Count;
     
                        //création du sous menu pour chaque feuille
                        RibbonMenu mSubMenu = new RibbonMenu();
                        mSubMenu.ItemSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeRegular;
                        mSubMenu.Label = Sheet_name;
     
                        if (count != 0)
                        {
                            countG += count;
     
                            //bouton pour chaque requete
                            for (int j = 1; j <= count; j++)
                            {
                                my_req = Mysheet.CustomProperties.Item[j].Value.ToString().Split(';');
                                RibbonButton subButton = new RibbonButton();
                                subButton.Click += new EventHandler<RibbonControlEventArgs>(Rib_Qualiac.Treq.Refresh_Req);
     
                                if (my_req[1] == "1")
                                {
                                    subButton.Label = my_req[3];
                                    subButton.Description = Sheet_name + ";" + my_req[1] + ";" + my_req[0] + ";" + my_req[2] + ";" + my_req[7] + ";" + my_req[4] + ";" + my_req[5] + ";" + my_req[6] + ";" + my_req[8] + ";" + my_req[9];
     
                                    subButton.ScreenTip = Rib_Qualiac.Trad.Traduire("Styp_requ") + my_req[0];
                                    subButton.SuperTip = Rib_Qualiac.Trad.Traduire("Styp_type") + Type_req[Convert.ToInt32(my_req[1])]
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_feui") + Sheet_name
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_util") + my_req[2]
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_cell") + my_req[7]
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_tabe") + Rib_Qualiac.Trad.Traduire(my_req[4])
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_inti") + Rib_Qualiac.Trad.Traduire(my_req[5]);
                                                        //+ "\n" + Rib_Qualiac.Trad.Traduire("Styp_decu") + Rib_Qualiac.Trad.Traduire(my_req[6]);
                                }
                                else if (my_req[1] == "2")
                                {
                                    subButton.Label = my_req[0];
                                    subButton.Description = Sheet_name + ";" + my_req[1] + ";" + my_req[0] + ";" + my_req[3] + ";" + my_req[2];
                                    subButton.ScreenTip = Rib_Qualiac.Trad.Traduire("Styp_requ") + my_req[0];
                                    subButton.SuperTip = Rib_Qualiac.Trad.Traduire("Styp_type") + Type_req[Convert.ToInt32(my_req[1])]
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_feui") + Sheet_name
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_cell") + my_req[3]
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_lgco") + Rib_Qualiac.Trad.Traduire(my_req[2])
                                                        + "\n" + Rib_Qualiac.Trad.Traduire("Styp_inti") + Rib_Qualiac.Trad.Traduire(my_req[5]);
                                }
                                mSubMenu.Items.Add(subButton);
                            }
     
                            //séparateur
                            RibbonSeparator tmp = new RibbonSeparator();
                            mSubMenu.Items.Add(tmp);
     
                            //bouton actualiser tout
                            RibbonButton subButtonGlob = new RibbonButton();
                            subButtonGlob.Click += new EventHandler<RibbonControlEventArgs>(Rib_Qualiac.Treq.Refresh_All);
                            subButtonGlob.Label = Rib_Qualiac.Trad.Traduire("subButtonGlob") + Sheet_name;
                            subButtonGlob.Description = Sheet_name;
     
                            mSubMenu.Description = Rib_Qualiac.Trad.Traduire("nbreq") + count;
                            mSubMenu.Items.Add(subButtonGlob);
                        }
                        else
                        {
                            mSubMenu.Description = Rib_Qualiac.Trad.Traduire("noreq");
                        }
                        mSubMenu.OfficeImageId = "FileSaveAsExcelXlsx";
                        Menu_Refresh_Refresh.Items.Add(mSubMenu);
                    }
     
                    //séparateur
                    RibbonSeparator tmp2 = new RibbonSeparator();
                    Menu_Refresh_Refresh.Items.Add(tmp2);
     
                    //bouton actualiser tout
                    RibbonButton subButtonGeneral = new RibbonButton();
                    subButtonGeneral.Click += new EventHandler<RibbonControlEventArgs>(Rib_Qualiac.Treq.Refresh_General);
                    subButtonGeneral.Label = Rib_Qualiac.Trad.Traduire("subButtonGeneral");
                    subButtonGeneral.Image = Qualiac.Properties.Resources.classeur;
                    if (countG != 0)
                    {
                        subButtonGeneral.Description = Rib_Qualiac.Trad.Traduire("nbreq") + countG;
                        subButtonGeneral.Enabled = true;
                    }
                    else
                    {
                        subButtonGeneral.Description = Rib_Qualiac.Trad.Traduire("noreq");
                        subButtonGeneral.Enabled = false;
                    }
                    Menu_Refresh_Refresh.Items.Add(subButtonGeneral);
     
                }
                catch
                {
                    Rib_Qualiac.Outils.MsgBox("Msg_Rib", "Msg_Rib_Menu", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut EXCEL ADD-IN,menu
    bonjour
    ou est le code dans add-in shutdown qui decharge les menus apres avoir enregistre yon classeur et quitter l'application excel?
    parce il est necessaire de decharger les menus si tu veux les revoit.
    bon code....

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 46
    Points
    46
    Par défaut
    Bonjour mabrouki, merci de ta réponse,

    Alors j'ai ajouter, sur l'évènement "Ribbon_Close", le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Menu_Refresh_Refresh.Items.Clear();
    Menu_Refresh_Refresh.Dispose();
    seulement, je cela ne marche toujours pas.

    et dans mon addin shutdown il n'y a rien car je n'arrive pas a accéder à mon élément du menu même si je le met en Public.

    Pourrais tu m'indiquer ce qu'il faut mettre.

    merci d'avance

  4. #4
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 46
    Points
    46
    Par défaut
    bon ben finalement j'ai trouvé la solution.
    Cela venait d'une mauvaise affectation de variable au démarrage de mon application.

    Merci pour ta réponse mabrouki

    see u

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

Discussions similaires

  1. Problème de OnAction dans le ruban
    Par nicolas2603 dans le forum VBA Access
    Réponses: 9
    Dernier message: 14/04/2011, 18h25
  2. [AC-2007] menu dynamique dans ruban
    Par santacrus dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/04/2009, 16h39
  3. MOSS : Creation d'un menu dynamique dans une MasterPage
    Par rems67 dans le forum SharePoint
    Réponses: 6
    Dernier message: 12/11/2007, 08h29
  4. Réponses: 2
    Dernier message: 14/12/2006, 07h54
  5. Menu dynamique dans calque
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 07/06/2006, 10h37

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