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 :

Evenement Change sur combobox crée dynamiquement [Controls et Event] [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Etudiant ingénieur
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations professionnelles :
    Activité : Etudiant ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Evenement Change sur combobox crée dynamiquement [Controls et Event]
    Bonjour à tous! et merci de prendre le temps de me donner un coup de main !

    J'ai eu beau chercher, sur le forum et sur google, mais rien n'a fonctionné pour l'instant...

    dans un UserForm je crée dynamiquement des combobox.

    Puisqu'elles sont en dynamique, l'événement "Nomdemacombobox_change()" n'est pas reconnu (normal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    'initialisation du USF
     
    Private Sub UserForm_Initialize()
     
     For I = 1 To nbJoueurs
     
                 'ajout de la combobox
    Set bouton = UserForm2.Controls.Add("Forms.combobox.1", "photojoueur" & I, True)
           bouton.Name = "photojoueur" & I
     
    Next
    End Sub
    et l'événement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'event en pseudo code
     
    Private Sub photojoueur1_Change()
     
    msgbox " la combo 1 a changé "
     
    End Sub
    à noter que j'ai donc un certain nombre de combobox ajoutés dynamiquement. si je pouvais regrouper avec
    " Sub photoNimportequelJoueur_Change()" ca serait tip top!

    Un grand merci par avance!
    toute piste est bienvenue!

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Peut être en utilisant un module de classe.

    1. Crée un module de Classe (Insertion> Module de Classe) nommé Classe1 (par défaut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public WithEvents CB As msforms.ComboBox
     
    'Ici le code générique pour tous les combo créés
    Private Sub CB_Change()
     
    If CB.ListIndex > -1 Then MsgBox "L'item " & CB.Value & " de la Combobox " & CB.Name & " a été séléctionné"
     
    End Sub
    2. Dans le module de ton userform
    PS: Dans le code suivant j'ai mis un exemple, chaque Combo créés reporte les données d'une colonne particulière de Feuil1. A toi d'adapter pour tes besoins
    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
    Const NbJoueurs As Byte = 7 'ici pour l'exmple
     
    Dim Coll As Collection
     
    Private Sub UserForm_Initialize()
    Dim Bouton As msforms.ComboBox
    Dim Plage As String
    Dim i As Byte
    Dim Klas As Classe1
     
    Set Coll = New Collection
    For i = 1 To NbJoueurs
        'Définition par exemple de RowSource de chaque combo
        With Worksheets("Feuil1")
            Plage = "'" & .Name & "'!" & .Range(.Cells(1, i), .Cells(20, i)).Address
        End With
        Set Bouton = Me.Controls.Add("Forms.combobox.1", "photojoueur" & i, True)
        'Paramètres de placement de chaque combo
        With Bouton
            .Name = "photojoueur" & i
            .Left = 10
            .Top = 20 * (i - 1) + 50
            .Width = 200
            .Height = 20
            .RowSource = Plage
        End With
        'ici instantiation de la combo créée
        Set Klas = New Classe1
        Set Klas.CB = Bouton
        Coll.Add Klas
        Set Klas = Nothing
        Set Bouton = Nothing
    Next i
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Futur Membre du Club
    Etudiant ingénieur
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations professionnelles :
    Activité : Etudiant ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup mercatog!

    J'avais déjà essayé avec un module de classe, mais j'avais dû me planter dans les déclarations, ou les liens entre l'userform et la classe...

    en tout cas, merci énormément pour ton aide!

    à Bientôt!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/07/2011, 21h34
  2. [DOM] evenement onClick sur element crée en javascript
    Par Jérémy Lefevre dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/04/2008, 11h57
  3. GetFields sur textBox crées dynamiquement
    Par Cabire dans le forum Windows Forms
    Réponses: 14
    Dernier message: 22/02/2008, 10h14
  4. Réponses: 1
    Dernier message: 25/04/2006, 16h22
  5. Réponses: 5
    Dernier message: 06/03/2006, 17h38

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