Création de boutons via une procédure
Bonsoir,
J'ai un menu déroulant dans lequel on peut sléectionner différents graphiques tels Assets, Liabilities, Solvability, etc.
J'ai crée un autre menu dans lequel j'ai un bouton pour chaque graphique que l'on voudrait deleter.
Toutefois je préfèrerais que ce menu ne reprenne que les Graphiques effectivement affichés à l'écran.
Exemple: je choisi d'afficher Les graphiques Assets et Liabilities. Et bien une procédure crérait un menu déroulant proposant uniquement ces deux graphiques à supprimer.
je crois qu'il me faudrait écrire une boucle déterminant les graphiques affichés et donc pour lesquelles les boutons permettant de les deleter s'afficherait au nombre de ses graphiques affichés.
Suis-je clair ?
Menu déroulant et boutons s'y affichant
Voici les menus déroulants dont je parle.
Ils sont créer à partir de Frame importer sur lesquels on place des boutons.
voici le code des ces menus déroulants:
Code:
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
|
'Boutons crées pour être cliquables à la place des boutons présents sur les Frames importés.
Public WithEvents BTNPLAnalysisAssetsLiabilities As MSForms.CommandButton ' Bouton pout affichier à la faois les Actifs et le Passif
Public WithEvents BTNPLAnalysisRatiosMenu As MSForms.CommandButton ' Bouton donnant accès aux graphiques liés aux ratios
Public WithEvents BTNPLAnalysisRatiosMenuSS As MSForms.CommandButton ' Bouton pour afficher le graphique de structure et stabilitié
Public WithEvents BTNPLAnalysisRatiosMenuKF As MSForms.CommandButton ' Bouton pour afficher le graphique des chiffres les plus importants (clés)
Public WithEvents BTNPLAnalysisRatiosMenuKR As MSForms.CommandButton ' Bouton pout afficher le graphique des ratios les plus importants (clés)
'---------------------------------------------------------------------------------------------------------------------------------------------
'Dans la Feuille1
Dim Collect As New Collection
Private Sub FRM_File_Menu_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim ctrl As Control
Dim Bouton As Classe1
If Collect.Count = 0 Then
For Each ctrl In FRM_File_Menu.Controls
If TypeOf ctrl Is MSForms.CommandButton Then
Set Bouton = New Classe1
Set Bouton.BtnFile = ctrl
Collect.Add Bouton
End If
Next ctrl
End If
End Sub
'Dans un module de Classe je crée les boutons en tant qu'évenements clicquables. Nécessaires avec les Frames importés. Ces Frames ont été préferés car ils permettents d'utiliser la méthoe visible.
Public WithEvents BtnFile As MSForms.CommandButton
Public WithEvents BtnFileSaveAsMenu As MSForms.CommandButton
Public WithEvents BtnChartAnalysis As MSForms.CommandButton
Public WithEvents BtnSeriesSelection As MSForms.CommandButton
Public WithEvents BtnCustomChart As MSForms.CommandButton
Public WithEvents BtnSaveASChart As MSForms.CommandButton
Public WithEvents BtnSelectChart As MSForms.CommandButton
Public WithEvents BtnDeleteChart As MSForms.CommandButton
Public WithEvents BtnDeleteSelectedChart As MSForms.CommandButton
Public WithEvents BtnPrint As MSForms.CommandButton
Public WithEvents BtnPLAnalysisMenu As MSForms.CommandButton
Public WithEvents BtnPLAnalysisMenuRatios As MSForms.CommandButton
'Ici on dit que pour le Frame appelé via le bouton File on devra changer la couleur de chaque bouton au passage de la souris.
Private Sub BtnFile_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
With BtnFile
.BackColor = IIf(X > 10 And X < .Width - 10 And Y > 5 And Y < .Height - 5, vbRed, &H800000)
.ForeColor = IIf(X > 10 And X < .Width - 10 And Y > 10 And Y < .Height - 10, vbYellow, vbWhite)
End With
End Sub
Private Sub BtnFileSaveAsMenu_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
With BtnFileSaveAsMenu
.BackColor = IIf(X > 10 And X < .Width - 10 And Y > 5 And Y < .Height - 5, vbRed, &H800000)
.ForeColor = IIf(X > 10 And X < .Width - 10 And Y > 10 And Y < .Height - 10, vbYellow, vbWhite)
End With |