Userform - manipulation de contrôles et propriétés

STephane

XLDnaute Occasionnel
bonsoir,


je m'amuse à bidouiller sous VBA Excel en ce moment, je vous colle ici quelques procédures, que vous jugerez peut-être inutile, peut-être pas, c'est pour le fun et ça condense un peu le code quand même...

de toute façon mon appli fait partie de mes "Gas Plants" :)


Afin d'éviter des elseif pour gérer la visibilité de certains objets, comme ci-dessous
'If TabStrip1.SelectedItem.Index = 0 Then
' Me.fr_contour.Visible = True
'
' Me.fr_cell2cell.Visible = False
' Me.fr_options.Visible = False
' Me.fr_about.Visible = False
'
'ElseIf TabStrip1.SelectedItem.Index = 1 Then

j'ai crée la fonction pSetVisibilityAlongSelectedTab

Call pSetVisibilityAlongSelectedTab(TabStrip1, _
Array(Array(0, _
Array(Array(fr_contour, True), _
Array(fr_cell2cell, False), _
Array(fr_options, False), _
Array(fr_about, False))), _
Array(1, _
Array(Array(fr_contour, False), _
Array(fr_cell2cell, True), _
Array(fr_options, False), _
Array(fr_about, False))) _
, _
Array(2, _
Array(Array(fr_contour, False), _
Array(fr_cell2cell, False), _
Array(fr_options, Visible), _
Array(fr_about, False))) _
, _
Array(3, _
Array(Array(fr_contour, False), _
Array(fr_cell2cell, False), _
Array(fr_options, False), _
Array(fr_about, Visible))) _
))

Private Sub pSetVisibilityAlongSelectedTab(objTab As TabStrip, creuset As Variant)

With objTab
For i = 0 To UBound(creuset)
If creuset(i)(0) = .SelectedItem.Index Then 'index tab
For j = 0 To UBound(creuset(i)(1)) 'sous-array au nombre de 4, 3 est retourné
'Debug.Print creuset(i)(1)(j)(0).Name 'donne l'objet
'Debug.Print creuset(i)(1)(j)(1) 'donne la visibilité à attribuer
creuset(i)(1)(j)(0).Visible = creuset(i)(1)(j)(1)
Next j
End If
Next i
End With
End Sub


Pour changer le texte des onglets d'un contrôle tabstrip

Call pSetTabsCaption(TabStrip1, Array(0, 1, 2, 3), Array("Contour & Diagos", "Range2Range", "Options", "Infos"))

Private Sub pSetTabsCaption(objTab As TabStrip, arrIndex As Variant, arrLibelles As Variant)
'attention, arrIndex contient les index numériques des onglets
For i = 0 To UBound(arrIndex)
objTab.Tabs.Item(arrIndex(i)).Caption = arrLibelles(i)
Next i
'que ce passe-t-il si je ne passe par un tableau/une variable variante ?
End Sub


'position des cadres de données.
Call pSetWidthSizeFromOther(Array(fr_contour, fr_options, fr_about), fr_cell2cell)

Private Sub pSetWidthSizeFromOther(arrObjects As Variant, objModel)
For i = 0 To UBound(arrObjects)
arrObjects(i).Left = objModel.Left
arrObjects(i).Top = objModel.Top
Next i

End Sub


bye bye
 

Statistiques des forums

Discussions
314 062
Messages
2 105 220
Membres
109 289
dernier inscrit
6LV1.69510