Commande OnAction avec ComboBox Active X
Bonjour, à toutes et tous.
je viens souvent sur ce forum et vous ai "emprunté" à plusieurs reprises des idées ou bouts de code pour mes applications, mais là, je sèche.
le but:
-création de combobox via vba sur une sheet.
-le nombre de combobox est variable à chaque usage du programme.
-chaque combobox est lié à une cellule et permet, soit de rapatrier la valeur de ladite cellule, soit via une liste dans le combo, de la modifier, et si il n'y a pas de bonne valeur dans la liste du combo, de la rentrer à la main(mais sans rajouter cette nouvelle valeur à la liste initiale).
-une fois la modification effectuée, le bouton ne doit plus être utilisé(enabled ou bien visible=false, je ne sais pas encore) voire même delete.
-affecter à chaque bouton créé une procédure qui s'execute au click( ou change)
pour ce faire, je pensais passer par "Onaction", mais comme je ne passe pas par un formulaire, cela ne fonctionne pas( ou bien j'ai raté quelque chose)
j'ai ensuite trouvé des bouts de code par-ci par-là, mais aujourd'hui rien ne fonctionne.
je n'arrive pas à appeler une procédure à partir d'un oleobjet créé dynamiquement.
j'ai aussi regardé avec les modules de classes, mais je ne maîtrise pas du tout cette partie.
voici la partie de code qui fonctionne. je doit avoir un problème de vocabulaire ou syntaxe, mais pour l'instant, je suis en panne.
merci par avance du temps consacré à mon problème, ainsi que des idées, voire solutions que vous pourrez m'apporter.
hurluberlu2
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| Public Sub CREA_BT(ByVal T As Range)
'
'
Set CTRL = ActiveSheet.OLEObjects.Add(classtype:="Forms.comboBox.1", Left:=T.Left, Top:=T.Top, Width:=38, Height:=T.Height, link:=True)
With CTRL
.Name = "BT_CONTROL" & NUMERO_BT' le nom et numero de chaque bouton
.ListFillRange = "le lien vers la liste source des combos"
.LinkedCell = "B" & 6 + NUMERO_BT 'la cellule liée
.Locked = False
.Object.ListRows = 20
.Object.Font.Name = "Arial"
.Object.Font.Bold = False
.Object.Font.Size = 8
.Object.BackStyle = 1
.Object.BorderStyle = 1
.Object.DropButtonStyle = 1
.Object.TextAlign = 2
.Object.SpecialEffect = 0
.Object.BackColor = RGB(255, 204, 255)
.Object.ForeColor = RGB(128, 0, 0)
.Object.ListWidth = 65
.PrintObject = False
End With
End Sub |