Bonjour,
J'ai un activeX Listbox sur ma feuille depuis des années.
Cette dernière bouge de place ou se réduit dans certains cas. J'ai résolu le problème en la réaffectant toujours les paramètres lors d'une activation de la feuille.
Maintenant, j'ai souhaité définir la taille de la liste déroulante au nombre d'éléments de la liste (env. 30 éléments)
Même en définissant le nombre directement, seule la valeur de 16 (valeur par défaut suivant la doc MS) fonctionne.
Erreur 438
Propriété ou méthode non gérée par cet objet en ligne 43
Quelle est la solution ?
Je viens de constater en vérifiant qu'il s'agit d'un ActiveX ET qu'il m'est impossible d'ajouter des Listbox ou des checkbox sur la feuille. Par contre, les boutons ActiveX ne posent pas de problème.
"FM20.DLL" est bien présent et coché.
Suis en Win10 et XL2007 ou WIn7 32 et XL2010.
Merci de votre aide.
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 Private Sub Worksheet_Activate() '--- Parfois des problèmes de reconnaissance du CboListEns donc faut faire un test Dim s As Shape, Trouve As Boolean Dim TrouveCbo As Boolean '--- TrouveCbo = False For Each s In ActiveSheet.Shapes If s.Name = "CboListEns" Then TrouveCbo = True: Exit For Next s If Not TrouveCbo Then 'Création du comboBox Dim oCombo As OLEObject Set oCombo = Sheets("T2022-2023").OLEObjects.Add(ClassType:="Forms.ComboBox.1", Left:=200, Top:=0, Width:=120, Height:=20) With oCombo .Name = "CboListEns" '<-- nom du Combobox '.ListFillRange = "Feuil2!A1:A20" '<-- exemple de chargement des données End With '--- Set oCombo = Nothing End If 'De toutes façons, nouveau ou existant redéfinit les propriétés car elles changent seules !!!! With ActiveSheet.Shapes("CboListEns") .Visible = True .Width = 120 .Height = 20 .Top = 0 .Left = 280 ' Ne fonctionne pas 'ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select '.ShapeRange.TextFrame2.TextRange.Font.Size = 18 'ActiveSheet.Shapes("CboListEns").Font.Size = 12 'ActiveSheet.Shapes("CboListEns").Font = "Arial" End With 'LISTRows = 16 par défaut sinon valeur de 1 à 255 dans l'aide MS Dim ssss As Long ssss = IIf(Worksheets("Data").Range("TabCategorie").ListObject.ListRows.Count + 2 > 15, 15, Worksheets("Data").Range("TabCategorie").ListObject.ListRows.Count + 2) 'Worksheets("Data").Range("TabCategorie").Shapes("CboListEns").ListRows = 15 'IIf(Worksheets("Data").Range("TabCategorie").ListObject.ListRows.Count + 2 > 15, 15, Worksheets("Data").Range("TabCategorie").ListObject.ListRows.Count + 2) Worksheets("Data").Range("TabCategorie").Controls("CboListEns").ListRows = 15 End Sub
ESVBA
Partager