Programmer un boutton d'option

Résolu
samari -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
le probléme est le suivant:
j'ai un questionnaire ou chaque question est attribuée à DEUX bouttons d'option
l'option button 1 on lui attribue VRAI et l'option button 2 on lui attribue FAUX
la reponse juste à la question poura etre VRAI ou FAUX.une fois la reponse juste est cochée
elle est comptabilisée par 1 point. à la fin on fait la somme des points des reponses justes qui est le score et à partir du quel on assimilera un conclusion se rapportant au profil psychologique
de la personne consersné par le test .

je souhaite avoir un aide sur le code suivant s'il est exact ou non :

option Explicit
Private N as integer
Private R as integer
Private P as integer
Private M as integer
Private score as integer
Sub command1_clik
'optionbutton1.value = true et optionbutton2.value = false est la reponse juste
'optionbutton3.value = true et optionbutton4.value = false est la reponse juste
'optionbutton5.value = true et optionbutton6.value = false est la reponse juste
'optionbutton7.value = true et optionbutton8.value = false est la reponse juste
if optionbutton1.value = true then
N=1
elseif optionbutton2.value = true then
N=0
end if
if optionbutton3.value = true then
R=1
elseif optionbutton4.value = true then
R = 0
end if
if optionbutton5.value = true then
P=1
elseif optionbutton6.value = true then
P=0
end if
if optionbutton7.value = true then
M=1
elseif optionbutton8.value = true then
M=0
endif
score = N+R+P+M
if score >=10 and score <=20 then
textAffichage.Text = " Mr X presente les symptome de la phobie scolaire "
elseif score>20 and score <=30 then
textAffichage.Text = " Mr X presente les symptome d'une dépression "
end if

end sub

en voila mon initiative j'espere obtenir de l'aide de votre part et merci d'avance

bien cordialement

samari

7 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Ton code sait pas aller, un ElseIf n'est pas tester si la première condition est réalisée.
    Tu peu simplifier le tout par...
    Exemple pour le 1er IF
    Remplacer...
    if optionbutton1.value = true then  
        N=1  
    elseif optionbutton2.value = true then  
        N=0  
    end if 

    Par..
        N=Abs(optionbutton1.value) And Abs(Not(optionbutton2.value )) 
       'Où N = 1 si Op1 = True et Op2 = False, pour toutes les autres combinaisons N = 0

    Tu fais la même chose pour les autres conditions.

    Mais si tu tient absolument à ton If..
        If optionbutton1.value And not(optionbutton2.value) Then N=1


    '???????????
    if score >=10 and score <=20 then


    1 + 1 + 1 + 1 = ??? pour moi ça fait jamais que 4

    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    1
    1. Samari
       
      merci bcp Iermite 222 pour votre supervision et conseil je vais fin la construction et l'execution de ce
      code et vous informer s'il y'a probléme et merci une autre fois

      Samari .

      cordialement,
      0
    2. Samari
       
      bonjours Iermite222 le code suivant :
      Sub command1_clik()
      Dim N As Integer
      N = Abs(optionbutton1.Value) And Abs(Not (optionbutton2.Value))
      N = N + Abs(optionbutton3.Value) And Abs(Not (optionbutton4.Value))
      N = N + Abs(optionbutton5.Value) And Abs(Not (optionbutton6.Value))
      N = N + Abs(optionbutton7.Value) And Abs(Not (optionbutton8.Value))
      end sub
      n'a pas fonctinné . le debogueur met une bonde jaune sur l'instruction suivante
      N = Abs(optionbutton1.Value) And Abs(Not (optionbutton2.Value))

      le debogueur transmet le message suivant : object required
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Aller, je vais complèter..

    Sub command1_clik() 
    Dim N As Integer 
        N = Abs(optionbutton1.Value And Not optionbutton2.Value)
        N = N + Abs(optionbutton3.Value And Not optionbutton4.Value)
        N = N + Abs(optionbutton5.Value And Not optionbutton6.Value)
        N = N + Abs(optionbutton7.Value And Not optionbutton8.Value)
        If N < 4 Then 
            textAffichage.Text = " Mr X presente les symptome d'une dépression " 
        Else 
            textAffichage.Text " Mr X presente les symptome de la phobie scolaire " 
        End If 
    End Sub


    Pour les textes à toi de voir.
    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
    1. Iama Messages postés 324 Statut Membre 14
       
      Bonjours Iermite222

      Je te remercie je viens d'apprendre une utilisation de ABS() qui ne manque pas d'intéret
      Merci
      Iama
      0
    2. Samari
       
      merci pour votre aide Iermite222 mais je n'ai pas compris l'objectif de cette partie du code :

      N = Abs(optionbutton1.Value And Not optionbutton2.Value)
      N = N + Abs(optionbutton3.Value And Not optionbutton4.Value)
      N = N + Abs(optionbutton5.Value And Not optionbutton6.Value)
      N = N + Abs(optionbutton7.Value And Not optionbutton8.Value)

      et plus precisement je n'ai pas compris ce que permet la fonction Abs dans ce cas :

      N=Abs(optionbutton1.value) And Abs(Not(optionbutton2.value )) ???

      ce code est simplifié et je voudrai l'utiliser mai je n'arrive pas à maitriser le sens de Abs
      voudriez- vous m'aider j'ai du mal à avancer dans l'elaboration de mon code

      merci
      samari.
      cordialement,
      0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    N=Abs(optionbutton1.value) And Abs(Not(optionbutton2.value ))
    OU
    N = Abs(optionbutton1.Value And Not optionbutton2.Value)
    C'est la même chose mais en plus simplifier.

    Pour faire simple...
    la fonction Abs() enlève le Moins d'un nombre
    Exemple VRAI qui vaux -1, si tu enlève le moins, ça fait 1
    Ce que tu dois avoir dans ton cas c'est 0 ou 1

    Ensuite c'est une opération en algèbre de Boole -1 ET -1 = -1
    Comparons : si optionbutton1 est VRAI il est donc à VRAI
    Si optionbutton2 est Faux il est à FAUX mais l'opérateur NOT inverse la valeur ce qui nous donne VRAI
    Et le résultat de VRAI AND VRAI = VRAI (ou -1)
    y a plus qu'à enlever le signe moins avec ABS() et on a la réponse.

    Pour NOT : NOT(VRAI) = FAUX et NOT(FAUX) = VRAI
    La table de vérité de l'opérateur ET est 
        VRAI ET VRAI = VRAI 
        FAUX ET VRAI = FAUX 
        VRAI ET FAUX = FAUX


    J'espère avoir été plus ou moins clair.
    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    C'est qui trouve pas tes OptionButton
    Y sont sur quoi ? une feuille, un Userform ?
    Ton code il est où ? sur quel module ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Samari
     
    mes optionButton , zonne de texte et tous les boutons de commandes se trouve sur la form4 .

    je n'ai pas bien compris cette partie de module.vous m'avez posé la question

    sur quel module existe mon code . je ne sais pas s'il sagit d'un module standar ou
    un module classes que j'etulise mais je vous fais montrer mon code pour que vous puissiez deviner sur quel module il existe .

    Private Sub cmdsomme_Click()
    Dim N As Integer
    N = Abs(optionbutton1.Value) And Abs(Not (optionbutton2.Value))
    N = N + Abs(optionbutton3.Value) And Abs(Not (optionbutton4.Value))
    N = N + Abs(optionbutton5.Value) And Abs(Not (optionbutton6.Value))
    N = N + Abs(optionbutton7.Value) And Abs(Not (optionbutton8.Value))
    If N < 4 Then
    textAffichage.Text = " Mr X presente les symptome d'une dépression "
    Else
    textAffichage.Text " Mr X presente les symptome de la phobie scolaire "
    End If

    End Sub
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Dans le titre de la fenêtre où est le code que tu montre ci-dessus il est marquer quoi ?
    Modul1 ou Feuil1(code) ou Feuil2(code) ?
    tu dis
    0
    1. Samari
       
      bonsoir
      j'ai posté un message pour vous je ne sait s'il vous est arrivé ou non mais
      mon code se situe dans feuille4(code) et c'est une feuille que j'ai pris à part pour tester avec 4 questions et 8 options button et un cmd1: affichage , un cmd2 : quitter et un cmd3 : somme ou score
      tous mes bouttons d'option se trouve sur la feuille 4.


      mais il ya un probléme que j'aimerai relevé aussi, c'est que mon questionnaire s'etale sur 3 feuilles et je dois par conséquant charger les trois feuille une à pres l'autre successivement pour cocher tout les reponses justes pour que dans la troisieme et derniére feuille je puisse afficher dans la zone de texte la conclusion corespendante au score.

      comment palier à ce probléme dans le code ?

      merci .

      samari .

      cordialement,
      0
    2. samari
       
      bonjour Iermite 222 je n'ai pas reçu de réponse à mes questions . j'attendait 2 jours et je n'ai reçu aucune réponse.
      0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Tu n'a reçu aucune réponse ? mais tu ne répond pas à mes questions !!
    Pour couper court, poste ton classeur sur CiJoint.fr et met le lien dans un poste suivant.
    0