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); } }
Partager