Combobox : variable nominale en variable numérique

Thibaud123

XLDnaute Nouveau
Bonsoir à tous,

J'essaie de faire un questionnaire en VBA (je débute débute, je ne savais même pas ce qu'était le VBA il y à quelques jours...). Je tâtonne donc sur les lignes de code et essaie de trouver des conseils sur internet.

Mais voila, là je bloque sur un truc.

J'ai mis des variables nominales dans mes combobox (par exemple : jamais, parfois, souvent toujours). J'aimerais que lorsque je clique sur "valider et quitter" ces variables soient encodées en variables numériques (0,1,2,3) et que la somme de ces scores soit inscrite dans cette base de données en feuille 3 (c'est un questionnaire de mesure du stress, le score à chaque question n'est pas important, seul le total compte).

Pour le moment, tout ce que je sais faire, c'est une inscription auto de chaque résultat des combobox dans ma base de données.




Thibaud


PS : je vous met le classeur. Sachant que le second bouton "valider" n'a rien à faire là, c'est simplement que je voulais tester un truc.
 

Pièces jointes

  • Classeur2a.xlsm
    47.3 KB · Affichages: 48
  • Classeur2a.xlsm
    47.3 KB · Affichages: 46
  • Classeur2a.xlsm
    47.3 KB · Affichages: 49

Modeste

XLDnaute Barbatruc
Re : Combobox : variable nominale en variable numérique

Bonsoir Thibaud123 et bienvenue,

Si j'ai compris correctement, il me semble que dans ta procédure Bt_Valider_Click() tu peux remplacer chaque instruction
Code:
Worksheets("Feuil3").Range("A" & InsMot).Value = UserForm1.ComboBox1.Value

...Par
Code:
Worksheets("Feuil3").Range("A" & InsMot).Value = UserForm1.ComboBox1.ListIndex
ListIndex te donne la "position" de l'élément sélectionné dans le ComboBox, donc un chiffre de 0 à 3
 

Thibaud123

XLDnaute Nouveau
Re : Combobox : variable nominale en variable numérique

Bonsoir Thibaud123 et bienvenue,

Si j'ai compris correctement, il me semble que dans ta procédure Bt_Valider_Click() tu peux remplacer chaque instruction
Code:
Worksheets("Feuil3").Range("A" & InsMot).Value = UserForm1.ComboBox1.Value

...Par
Code:
Worksheets("Feuil3").Range("A" & InsMot).Value = UserForm1.ComboBox1.ListIndex
ListIndex te donne la "position" de l'élément sélectionné dans le ComboBox, donc un chiffre de 0 à 3


Nickel, merci beaucoup!

Deux questions :

J'ai certaines listes où ma cotation est inversées (au lieu d'être de 0 à 3, elle est de 3 à 0). Au pire, j'inverse mes réponses, mais si je peux éviter de toucher à la structure du questionnaire, ce serait encore mieux.

Au niveau du total, est-il possible d’additionner tous les résultats dans le VBA?
Ma seule solution pour le moment serait de faire une dernière colonne de ma base de données qui additionnerais toutes les chiffres de la ligne

Thibaud
 

Modeste

XLDnaute Barbatruc
Re : Combobox : variable nominale en variable numérique

Bonjour,

J'ai certaines listes où ma cotation est inversées
Si c'est purement inversé, il me semble que tu peux écrire quelque chose comme:
Code:
Worksheets("Feuil3").Range("K" & InsMot).Value = 3 - UserForm1.ComboBox11.ListIndex
(pris la ComboBox11 au hasard):rolleyes:

Pour le total, tu peux recopier une simple somme automatique dans la colonne O ... qui se mettra à jour au fur et à mesure que tes valeurs seront ajoutées à la feuille ou écrire, par exemple
Code:
Worksheets("Feuil3").Range("O" & InsMot).Value = Application.Sum(Worksheets("Feuil3").Range("A" & InsMot).Resize(1, 14))
... qui fait la somme, en colonne O des données figurant sur la ligne en cours, au départ de la colonne A et en "étendant" la sélection sur 14 colonnes
 

Thibaud123

XLDnaute Nouveau
Re : Combobox : variable nominale en variable numérique

Bonjour,

Si c'est purement inversé, il me semble que tu peux écrire quelque chose comme:
Code:
Worksheets("Feuil3").Range("K" & InsMot).Value = 3 - UserForm1.ComboBox11.ListIndex
(pris la ComboBox11 au hasard):rolleyes:

Pour le total, tu peux recopier une simple somme automatique dans la colonne O ... qui se mettra à jour au fur et à mesure que tes valeurs seront ajoutées à la feuille ou écrire, par exemple
Code:
Worksheets("Feuil3").Range("O" & InsMot).Value = Application.Sum(Worksheets("Feuil3").Range("A" & InsMot).Resize(1, 14))
... qui fait la somme, en colonne O des données figurant sur la ligne en cours, au départ de la colonne A et en "étendant" la sélection sur 14 colonnes

C'est super, merci!

J'avoue que j'avais naïvement écrit :
Code:
Worksheets("Feuil3").Range("K" & InsMot).Value = UserForm1.ComboBox11.3 - ListIndex
Pour essayer d'inverser :eek:

Pour les totaux, ça fonctionne aussi (et j'ai pigé le principe je peux faire aussi des sous totaux).

Je risque d'avoir d'autres questions ce weekend au sujet de ce classeur, est-ce que je les poste ici, ou j'en crée un autre sujet?
 

Modeste

XLDnaute Barbatruc
Re : Combobox : variable nominale en variable numérique

Re-bonjour,

Je risque d'avoir d'autres questions ce weekend au sujet de ce classeur, est-ce que je les poste ici, ou j'en crée un autre sujet?
Voir Lien supprimé, particulièrement le point 2 c ... tu devrais y trouver des éléments de réponse :)

Bon début de week-end, en attendant,
 

Discussions similaires

Réponses
28
Affichages
1 K

Statistiques des forums

Discussions
312 502
Messages
2 089 049
Membres
104 012
dernier inscrit
baffyt2