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

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
Private Sub Workbook_Open()
    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 Sub