Questionnaire (optimisation du code) [débutant]

L

Lionel

Guest
Bonjour,

C’est la première fois que je réalise un questionnaire sur Excel et je ne suis pas sûr que ma méthode soit la bonne. De plus je suis débutant en VBA.

But du questionnaire :
Il y a trois cases à cocher par question et en fonction de la réponse donnée, des points seront répartis parmi un choix de constitutions notées sur la feuille2.

J’ai réalisé le code pour la première question.

Qu’en pensez-vous ? Dois-je le faire ainsi pour l’ensemble du questionnaire ?
Je ne suis pas certain que mon code soit optimum.

Je vous remercie d’avance.

Lionel [file name=QuestionnaireHomeo.zip size=26850]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/QuestionnaireHomeo.zip[/file]
 

Pièces jointes

  • QuestionnaireHomeo.zip
    26.2 KB · Affichages: 27

porcinet82

XLDnaute Barbatruc
Salut Lionel,

Je ne suis pas sur d'etre le plus qualifier pour remettre ton code en cause, mais, je me permet toutefois d'aporter mon point de vue.

Donc a la place des CheckBox, je te conseil plutot des OptionButon, si tu n'a qu'un choix possible pour une question, ce qui est apparement le cas, cela t'évitera ainsi le code suivant :
Code:
CheckBox2 = False
CheckBox3 = False

Tu peux également mettre a la place de
Code:
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
    Feuil2.Range('B4').Value = Feuil2.Range('B4').Value + '5'
    Feuil2.Range('C4').Value = Feuil2.Range('C4').Value + '5'
    Feuil2.Range('D4').Value = Feuil2.Range('D4').Value + '5'
    Feuil2.Range('E4').Value = Feuil2.Range('E4').Value + '5'
End If
End Sub

Le code suivant :
Code:
Private Sub CheckBox1_Click()
For i = 2 To 5
    If CheckBox1 = True Then
        Feuil2.Cells(4, i).Value = Feuil2.Cells(4, i).Value + '5'
    End If
Next i
End Sub

J'espère t'avoir aidé, si tu as besoin d'autre chose, pas de problème fais signe.

@+
 
L

Lionel

Guest
Hello porcinet82,

Effectivement je n’ai qu’un choix possible mais pour chaque question. Il y a un bouton par question qui doit rester sélectionner. Comment faire pour éviter qu’il prenne en compte l’ensemble des boutons mais seulement par famille de trois? Je suis obligé d’utiliser les opérateurs booléens? En plus je dois encore prendre en compte les erreurs des utilisateurs: lorsque l'on coche, on incrémente de 5 ou 3 ou 1 mais si on décoche car on a fait une erreur par exemple, il n'y a pas de décrémentation automatique. La valeur reste.


Ta boucle est intéressante mais c’est un hasard si ça se suit. Bien d’autres questions auront une répartissions non contigu sur le vecteur (B4 :O4).

Merci
 
P

porcinet82

Guest
Re,

Tu as raison, je me suis un peu emballé, mais cela s'explique car j'ai l'habitude réaliser des questionnaires, mais plutot sur des logiciels tel que Access ou EpiInfo qui gère beucoup mieux ce genre de chose.

Il vrai que je n'avais pas regardé le nombre de tes questions. Tu as 168 questions, ce qui fait si mes calculs sont bon 504 Checkbox. Ca risque effectivement d'etre difficile a gerer si tu garde un code tel quel.

Il faudrait je pense quelques info supplémentaires afin de trouver une petite astuce. Est-ce que par exemple pour la série Personnalité & Tempérament, Enormément prend toujours 5, Beaucoup 3 et Un peu 1?
Est-ce que tu ne pourrais pas plutot traiter les réponses à la fin d'une série (peut etre par une boucle) en appuyant sur un bouton, et incrémenter un compteur a ce moment là avec un code du genre :

Code:
For i = 1 To 60 Step 3
    If CheckBox & i = True Then
        [color=#008000]'je sais pas quoi +5[/color]
    End If
Next i
For j = 2 To 60 Step 3
    If CheckBox & i = True Then
        [color=#008000]'je sais pas quoi +3[/color]
    End If
Next j
For k = 3 To 60 Step 3
    If CheckBox & i = True Then
        [color=#008000]'je sais pas quoi +1[/color]
    End If
Next k

Pour ce qui est des OptionButon, ca doit etre possible de les grouper par 3, mais je ne sais pas trop comment, donc si quelqu'un passe par la, ca m'interresserai beaucoup de savoir comment on fait.

Je crois que tu avoir besoins de quelqu'un de plus expérimenté que moi. Mais je suis pres a t'aider.

@+
 

JYLL

Nous a quitté
Repose en paix
Bonsoir Porcinet82 et Lionel,

J'ai regardé un peu le problème, ce n'est pas évident. J'ai réussi à créer les grilles avec 3 réponses par question mais une seule à valider. Je n'ai pas le temps de passer au décodage, j'ai un petit blocage et je dois passer à autre chose.

Bon test, et @+ pour les commentaires

Amicalement;

Jean-Yves [file name=QuestionnaireHomeo_bidon.zip size=21708]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/QuestionnaireHomeo_bidon.zip[/file]
 

Pièces jointes

  • QuestionnaireHomeo_bidon.zip
    21.2 KB · Affichages: 29
  • QuestionnaireHomeo_bidon.zip
    21.2 KB · Affichages: 29
  • QuestionnaireHomeo_bidon.zip
    21.2 KB · Affichages: 36
L

Lionel

Guest
Hello Porcinet82 et JYLL.

Pour répondre à ta question Porcinet82:

'Il faudrait je pense quelques info supplémentaires afin de trouver une petite astuce. Est-ce que par exemple pour la série Personnalité & Tempérament, Enormément prend toujours 5, Beaucoup 3 et Un peu 1?'

oui et cela vaut pour l'ensemble des thèmes. Par contre, pour chaque question, on donne des points aux constitutions (les termes de la feuille 2) de manière différentes.
Je t'ai mit en annexe la BD c'est plus clair
 
L

Lionel

Guest
Hello

J'ai appuié sur soumettre (quel âne !)

Ok je continue.

C’est marrant, on dirait que tu as mit des balises HTML dans tes boucles !
En tout cas, je vais apprendre assez vite grâce à vous et je vous en remercie.

JYLL

Merci pour ton code. Je n'ai pas pu mit mettre ce matin mais je vais bosser dessus dès ce soir. Je t'avoue que je suis un peu largué. Ton code est très avancé pour moi !

Une question toutefois: lorsque je lance ta macro j'obtiens l'erreur suivante:

Erreur de compilation
Projet ou bibliothèque introuvable

Merci à vous deux ! [file name=BDHomeo.zip size=9485]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/BDHomeo.zip[/file]
 

Pièces jointes

  • BDHomeo.zip
    9.3 KB · Affichages: 35

porcinet82

XLDnaute Barbatruc
Bonjour a tous,

Alors la je n'ai qu'une chose a te dire Jyll, chapeau !!! :silly:

C'est pas mal ton truc, je ne sais pas si ca va convenir a Lionel, mais en tout cas, moi je le garde précieusement.
Lionel, pour l'erreur, c'est que les variables ne sont pas déclarées (c'est pas bien ca Jyll ;), je me permet de te dire ca parceque je fais la meme chose).
En dessous de Global Tableau(1000) As String, tu n'a qu'a mettre :
Code:
Dim i As Byte
Dim nom As String
et ca devrait fonctionner.

Avec la BD, je pense que l'on peut s'en sortir, par exemple en allant 'piocher' dedans pour savoir ou attribuer les points. Je ne sais pas ce que tu en penses Jyll?
J'ai apporté quelques modif a la BD pour qu'elle soit exploitable, mais je ne sais pas si c'est LA solution.

Affaire a suivre.

@+

Message édité par: porcinet82, à: 27/12/2005 12:59
 

porcinet82

XLDnaute Barbatruc
re,

Comme je ne saias pas comment tu comptes réaliser le fichier de BD, je te propose une petite macro que j'ai réalisé il y a quelques temps pour quelqu'un du forum. Celle d'elle dont je me suis servit ce matin pour l'exemple.
Je te joint un fichier exemple avec des données comme elles peuvent se présenter, il y a peut etre des modif a faire sur la macro.

[file name=test_20051227142614.zip size=6645]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20051227142614.zip[/file]

@+
 

Pièces jointes

  • test_20051227142614.zip
    6.5 KB · Affichages: 30
L

Lionel

Guest
Bonsoir,

Merci Pour ta macro Porcinet82. J'ai pu remplir mes lignes en un rien de temps grâce à toi.

Excellent ton code JYLL !
Je suis impressionné :woohoo:

En fait, il faut utiliser la nouvelle base avec le code de JYLL pour la répartition des points si j'ai bien compris ton idée Porcinet82.

A+ [file name=bdd_homeo2.zip size=17961]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/bdd_homeo2.zip[/file]
 

Pièces jointes

  • bdd_homeo2.zip
    17.5 KB · Affichages: 23
L

Lionel

Guest
Hello

J'ai mit les infos en commun.

JYLL, tu as commencé une macro appelée: 'Macro1'. Cette macro était destinée à la répartition des points ?

Porcinet82, Tu as répartis les thèmes sur plusieurs feuilles.
Est-ce que je les mets ensembles comme les questions pour ensuite les utiliser avec le code de JYLL ?

Merci

A+ [file name=QuestHomeo.zip size=27382]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/QuestHomeo.zip[/file]
 

Pièces jointes

  • QuestHomeo.zip
    26.7 KB · Affichages: 32

porcinet82

XLDnaute Barbatruc
Salut Lionel,

Je crois qu'on avoir besoin de l'aide de jyll par ce que je t'avoue que je patauge un peu.

En fait, la macro que je voudrais faire (mais que je n'arrive pas a créer) ca donnera quelque chose du genre (bien entendu, il faut d'abord faire une vérification sur le fait que toutes les questions ont ete répondu):

Pour i=1 to 60
Si Enormement de la question i = true alors
dans la feuille Pers_temp je supprime le contenu des cellules Gi:Qi
sinon si Beaucoup de la question i = true alors
dans la feuille Pers_temp je supprime le contenu des cellules (Bi:Fi,Li:Qi)
sinon
dans la feuille Pers_temp je supprime le contenu des cellules (Bi:Ki)
next i


Une fois la macro executée, avec des formules du type (pour chacunes des valeurs Nm, Puls, Sep ...)
=NB.SI(B2:F61;'Nm')
tu obtiens des sous totaux par feuille, qu'il ne te reste plus qu'à ajouter dansla feuille ou tu as le graphique.

A suivre

@+
 
L

Lionel

Guest
Hello

'tu obtiens des sous totaux par feuille'

Voilà (j'ai trouvé déjà ça)

Sub Calcul()

Dim Lig
Dim Col
Lig = 2
Col = 2

For Lig = 2 To 61
For Col = 2 To 6
If Cells(Lig, Col) = 'Nm' Then
Range('B63') = Range('B63') + 1
Else
If Cells(Lig, Col) = 'Puls' Then
Range('B64') = Range('B64') + 1
Else
If Cells(Lig, Col) = 'Sep' Then
Range('B65') = Range('B65') + 1
End If
End If
End If
Next Col
Next Lig

End Sub

A+
 

Discussions similaires

Réponses
5
Affichages
561

Membres actuellement en ligne

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 764
dernier inscrit
nissassa