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 Sub

Bonjour Bruce31520 le forum

quel doit être la valeur de

SelectedP = mg.Cells(i + 1, 1).Value

sans 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) = SelectedP

pourquoi faire simple quand on peut faire compliqué ???

lb.Selected(i) = mg.Cells(i + 1, 1).Value

serait 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 Long

je 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

Rechercher des sujets similaires à "probleme initialisation selections listbox multiselect chargement wor"