IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème de combobox


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut problème de combobox
    Bonjour,

    J'ai créé un userform avec une première ligen de combobox fixe et des combobox qui se générent automatique en cliquant sur un bouton "+", pour en ajouter autant qu'on veut.
    Mon soucis c'st que suivant le résultat de la dernière combobox par ligne il faut ou non ouvrir une textbox. Je l'ai fait sans soucis pour la première ligne :
    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
    Private Sub ComboBox4_Change()
    Dim cbox4 As Control
    If ComboBox4.Value <> "divers" Then
       For Each Controle In Controls
      If Controle.Name Like "raison" Then Controls.Remove Controle.Name
      Me.Width = 385
      Next
     
     Else
    On Error Resume Next
    Set cbox4 = Me.Controls.Add("Forms.textbox.1")
            With cbox4
                .Name = "raison"
                .Left = 360
                .Top = 60
                .Width = 100
                .Height = 15.5
            Me.Width = 480
            End With
     
    End If
    End Sub
    Mais je n'y arrive pas pour les combobox automatique :
    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
    46
     
    Private Sub Controls_Change()
    Dim s As Integer
    Dim i As Integer
     
    'pour savoir le nombre de ligne de combobox j'ai créé
    For Each Controle In Controls
      If Controle.Name Like "ref*" Then i = i + 1
      Next
    Feuil6.Cells(1, 8).Value = i
     
    'boucle pour créer la textbox à chaque ligne pour laquelle la combobox a la valeur recherchée
    For s = 0 To Feuil6.Cells(1, 8).Value
    If Controls("motif" & s).Change Then
     
    'en cas de changement d'avis de l'utilisateur dans la combobox, cela doit supprimer la textbox qui a été créée pour rien
    If Controls("motif" & s).Value <> "divers" Then
       For Each Controle In Controls
      If Controle.Name Like "raison" Then Controls.Remove Controle.Name
      Me.Width = 385
      Next
     
     Else
    On Error Resume Next
    Set cbox4 = Me.Controls.Add("Forms.textbox.1")
            With cbox4
                .Name = "raison"
                .Left = 360
                .Top = 60 + ((i + 1) * 22)
                .Width = 100
                .Height = 15.5
             Me.Width = 480
             Me.Height = cbox4.Top + cbox4.Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + cbox4.Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
            End With
     
    End If
    End If
     
    End Sub
    je ne sais pas comment faire pour que lorsque le combobox qui s'appelle "motif" + i qui correspond au numéro de la ligne, change , cela me crée un textbox.
    merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Avec un module de classe. Voici une piste.
    A mettre dans le module du formulaire :
    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
     
    Private Sub UserForm_Initialize()
     
        Dim Combo As ComboBox
        Dim Ctrl As Control
        Dim I As Integer
     
        'pour mon test
        ComboBox4.RowSource = "A1:A11"
     
        'crée trois ComboBox, avec la même source que ComboBox4 ("A1:A11", adapte)
        'et les positionne les uns au dessus des autres
        For I = 1 To 3
     
            Set Combo = Controls.Add("Forms.ComboBox.1", "Cmb" & I)
            Combo.RowSource = "A1:A11"
            Combo.Top = ComboBox4.Top + ComboBox4.Height * I
     
        Next I
     
        'Les stocke dans le tableau afin de leurs affecter la même proc
        For Each Ctrl In Me.Controls
     
            If TypeName(Ctrl) = "ComboBox" Then
     
                I = I + 1
     
                ReDim Preserve MesComboBox(1 To I)
                Set MesComboBox(I).GroupeComboBox = Ctrl
     
            End If
     
        Next Ctrl
     
    End Sub
    A mettre dans un module de classe appelé ClsCombo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public WithEvents GroupeComboBox As ComboBox
     
    Private Sub GroupeComboBox_Change()
     
       Traitement GroupeComboBox
     
    End Sub
    A mettre dans un module standard :
    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
     
    'le module de classe se nomme "ClsCombo"
    Public MesComboBox() As New ClsCombo
     
    Sub Traitement(Combo As ComboBox)
     
        Dim Controle As Control
        Dim cbox4 As Control
     
        If Combo.Value <> "divers" Then
     
            For Each Controle In UserForm1.Controls
     
                If Controle.Name Like "raison" Then UserForm1.Controls.Remove Controle.Name
                UserForm1.Width = 385
     
            Next
     
        Else
     
        On Error Resume Next
     
        Set cbox4 = UserForm1.Controls.Add("Forms.textbox.1")
     
            With cbox4
     
                .Name = "raison"
                .Left = 360
                .Top = Combo.Top
                .Width = 100
                .Height = 15.5
     
            End With
     
            UserForm1.Width = 480
     
        End If
     
    End Sub
    Teste et reviens pour plus.

    Hervé.

  3. #3
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut ??
    Je suis désolée mais je n'arrive pas à comprendre ce code, jene connais pas les modules de classe j'ai essayé de comprendre avec des tuto de module de classe sur le net mais ça n'éclairci pas ton code ... notamment à koi sert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    redim preserve mescombobox(1to I)
    set mescombobox(I).groupecombobox = ctrl
    de plus mescombobox n'est pas déclaré dans ce code tu le déclare dans un autre (dans celui du module standard) pourquoi? surtout qu'on ne l'utilise pas dans le module standard?
    Suis désolée mais j'ai vraiment besoin d'une explication pas à pas de ton code afin que je puisse le comprendre et l'intégrer au mien
    Merci de ta compréhension, et de ton aide

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Le mieux est que je te donne un fichier exemple en pièce jointe.
    Pour tester, tu lance le formulaire puis tu choisi la valeur "divers" dans les ComboBox, un TextBox est alors ajouté à coté du ComboBox actif, tu rentre une lettre dans les TextBox et un message t'indique la lettre entrée dans le TextBox actif. Seul problème, c'est que le module de classe ne gère pas l'évènement Exit des TextBox mais tout dépend du traitement que tu veux faire une fois les TextBox renseignés.

    Hervé.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je voudrais juste ajouter que personnellement je préfère ajouter des donnée dans une combobox par additem comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_Initialize()
       Dim i As Byte
       For i = 1 To 5
          ComboBox1.AddItem "Ligne" & i
       Next i
    End Sub
    Et puis n'oublis pas que tu as plein de tutos sur le site.

    bouton "tutoriesl excel"
    - puis "UserForms et contrôles"

    Et là tu as des tutos créé par Silkyroad comme :
    ftp://ftp-developpez.com/silkyroad/V...esUserForm.pdf

    (d'où j'ai tiré ce petit bout de code cité ci-dessus)

    bon courage

    Igloobel

  6. #6
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut
    Bonjour,

    Alors j'ai créé le module de classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
    Public WithEvents groupecombobox As MSForms.ComboBox
    Public WithEvents groupetextbox As MSForms.TextBox
     
    Private Sub groupecombobox_change()
    TraitementCombo groupecombobox
    End Sub
     
    Private Sub groupetextbox_change()
    TraitementTextBox groupetextbox
    End Sub
    j'ai créé un module standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
    Public WithEvents groupecombobox As MSForms.ComboBox
    Public WithEvents groupetextbox As MSForms.TextBox
     
    Private Sub groupecombobox_change()
    TraitementCombo groupecombobox
    End Sub
     
    Private Sub groupetextbox_change()
    TraitementTextBox groupetextbox
    End Sub
    et j'ai tenté d'ajouter ton code, je l'ai mis sou la fonction CommandButton4_Click car c'est à chaque click sur ce bouton que les combobox se créent (elle ne se crée pas sous forme de boucle comme dans ton code):
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    Private Sub CommandButton4_Click()
    Dim cbox As ComboBox
    Dim cbox2 As ComboBox
    Dim cbox3 As ComboBox
    Dim cbox4 As TextBox
    Dim cbox5 As ComboBox
    Dim ctrl As Control
    Dim I As Integer
    For Each Controle In Controls
      If Controle.Name Like "ref*" Then I = I + 1
      Next
    Feuil6.Cells(1, 8).Value = I
    On Error Resume Next
     
            Set cbox = Me.Controls.Add("Forms.Combobox.1")
            With cbox
                .Name = "ref" & I
                .Left = 20
                .Top = 60 + ((I + 1) * 22)
                .Width = 100
                .Height = 15.5
                .RowSource = "'LISTES'!A1: A153" ' récupère les info à mettre dans le cmbobox
            Me.Height = cbox.Top + cbox.Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + cbox.Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
            End With
     
           Set cbox2 = Me.Controls.Add("Forms.Combobox.1")
            With cbox2
                .Name = "taille" & I
                .Left = 120
                .Top = 60 + ((I + 1) * 22)
                .Width = 40
                .Height = 15.5
                .RowSource = "'LISTES'!C1: C44" ' récupère les info à mettre dans le cmbobox
           Me.Height = cbox2.Top + cbox2.Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + cbox2.Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
            End With
     
            Set cbox3 = Me.Controls.Add("Forms.Combobox.1")
            With cbox3
                .Name = "couleur" & I
                .Left = 160
                .Top = 60 + ((I + 1) * 22)
                .Width = 65
                .Height = 15.5
                .RowSource = "'LISTES'!D1: D34" ' récupère les info à mettre dans le cmbobox
            Me.Height = cbox3.Top + cbox3.Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + cbox3.Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
            End With
     
            Set cbox4 = Me.Controls.Add("Forms.textbox.1")
            With cbox4
                .Name = "qt" & I
                .Left = 225
                .Top = 60 + ((I + 1) * 22)
                .Width = 35
                .Height = 15.5
            Me.Height = cbox4.Top + cbox4.Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + cbox4.Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
            End With
     
            Set cbox5 = Me.Controls.Add("Forms.Combobox.1")
            With cbox5
                .Name = "motif" & I
                .Left = 260
                .Top = 60 + ((I + 1) * 22)
                .Width = 100
                .Height = 15.5
                .RowSource = "'LISTES'!B1: B6" ' récupère les info à mettre dans le cmbobox
            Me.Height = cbox5.Top + cbox5.Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + cbox5.Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
            End With
    For Each ctrl In Me.Controls
    If TypeName(ctrl) = "combobox" Then
    I = I + 1
    ReDim Preserve MesComboBox(1 To I)
    Set mescombox(I).groupecombobox = ctrl
    End If
    Next ctrl
    End Sub
    Mais déjà là j'ai un soucis avec le nom mescombobox qui est ambigu ... je ne comprends vraiment pas le système de ce module de classe ... je suis vraiment perdu et il ne manque plus que ça pour faire fonctionner mon prog correctement help je ne comprends pas.

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Dans le module du formulaire :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
     
    Private Sub CommandButton4_Click()
     
        Dim cbox As MSForms.ComboBox
        Dim Txt As MSForms.TextBox
        Dim ctrl As Control
        Dim I As Integer
     
        For Each ctrl In Controls
     
          If ctrl.Name Like "ref*" Then I = I + 1
     
        Next
     
        Feuil6.Cells(1, 8).Value = I
     
         Set cbox = Me.Controls.Add("Forms.Combobox.1")
         With cbox
            .Name = "ref" & I
            .Left = 20
            .Top = 60 + ((I + 1) * 22)
            .Width = 100
            .Height = 15.5
            .RowSource = "'LISTES'!A1: A153" ' récupère les info à mettre dans le cmbobox
            Me.Height = .Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
         End With
     
        Set cbox = Me.Controls.Add("Forms.Combobox.1")
         With cbox
            .Name = "taille" & I
            .Left = 120
            .Top = 60 + ((I + 1) * 22)
            .Width = 40
            .Height = 15.5
            .RowSource = "'LISTES'!C1: C44" ' récupère les info à mettre dans le cmbobox
            Me.Height = .Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
         End With
     
         Set cbox = Me.Controls.Add("Forms.Combobox.1")
         With cbox
            .Name = "couleur" & I
            .Left = 160
            .Top = 60 + ((I + 1) * 22)
            .Width = 65
            .Height = 15.5
            .RowSource = "'LISTES'!D1: D34" ' récupère les info à mettre dans le cmbobox
            Me.Height = .Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
         End With
     
         Set Txt = Me.Controls.Add("Forms.textbox.1")
         With Txt
            .Name = "qt" & I
            .Left = 225
            .Top = 60 + ((I + 1) * 22)
            .Width = 35
            .Height = 15.5
            Me.Height = Txt.Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
         End With
     
         Set cbox = Me.Controls.Add("Forms.Combobox.1")
         With cbox
            .Name = "motif" & I
            .Left = 260
            .Top = 60 + ((I + 1) * 22)
            .Width = 100
            .Height = 15.5
            .RowSource = "'LISTES'!B1: B6" ' récupère les info à mettre dans le cmbobox
            Me.Height = .Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au nb de combobox
     
            CheckBox1.Top = Me.Height - 45 'permet de placer le bouton sous les combobox
            Label8.Top = Me.Height - 45
            CommandButton1.Top = Me.Height - 30
            CommandButton2.Top = Me.Height - 30
            CommandButton3.Top = Me.Height - 30
            Me.Height = CommandButton1.Top + .Height + 50 ' permet d'ajuster la dimension de l'userform au bouton
         End With
     
        I = 0 '<<< évite la case vide
     
        For Each ctrl In Me.Controls
     
            If TypeName(ctrl) = "ComboBox" Then '<<< Attention à la casse !!! ComboBox différent de combobox
     
                I = I + 1
     
                ReDim Preserve MesComboBox(1 To I)
                Set MesComboBox(I).groupecombobox = ctrl
     
            End If
     
        Next ctrl
     
        I = 0
     
        For Each ctrl In Me.Controls
     
            If TypeName(ctrl) = "TextBox" Then
     
                I = I + 1
     
                ReDim Preserve MesTexBox(1 To I)
                Set MesTexBox(I).groupetextbox = ctrl
     
            End If
     
        Next ctrl
     
    End Sub
    Dans le module de classe appelé "ClsControle" :
    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
     
    Public WithEvents groupecombobox As MSForms.ComboBox
    Public WithEvents groupetextbox As MSForms.TextBox
     
    Private Sub groupecombobox_change()
     
        TraitementCombo groupecombobox
     
    End Sub
     
     
    Private Sub groupetextbox_change()
     
        TraitementTextBox groupetextbox
     
    End Sub
    Et enfin, dans le module standard :
    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
     
    Public MesComboBox() As New ClsControle
    Public MesTexBox() As New ClsControle
     
    Public Sub TraitementCombo(Combo As MSForms.ComboBox)
     
        MsgBox Combo.Text
     
    End Sub
     
    Public Sub TraitementTextBox(Txt As MSForms.TextBox)
     
        MsgBox Txt.Text
     
    End Sub
    C'est ici que tu remplace les boites de message par le traitement que tu veux faire une fois que le ou les contrôles ont été renseignés.

    Hervé.

Discussions similaires

  1. [AS2] Problème avec ComboBox lors création d'un composant perso
    Par aldo-tlse dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 24/05/2006, 18h51
  2. probléme de combobox
    Par benazerty dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2006, 17h33
  3. [DEBUTANT - VBA] Problèmes de ComboBox
    Par _Maniak dans le forum Général VBA
    Réponses: 13
    Dernier message: 10/03/2006, 10h02
  4. Problème de ComboBox...
    Par lerouzes dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/01/2006, 18h14
  5. Problème affichage ComboBox et barre déroulante!
    Par ghan77 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/01/2006, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo