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 :

utilisation de checkbox ou de radio button


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1
    Par défaut utilisation de checkbox ou de radio button
    Bonjour.
    Je vous présente mon problème : sur un userform de recherche dans une base de données excel, j'ai pour chaque critère de recherche la possibilité pour l'utilisateur de définir le critère comme optionnel (opération logique OU) ou bien indispensable (opérateur logique ET) ou, bien sûr inactif( cad pas selectionné).
    Donc je pensais soit utiliser deux optionbuttons pour chaque critère mais alors comment dévalider un optionbutton à partir du moment où l'utilisateur l'a validé ( en imaginant qu'il ai fait une erreur et veuille se rétracter sur son choix)...y'a t-il une solution qui m'évite de rajouter un optionbutton NON pour chaque critère?
    Sinon dans une autre solutions envisagée je pensais utiliser deux checkbox pour chaque critère mais dans ce cas là, il faut que les deux checkbox ne puissent avoir comme valeur True en même temps...et comme j'ai prés de 90 critère de recherche, coder un comportement pour chaque checkbox serait fastidieux et lourd donc existe t-il un moyen dans cette optique pour que dés que je clique sur n'importe quel checkbox dans mon userform, il y est un code de test qui se lance pour vérifier que son checkbox aparié soit oui ou non en true? J'ai essayé avec le userform_click() mais cela ne prends pas en compte les controls inclus dedans.
    Merci d'avance pour vôtre réponse!!

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    tu pourrais éventuellement utiliser un toggleButton avec la propriété "TripleState" définie sur true.

    tu aurais donc "vrai", "faux" ou "nul" comme valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ToggleButton1_Change()
    If IsNull(Me.ToggleButton1.Value) Then Me.ToggleButton1.Caption = "Null" Else Me.ToggleButton1.Caption = Me.ToggleButton1.Value
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    ERP + Oracle + VBA Excel
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : ERP + Oracle + VBA Excel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Par défaut
    Bonjour,

    Avec un module de classe tu peux automatiser la gestion des événements sur un objet. Voila un bout de code que j'utilise. Le but est de créer un
    userform qui propose des places avec la disponibilité, je ne connais pas le nombre de place, et le but c'est qu'en cliquant sur le numéro de place cela modifie le bouton en proposant "utiliser la place X (le numéro de la place)"

    J'ai pour cela un module de classe qui affecte du code à l'événement Click

    Code inspiré d'un tuto de ce site


    Module de classe

    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 WithEvents tb As MSForms.Label
     
    Public Sub tb_Click()
     
     
     
    If tb.BackColor = vbMagenta And tb.Caption <> "" Then
     
        Dis_Det_Mois.CommandButton1.Caption = "Utiliser la place : " & " " & tb.Caption
        Dis_Det_Mois.Label3.Caption = tb.Caption
    End If
     
     
     
    End Sub

    dans l'initialisation du userform, je ne sais pas à l'avance le nombre de label

    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
     
     
    Private Sub UserForm_Initialize()
     
    Dim New_Text_box As Object
    Dim F_Trait As Object
    Dim Usf As Object
    Dim obj As Control
    Dim Cl As Classe_Label
     
     
    Set collect = New Collection
    Set F_Trait = ThisWorkbook.Sheets("Disponibilité")
     
     
    Dis_Det_Mois.Label2.Caption = F_Trait.Cells(1, 5).Value & " " & F_Trait.Cells(1, 10).Value
     
     
    For i = 2 To F_Trait.UsedRange.Rows.Count
     
     
        For j = 1 To F_Trait.UsedRange.Columns.Count
     
     
            If F_Trait.Cells(i, j).Value <> "" Then
     
            Set obj = Dis_Det_Mois.Controls.Add("Forms.Label.1")
     
     
            With obj
                '.Object.Caption = i
                .TextAlign = 2
                .Left = 1 + (j * 20)
                .Top = 2 + (i * 15)
                .Width = 20
                .Height = 20
                .BorderStyle = 1
            End With
     
     
         If F_Trait.Cells(i, j).Value = "N" Then
            obj.BackColor = vbRed
             Else
              obj.BackColor = &HF8D2F9
           End If
     
     
     
            If j = 1 Then
                obj.Caption = F_Trait.Cells(i, 1).Value
                obj.BackColor = vbMagenta
            End If
     
            If i = 2 Then
                obj.Caption = Format(F_Trait.Cells(i, j).Value, "DD")
                obj.BackColor = vbCyan
            End If
     
     
               Set Cl = New Classe_Label
               Set Cl.tb = obj
               collect.Add Cl
     
           End If
     
           Next
     
     
     
        Next
     
    If i > 40 Then Dis_Det_Mois.ScrollHeight = 600 + (i * 20)
     
    End Sub

  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,

    Tu mets 3 contrôles frames sur ta form et dans chacun d'eux 2 boutons d'option (oui et non), la sélection de l'un désélectionne l'autre au sein du même frame. Il te suffit alors de controler la valeur d'un seul des deux dans chaque frame.

    Hervé.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/08/2012, 09h11
  2. Réponses: 4
    Dernier message: 22/04/2011, 15h17
  3. Affichage sur Radio button en utilisant DATABINDING
    Par xpx-ayoub dans le forum VB.NET
    Réponses: 7
    Dernier message: 23/12/2010, 09h49
  4. utilisation de radio Button
    Par midosfax dans le forum Qt
    Réponses: 6
    Dernier message: 15/04/2009, 14h50
  5. Réponses: 5
    Dernier message: 01/03/2007, 18h08

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