évènement onchange sur combobox

évènement onchange sur combobox - VB/VBA/VBS - Programmation

Marsh Posté le 22-12-2006 à 10:55:32    

Bonjour,  
 
je suis actuellement en stage et je suis bloquée bloquée, j'ai cherché pendant un moment mais je me résoud à demander de l'aide.  
je travaille sous excel2000 et je code en VBA  
mon application crée un certain nombre de combobox dynamiquement (en fonction du nombre d'eléments récupéré dans une feuille excel).  
plusieurs combobox (pas toujours le meme nombre) sont lié avec un textbox (qui est locked).  
ex : dans la premiere listbox je selectionne "toto", dans la seconde "lili" et dans la troisieme "tutut", l'affichage que je souhaite dans ma textbox est : "toto+lili+tutu"  
je souhaite que lorsqu'on change la valeur de l'une ou l'autre combobox, cela change dans la textbox. le changement de la textbox a proprement parlé ne me semble pas super compliqué puisque je pourrai coupé la chaine a l'aide de split et du delimiteur "+" mais je n'arrive pas a affecter un code (par ex :sub combobox1_change() ) aux combobox.  
 
j'espere avoir ete assez claire et si je ne l'ai pas été n'hesitez pas a me le dire  
j'espere vraiment que vous pourrez m'aider car la je suis devant un mur et personne dans ma boite ne peut m'aider  
 
merci d'avance pour votre attention  
 
Naya

Reply

Marsh Posté le 22-12-2006 à 10:55:32   

Reply

Marsh Posté le 22-12-2006 à 11:26:31    

bonjour,
dans chacune de tes sub combobox_change tu mets à jour ta textbox
par exemple
textbox.value = combo1.value & combo2.value & combo3.value
 
et ca dans combo1 2 et 3 _change

Reply

Marsh Posté le 22-12-2006 à 11:29:57    

Bonjour
 
merci de ta reponse rapide
mon problemeest que vu que les combobox sont créés dynamiquement je n'arrive pas a leur affecter un code

Reply

Marsh Posté le 22-12-2006 à 12:03:21    

lorsque tu crées en amont tes sub, ca résout ton pb non ?

Reply

Marsh Posté le 24-12-2006 à 11:25:44    

A adapter, en espérant n'avoir rien oublié
 
Créer un Bouton sur Feuil1
Créer une UserForm1
Ajouter un Module
Ajouter un Module de Classe
 
Code Feuil1


Private Sub CommandButton1_Click()
    UserForm1.Creation
    UserForm1.Show
End Sub


Code UserForm1


Option Explicit
 
Public Sub Creation()
Dim TBox As Control
Dim CBox As Control
Dim i As Integer, j As Integer
Dim Cls As ClsEventCbo
 
    Set Coll = New Collection
     
    For i = 1 To 5
        Set CBox = Me.Controls.Add("Forms.Combobox.1" )
        With CBox
            .Name = "Cbo" & i
            .Left = 5
            .Top = 10 + ((i - 1) * 22)
            .Width = 80
            .Height = 20
            .ListRows = 12
            .BackColor = &HC0FFFF
            .Tag = i
        End With
     
        Set Cls = New ClsEventCbo
        Set Cls.ClsCbo = CBox
        Coll.Add Cls
        Set CBox = Nothing
         
        Set TBox = Me.Controls.Add("Forms.TextBox.1" )
        With TBox
            .Name = "TBox" & i
            .Left = 85
            .Top = 10 + ((i - 1) * 22)
            .Width = 75
            .Height = 20
        End With
        Set TBox = Nothing
    Next i
     
    For i = 1 To 5
        For j = 1 To 12
            Controls("Cbo" & i).AddItem i & " " & j
        Next j
    Next i
End Sub


Code Module1


Option Explicit
Public Coll As Collection


Code Module de Classe : ClsEventCbo


Option Explicit
Public WithEvents ClsCbo As MSForms.ComboBox
 
Private Sub ClsCbo_Change()
    UserForm1.Controls("TBox" & ClsCbo.Tag) = ClsCbo.Value
End Sub


Message édité par kiki29 le 24-12-2006 à 11:26:19
Reply

Marsh Posté le 28-12-2006 à 14:35:09    

Bonjour
tout d'abord désolé d'avoir mis si longtemps a tester ce que tu m'as proposé (fêtes de noel oblige)
 
la je viens de le tester tout seul pour voir et bien comprendre et il me met le message d'erreur suivant : "type défini par l'utilisateur non défini" et selecitonne  "ClsEventCbo" le code du userform1

Reply

Marsh Posté le 28-12-2006 à 15:17:58    

Reprends point par point dans un nouveau classeur les différentes portions de code avec leur affectation : feuille, Module, Module de classe et cela marchera

Reply

Marsh Posté le 28-12-2006 à 15:22:52    

oulalala je me cache je viens de relire ton exemple et de trouver mon erreur.... ClsEventCbo  est le nom du module de classe... aie! quelle nouille je suis!
je suis en train de l'adapter à mon cas. je te dirais si ca marche ^^

Reply

Marsh Posté le 28-12-2006 à 15:25:31    

le tag des combobox doit il etre unique ?

Reply

Marsh Posté le 28-12-2006 à 15:28:01    

Oh que oui

Reply

Marsh Posté le 28-12-2006 à 15:28:01   

Reply

Marsh Posté le 28-12-2006 à 16:26:17    

probleme resolu entierement :)
 
merci beaucoup de ton aide


Message édité par nayaphykit le 29-12-2006 à 09:10:59
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed