Problème initialisation sélections listbox multiselect au chargement du wor
Bonjour,
Les sélections de ListBoxes Active X Multiselect n'étant pas sauvegardées et restituées automatiquement à l'ouverture d'un workbook, je les ai sauvegardé à coté de chaque item de la plage de définition des items pour chaque ListBox.
J'utilise la méthode Workbook_Open() pour les restituer à l'ouverture du WorkBook (voir code ci-dessous).
Je ne comprends pas pourquoi j'ai une erreur d'exécution 238 (propriété ou méthode non définie pour cet objet) sur le lb.Selected(i)
Merci pour votre aide.
Jean-Marc
Private Sub Workbook_Open()
' rc = Capabilities_Forms_Initialize()
Dim lb, CurShape As Shape
Dim lbName As Variant
Dim Name As String
Dim Width, height, Left, Top As Long
Dim Wsname, rg As String
Dim mg As Range
Dim i, m As Long
Dim WS As Worksheet
Dim SelectedP As Boolean
Set CurShape = ActiveSheet.Shapes("Rectangle 102")
CurShape.Left = 2
CurShape.Top = 1177
CurShape.Width = 661
CurShape.height = 692
Set CurShape = ActiveSheet.Shapes("Rectangle 154")
CurShape.Left = 2
CurShape.Top = 1871
CurShape.Width = 661
CurShape.height = 228
For Each lbName In Array(Array("Assembly", 132, 53, 58, 1200), Array("Propulsion", 144, 53, 262, 1192), _
Array("Avionics", 204, 88, 452, 1194), Array("Casting", 120, 28, 54, 1274), Array("Processes", 141, 78, 261, 1267), _
Array("Testing", 197, 135, 456, 1309), Array("Forging", 120, 28, 55, 1325), Array("MRO", 144, 90, 261, 1377), _
Array("Cabin", 191, 52, 456, 1459), Array("Insulation", 120, 20, 60, 1393), Array("Tubes", 144, 40, 261, 1496), _
Array("Consummables", 191, 30, 458, 1528), Array("Material", 120, 41, 56, 1441), Array("Metal", 144, 39, 261, 1551), _
Array("Composite", 190, 109, 461, 1568), Array("Machining", 132, 85, 63, 1513), Array("Engineering", 147, 66, 261, 1613), _
Array("Welding", 132, 30, 57, 1619), Array("Tools", 146, 40, 58, 1677), Array("Onboard", 294, 101, 264, 1710), _
Array("Additive", 148, 101, 59, 1742), Array("Certificates", 194, 195, 96, 1894), Array("Approvals", 205, 195, 450, 1891))
Name = CStr(lbName(0))
Width = CInt(lbName(1))
height = CInt(lbName(2))
Left = CInt(lbName(3))
Top = CInt(lbName(4))
Set CurShape = ActiveSheet.Shapes(Name)
CurShape.Width = Width
CurShape.height = height
CurShape.Left = Left
CurShape.Top = Top
Set lb = Me.Worksheets(1).Shapes(Name).OLEFormat.Object
rg = lb.ListFillRange
Wsname = Split(rg, "!")(0)
Set WS = ThisWorkbook.Worksheets(Wsname)
Set mg = WS.Range(rg).Offset(ColumnOffset:=1)
m = mg.Rows.Count ' lb.ListCount
For i = 0 To m - 1
SelectedP = mg.Cells(i + 1, 1).Value
lb.Selected(i) = SelectedP
Next i
Next lbName
End SubBonjour Bruce31520 le forum
quel doit être la valeur de
SelectedP = mg.Cells(i + 1, 1).Valuesans ton fichier c'est difficile de te dire mais je pense que ton code avec des noms réservé excel que tu déclares en Variables + des bricolages du style
SelectedP = mg.Cells(i + 1, 1).Value
lb.Selected(i) = SelectedPpourquoi faire simple quand on peut faire compliqué ???
lb.Selected(i) = mg.Cells(i + 1, 1).Valueserait exactement pareil, mais tout dépends de la valeur de mg.Cells(i + 1, 1) car tu ne peux avoir comme valeur que 0 ou 1 pour ne pas planter !!!!
une précision encore
Dim Width, height, Left, Top As Longje suppose que tu voulais que les quatre variables soient déclarées en long??
Sauf quand pratiquant de la sorte, les trois premières seront déclarées en Variant et la dernière top en long!!
Si tu joins le fichier on va regarder, mais sans pas possible.
a+
Papou