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 :

probleme bouton radio [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut probleme bouton radio
    Bonjour à tout le monde,

    J'ai un petit problème avec des boutons radios sur une feuille excel.
    Je souhaite faire un questionnaire avec des boutons radios mais je ne sais pas comment récupérer les résultats.
    En fait dans le questionnaire, il y aura plusieurs questions avec à chaque fois 3 réponses: oui, non et je sais pas.
    J'aimerais comptabiliser le nombre de oui, non et je sais pas.
    Si quelqu'un pouvait m'aider, merci?

    Bonne journée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    regarde le ficihier joint!
    Question Réponse1 Réponse2 Réponse3 Réponse4 Réponse5 Réponse6 Réponse7 Réponse8 Valide1 Valide2 Valide3 Valide4 Valide5 Valide6 Valide7 Valide8
    Qel était la couleur du cheval blanc d’Henri IV ? Blanc Noir Gris Marron Bai Jaune Roux Beige 1 0 0 0 0 0 0 0
    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
    Dim L As Long
     
     
    Private Sub CommandButton1_Click()
     Dim Reponse As Integer
     Dim I As Long
     For I = 1 To 8
        Reponse = Reponse + (Me.Controls("CheckBox" & I).Tag * Me.Controls("CheckBox" & I).Value)
     Next
     MsgBox Abs(Reponse)
    End Sub
     
     
    Private Sub UserForm_Initialize()
     
     
     Me.Label2 = Sheets("QCM").Range("A2").Offset(L)
     For I = 1 To 8
        Me.Controls("CheckBox" & I).Caption = Sheets("QCM").Range("A2").Offset(L, I)
         Me.Controls("CheckBox" & I).Tag = Sheets("QCM").Range("A2").Offset(L, I + 8)
     Next
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut probleme bouton radio
    Merci pour l'intervention mais je n'ai pas fais d'userform, j'ai crée mon questionnaire sur une feuille excel directement.
    Et les boutons c'est pas des checkbox mais des boutons radios....

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Points : 180
    Points
    180
    Par défaut
    Bonjour

    Une proposition dans le fichier joint

    Dans les Propriétés (Mode Création de l'onglet Développeur et Click droit sur la case à cocher)
    Le "GroupName" doit être le même (Q1 pour la question 1 dans l'exemple) pour les trois choix
    La cellule liée est dans "LinkedCell"


    Bon courage s'il y a plus de 10 questions
    Fichiers attachés Fichiers attachés

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut probleme bouton radio
    Oui c'est exactement ça mais je ne peux pas voir le code??
    Serait possible d'avoir le mot de passe?

  6. #6
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste avec des zones de groupes et des bouton d'option dans ces derniers. Pour ce faire, il y a toute une procédure. Tu commence par poser une zone de groupe dans la feuille tu lui donne un titre puis dans cette zone de groupe, tu pose tes différents boutons d'option que tu nomme de la question posée (Homme, Femme par exemple) une fois ceci fait, tu clique sur la zone de groupe puis touche Ctrl et tu clique ensuite sur les différents boutons et ceci, pour sélectionner l'ensemble puis clic droit sur la sélection et choisir "Groupe" puis "Grouper" dans le menu. Ceci fait, tu va dans la zone de nom (en haut à gauche) et tu donne un nom plus significatif à ton groupe, avec Homme et Femme, tu peux nommer ton groupe par exemple "Groupe Sexe". J'ai fais un code qui permet de récupérer les différentes valeur une fois les choix réalisés. Attention, c'est assez scabreux pour la récupération des différentes valeur car pour avoir accès aux prorpiétés des boutons il est nécessaire de défaire le groupe car comme il est ensuite considéré comme un Shape unique les propriétés accessibles sont relativement restreintes. Je poste le code qu'il te faudra adapter mais aussi un fichier test ->Test boutons d'option.xls <- pour que tu te rende compte de la chose :
    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
     
    Sub Test()
     
        Dim Fe As Worksheet
        Dim TblRecup()
        Dim Tbl()
        Dim G As Shape
        Dim S As Shape
        Dim NomGroupe As String
        Dim I As Integer
        Dim J As Integer
        Dim K As Integer
        Dim Test As Long
     
        Set Fe = ActiveSheet
     
        'les groupes étant réalisés, ils ne forment plus qu'un
        'avec les Shapes qu'ils contiennent
        For Each G In Fe.Shapes
     
             K = K + 1
             ReDim Preserve TblRecup(1 To 2, 1 To K)
             TblRecup(1, K) = G.Name
             TblRecup(2, K) = "Nom du groupe"
     
            'parcours de la collection par groupe
            For Each S In G.GroupItems
     
                'récupération du nom de chaque shape constituant le groupe en court
                'afin de reconstituer le groupe après récup de la valeur
                I = I + 1
                ReDim Preserve Tbl(1 To I)
                Tbl(I) = S.Name
     
            Next S
     
            NomGroupe = G.Name
     
            'pour avoir accès à la valeur de chaque bouton d'option
            'on doit les dissocier du groupe
            G.Ungroup
     
            'récupération de la valeur
            For J = 1 To UBound(Tbl)
     
                'le Frame n'ayant pas de propriété "Value" il faut gérer l'erreur
                On Error Resume Next
                Test = Fe.Shapes(Tbl(J)).ControlFormat.Value
     
                If Err.Number = 0 Then
     
                    K = K + 1
                    ReDim Preserve TblRecup(1 To 2, 1 To K)
                    TblRecup(1, K) = Fe.Shapes(Tbl(J)).TextFrame.Characters.Caption
                    TblRecup(2, K) = Fe.Shapes(Tbl(J)).ControlFormat.Value
     
                End If
     
            Next J
     
            'reconstitution du groupe
            Fe.Shapes.Range(Tbl()).Group.Name = NomGroupe
     
            'prépare pour le suivant
            I = 0
            Erase Tbl
     
        Next G
     
        'explotation des valeurs
        For I = 1 To UBound(TblRecup, 2)
     
            If TblRecup(2, I) = "Nom du groupe" Then J = I
     
            If TblRecup(2, I) = 1 Then
     
                MsgBox "Le choix du groupe '" & TblRecup(1, J) & "' est : " & TblRecup(1, I)
     
            End If
     
        Next I
     
    End Sub
    Hervé.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut probleme bouton radio
    Merci pour l'aide mais en fait je souhaite comptabiliser les oui, non et je sais pas pour ensuite dire s'il y a plus de 10 oui le sujet est maitrisé, s'il y a plus de 5 non le sujet n'est pas maitrisé.
    En gros c'est ça.....

  8. #8
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Re,

    Alors, pour un comptage. Il est nécessaire que l'intitulé des bouton soit Oui et Non de façon à permettre le comptage. Avec ce type de contrôle (Shape) le classeur est plus léger mais l'accès aux propriétés est un peu plus compliqué qu'avec des contrôles ActiveX sur une Form. Je poste le code et le classeur modifié -> Test boutons d'option 2.xls :
    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
     
    Sub Test2()
     
        Dim Fe As Worksheet
        Dim TblRecup()
        Dim Tbl()
        Dim G As Shape
        Dim S As Shape
        Dim NomGroupe As String
        Dim I As Integer
        Dim J As Integer
        Dim K As Integer
        Dim Test As Long
        Dim NBOui As Integer
        Dim NBNon As Integer
     
        Set Fe = ActiveSheet
     
        'les groupes étant réalisés, ils ne forment plus qu'un
        'avec les Shapes qu'ils contiennent
        For Each G In Fe.Shapes
     
            'parcours de la collection par groupe
            For Each S In G.GroupItems
     
                'récupération du nom de chaque shape constituant le groupe en court
                'afin de reconstituer le groupe après récup de la valeur
                I = I + 1
                ReDim Preserve Tbl(1 To I)
                Tbl(I) = S.Name
     
            Next S
     
            NomGroupe = G.Name
     
            'pour avoir accès à la valeur de chaque bouton d'option
            'on doit les dissocier du groupe
            G.Ungroup
     
            'récupération de la valeur
            For J = 1 To UBound(Tbl)
     
                'le Frame n'ayant pas de propriété "Value" il faut gérer l'erreur
                On Error Resume Next
                Test = Fe.Shapes(Tbl(J)).ControlFormat.Value
     
                If Err.Number = 0 Then
     
                    K = K + 1
                    ReDim Preserve TblRecup(1 To 2, 1 To K)
                    TblRecup(1, K) = Fe.Shapes(Tbl(J)).TextFrame.Characters.Caption
                    TblRecup(2, K) = Fe.Shapes(Tbl(J)).ControlFormat.Value
     
                End If
     
            Next J
     
            'reconstitution du groupe
            Fe.Shapes.Range(Tbl()).Group.Name = NomGroupe
     
            'prépare pour le suivant
            I = 0
            Erase Tbl
     
        Next G
     
        'comptage des Oui et Non
        For I = 1 To UBound(TblRecup, 2)
     
            If TblRecup(2, I) = 1 And TblRecup(1, I) = "Oui" Then
     
                NBOui = NBOui + 1
     
            ElseIf TblRecup(2, I) = 1 And TblRecup(1, I) = "Non" Then
     
                NBNon = NBNon + 1
     
            End If
     
        Next I
     
        MsgBox "Nombre de 'Oui' : " & NBOui & vbCrLf & _
               "Nombre de 'Non' : " & NBNon & vbCrLf & _
               "Pourcentage de 'Oui' : " & Format(NBOui / (NBOui + NBNon), "#.0%")
     
    End Sub
    Hervé.

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut
    Ah oui merci c'est exactement ça mais chez moi ça ne marche pas....il me marque "erreur d'execution 1004" l'accés à ce membre n'est possible que pour un groupe....

    ah j'ai trouvé mon probleme, c'est à cause d'une image que j'ai mis dans le classeur...apparemment ça fais un bug.
    Comment puis je faire pour conserver l'image?

  10. #10
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Re,

    Mon code et mon classeur sont un début piste, il te faut faire un gestionnaire pour les différents Shapes qui se trouvent sur ta feuille. Si tu n'y arrive pas, poste un fichier exemple afin qu'on puisse t'aider.

    Hervé.

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

Discussions similaires

  1. probleme Bouton radio
    Par cuddy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 22
    Dernier message: 19/09/2012, 18h17
  2. Probleme bouton radio java
    Par TUI54 dans le forum Débuter
    Réponses: 1
    Dernier message: 21/05/2010, 12h04
  3. Probleme bouton radio et tableau
    Par coudmic12 dans le forum Langage
    Réponses: 8
    Dernier message: 23/01/2009, 10h53
  4. probleme bouton radio avec onChange dans formulaire
    Par wil4linux dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/09/2005, 11h26
  5. probleme bouton radio checked
    Par coachbob44 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/04/2005, 10h02

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