bonjour, je suis nouvelle sur le site et j'ai un gros problème.
je suis débutante en excel VBA et je dois créer un QCM d'ici jeudi prochain. dans un premier tempsn j'ai crée un userform dans lequel j'ai inséré des checkbox (5 checkbox), les checkbox correspondent aux propositions de réponse. dans une feuille excel j'ai inscrit les questions en premiere colonne,les 5 reponses dans les autres colonnes, les numéros correspondant aux bonnes réponses en 6e colonne, les réponses du candidat en 7 e colonne et les points à attribuer en 8e colonne.
seulement je ne parviens pas à relier les checkbox à la colonne qui doit enregistrer les réponses du candidat. surtout qu'il ya plusieurs bonnes réponses justes.
je ne sais pas comment faire parvenir ce que j'ai deja commence! merci
PS: ne tenez pas compte du thème choisi, c'est obligatoire pour publier, donc j'ai cliqué sur un thème comprenant des notions familières.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 27 août 2012 à 11:51
Bonjour,
Tu devrais lire le règlement de ce forum. Tu comprendras vite pourquoi ta demande reste sans réponse.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
bonjour, bon j'ai lu le règlement, j'ai refait des recherches et voila j'expose à nouveau mon problème.
sur un userform jai crée 5 checkbox, et j'aurai aimé que lorsque l'on clique sur une ou plusieurs d'entre elles, leur numéro soit renvoyé à la à l'une des lignes de la 3e colonne en feuille 3 de mon classeur excel.
donc j'aimerai que si l'on clique sur la checkbox(1) la valeur 1 soit inscrite en 3e colonne de cette feuille. si on clique sur checkbox1 et la checkbox2 la valeur 12 soit inscrite.
du coup après mes recherches j'ai essayé de mettre en place ce code qui ne fonctionne pas. SVP je débute a peine sur VBA
Merci d'avance
Private Sub CommandButton3_Click()
Dim Ctrl As Control
Dim i As Byte
For Each Ctrl In Me.Controls
For i = 1 To 5
If TypeOf Ctrl Is MSForms.CheckBox & i Then
If Ctrl.Value = True Then
Feuil3.Cells(N + 1, 3) = i
End If
End If
Next
Next
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 29 août 2012 à 08:06
If TypeOf Ctrl Is MSForms.CheckBox & i Then
est incohérent : Typeof retourne un type. Le type MSForms.CheckBox & i n'existe pas !
La collection Controls contient des contrôles (ceux de ton userForm)
Voilà le genre de choses auxquelles tu serais arrivé en lisant attentivement ton aide VBA :
Dim c As Control, i As Integer
For Each c In Controls
MsgBox TypeName(c)
If TypeOf c Is MSForms.CheckBox Then MsgBox c.Name & " est une checkbox"
Next
MsgBox "ou autrement"
For i = 0 To Controls.Count - 1
MsgBox TypeName(Controls(i))
If TypeOf Controls(i) Is MSForms.CheckBox Then MsgBox Controls(i).Name & " est une checkbox"
Next
Ca, c'est le premier pads. Je te laisse faire le reste (trop simple et enfantin).
Juste une chose : prends l'habitude de préciser lka propriété à utiliser !
Cells(x, y) n'est pas précis (bien que VBA comprenne) === >>> cells(x,y). value
D'où sort ta variable N (car ainsi notée, ne peut qu'être une variable) dans :
Cells(N + 1, 3) ???
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu, merci pour ton aide
j'ai essayé de comprendre à quoi servait l'instruction count-1, et à partir de l'aide VBA j'ai pu sortir ces nouvelles instructions,
Private Sub CommandButton3_Click()
Dim c As Control, i As Integer
For Each c In Controls
If TypeOf c Is MSForms.CheckBox Then
If c.Value = True
For i = 0 To Controls.Count - 4
If TypeOf Controls(i) Is MSForms.CheckBox Then
If Controls(i).Value = True Then
Feuil3.Cells(N + 1, 3) = i
End If
End If
Next
End If
End If
Next
End Sub
avec ça j'arrive bien à faire ressortir les chiffres dans la colonne 3 de ma feuille, cependant lorsque je coche deux checkbox, seul le numéro de la seconde checkbox cochée apparait sur ma feuille.
j'espère que ma question n'est pas trop bête parce que tu as dit que c'est enfantin. mais bon je continue de chercher à comprendre le pourquoi du comment au cas ou tu estimerais que j'ai pas fait assez d'efforts.
sinon merci encore.
PS: j'avais déclaré N comme un entier tout au début de ma macro
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 29 août 2012 à 09:09
Pourquoi - 4 ???????
Qu'est ce If sans Then ? ===>> If c.Value = True
Qu'est la boucle For I dans la boucle For Each ???
Et N qui ne varie pas !!!
Désolé, mais tu me parais écrire d'instinct (mauvais instinct, en plus) ou au hasard !
Apprends d'abord les bases essentielles.
Bonne chance. Moi, je t'abandonne jusqu'à ce que tu aies passé cette étape indispensable. Désolé.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
mais le N ne varie pas parcequ'il représente les lignes dans mon tableau et quand je mets (N+1,3) c'est parceque je ne veux pas prendre en compte les données de la première ligne mais seulement celles des lignes suivantes appartenant à la 3e colonne.