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 :

Gestion des CheckBox dynamique [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Points : 12
    Points
    12
    Par défaut Gestion des CheckBox dynamique
    Bonjour,

    Aprés plusieurs recherches, j'ai trouvé avec l'aide du forum la façon de créer des checkbox dynamiques dans une userform.

    Le problème rencontré est la façon de récupérer l'information concernant un checkbox sélectionné. Quelqu'un pourrait-il m'indiquer comment on peut procéder ?

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Avatar de bifconsult
    Homme Profil pro
    Consultant
    Inscrit en
    Mars 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 189
    Points : 877
    Points
    877
    Par défaut
    Bonjour,


    Une checkbox étant égale à TRUE ou FALSE, pour récupérer la valeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Nom de la userform avec la checkbox : frm_test
    'Nom de la checkbox : chk_test
    dim a as boolean
    a = frm_test.chk_test.value
    A sera égal à TRUE ou FALSE selon l'état de la checkbox.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour bifconsult,

    Je suis d'accord avec ton code pour récupérer la valeur d'un checkbox intégrer à une useform. Mais dans ma problèmatique, il s'agit de checkbox dynamique c'est à dire introduit dans la userform par 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
    'Procedure de creation de CheckBox dynamique
    'dans l'UserForm
     
     
    Private Sub MiseAJourCheckBox()
        Dim Obj As Control
        Dim Cl As Classe1
        Dim nb As Integer
     
     
        nb = Sheets("Données").Range("B50000").End(xlUp).Row - 1
     
        For u = 1 To nb
     
     
            Set Collect = New Collection
     
            Set Obj = Me.Controls.Add("forms.Checkbox.1")
            With Obj
                .Name = "Checkbox" & u
                .Object.Caption = Sheets("Données").Cells(u + 1, 2)
                .Left = 350
                .top = 60 + (u - 1) * 20
                .Width = 140
                .Height = 15
            End With
     
     
            'ajout de l'objet dans la classe
            Set Cl = New Classe1
            Set Cl.ChkBx = Obj
            Collect.Add Cl
        Next u
     
    End Sub
    Je vais chercher les intitulés des checkbox dans une feuille de données et j'affiche les checkbox dans la userform. C'est un code qui n'est pas de moi.

    Je recherche la façon de pouvoir connaitre les checkbox selectionner.

    Si quelqu'un a des suggestions ??

    Merci

  4. #4
    Membre éclairé
    Avatar de bifconsult
    Homme Profil pro
    Consultant
    Inscrit en
    Mars 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 189
    Points : 877
    Points
    877
    Par défaut
    Bonjour,

    Comme tous les checkbox générés portent un nom commençant par Checkbox suivi d'un numéro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub chk_check()
    Dim ctrl As Control
    For Each ctrl In UserForm1.Controls
    chk_nm = ctrl.Name
    If Left(chk_nm, 8) = "Checkbox" Then
    'la ligne suivant permet de retourner le numéro de la checkbox
    chk_nr = Right(chk_nm, Len(chk_nm) - InStr(chk_nm, "x")) * 1
    chk_val = ctrl.Value
    End If
    Next ctrl
    End Sub

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Je vais tester ton code dès demain.

    Je me demandais si il y a moyen de lancer une procédure à chaque sélection de checkbox ?

    Merci bifconsult

  6. #6
    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
    Tu as commencé par utiliser ton module de classe, pourquoi ne pas y continuer

    1. Module de classe nommée Classe1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public WithEvents ChkBx As MSForms.CheckBox
     
    Private Sub ChkBx_Change()
     
    'ici mettre le code appelé au changement de l'état des chechbox crée dynamiquement
    'Par exemple on affiche le nom et la valeur du checkbox cliqué
    MsgBox ChkBx.Name & " - Valeur: " & ChkBx.Value
    End Sub
    2. Module de ton userform (Ton code légèrement adapté)
    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
    Dim Collect As Collection
     
    Private Sub MiseAJourCheckBox()
    Dim Nb As Integer, i As Integer
    Dim Obj As Control
    Dim CL As Classe1
    Dim Tb As Variant
     
    With Worksheets("Données")
        Nb = .Cells(.Rows.Count, "B").End(xlUp).Row
        Tb = .Range("B2:B" & Nb)
    End With
     
    Set Collect = New Collection
    For i = 1 To Nb - 1
        Set Obj = Me.Controls.Add("forms.Checkbox.1")
        With Obj
            .Name = "MonCheckBox" & i
            .Object.Caption = Tb(i, 1)
            .Left = 350
            .Top = 60 + (i - 1) * 20
            .Width = 140
            .Height = 15
        End With
        'ajout de l'objet dans la classe
        Set CL = New Classe1
        Set CL.ChkBx = Obj
        Collect.Add CL
        Set CL = Nothing
    Next i
    End Sub
     
    Private Sub UserForm_Initialize()
     
    MiseAJourCheckBox
    End Sub
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
    Set Collect = Nothing
    End Sub

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour mercatog

    Vraiment MERCI!

    J'ai galèré pour trouver une solution. Encore merci.

    Trés bonne journée

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

Discussions similaires

  1. gestion des evenements dynamique
    Par moniteur41 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2007, 21h22
  2. Problème avec la "Gestion des bibliothèques dynamiques"
    Par GoustiFruit dans le forum Delphi
    Réponses: 15
    Dernier message: 31/05/2006, 09h54
  3. Gestion des checkbox en API32 ?
    Par pj69100 dans le forum MFC
    Réponses: 2
    Dernier message: 01/05/2006, 11h12
  4. Question pas difficile sur la gestion des listes dynamiques
    Par mulbek dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2006, 13h57

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