Créer en VBA une ListBox MultiSelect sur feuille

eriiic

XLDnaute Barbatruc
Bonjour à tous,

Si je crée manuellement une ListBox ActiveX sur une feuille dans ses propriétés je peux changer MultiSelect.

Si je la crée en VBA cette propriété est inaccessible par le code.
Et si sur la feuille, en mode création, je clique-droit sur l'objet je n'ai même pas 'Propriétés' dans le menu contextuel ce qui confirme le problème.
Comment bien la déclarer ?
Code:
Sub test()
' créer ListBox LbxSelMultiple
    On Error Resume Next
    ActiveSheet.Shapes("LbxSelMultiple").Delete
    On Error GoTo 0
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", _
                      DisplayAsIcon:=False, Left:=180, Top:=12.75, Width:=87, Height:=102).Select
    With Selection
        .Name = "LbxSelMultiple"
        .MultiSelect = 1
    End With
    [A1].Select
    'ActiveSheet.Shapes("LbxSelMultiple").MultiSelect = 1 'fmMultiSelectMulti
End Sub
 

Pièces jointes

  • Classeur3.xls
    26 KB · Affichages: 105
  • Classeur3.xls
    26 KB · Affichages: 115
  • Classeur3.xls
    26 KB · Affichages: 136

Pierrot93

XLDnaute Barbatruc
Re : Créer en VBA une ListBox MultiSelect sur feuille

Bonjour,

ceci semble fonctionner ous 2003...
Code:
Option Explicit
Sub test()
Dim s As OLEObject
Set s = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", _
     DisplayAsIcon:=False, Left:=180, Top:=12.75, Width:=87, Height:=102)
With s
    .ListFillRange = Range("A1:A20").Address
    .Object.MultiSelect = fmMultiSelectMulti
End With
End Sub

bon après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Créer en VBA une ListBox MultiSelect sur feuille

Re,

rajouter peut être un "activate" à l'objet :
Code:
Option Explicit
Sub test()
Dim s As OLEObject
Set s = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", _
     DisplayAsIcon:=False, Left:=180, Top:=12.75, Width:=87, Height:=102)
With s
    .ListFillRange = Range("A1:A20").Address
    .Object.MultiSelect = fmMultiSelectMulti
    .Activate
End With
End Sub
 

Discussions similaires