Comptage de Oui dans MsgBox

Laurent313131

XLDnaute Occasionnel
Bonjour,

J'ai crée un petit code VBA qui lorsque je clique sur un bouton de contrôle, m'affiche une question dans une une msgbox vbYesNo. Quand je répond à cette 1ère question, une nouvelle msgbox apparaît avec une nouvelle question ....

En fait je voudrais que le nombre de oui s'affiche en A1 à l'issue de mes 46 questions... Pouvez vous m'aider s'il vous plaît ?

Voici le code pour les msgbox :

Public total(46)
Sub depart()
i = 1
boite_dialogue
End Sub
Sub boite_dialogue()

reponse = MsgBox("Ces derniers temps mon niveau de performance sportive / mon état de forme a diminué ?", vbQuestion + vbYesNo)

If reponse = vbYes Then
total(i) = 1
i = i + 1

Else
total(i) = 0
i = i + 1
End If

reponse = MsgBox("Je ne soutiens pas autant mon attention ?", vbQuestion + vbYesNo)


If reponse = vbYes Then
total(i) = 1
i = i + 1
Else

total(i) = 2
i = i + 1
End If

... ... ....

End sub.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Comptage de Oui dans MsgBox

Bonjour

juste comme ceci peut-être

Sub boite_dialogue()

reponse = MsgBox("Ces derniers temps mon niveau de performance sportive / mon état de forme a diminué ?", vbQuestion + vbYesNo)

If reponse = vbYes Then j=j+1


reponse = MsgBox("Je ne soutiens pas autant mon attention ?", vbQuestion + vbYesNo)


If reponse = vbYes Then j = j+1


... ... ....

Range("A1")=j

End sub.
 

kjin

XLDnaute Barbatruc
Re : Comptage de Oui dans MsgBox

Bonjour,
Le plus simple pour éviter d'écrire les questions dans le code, est de les mettre par exemple ici dans la feuille1 lignes A1:A46
Le résultat s'affiche à la fin et est écris en B1 de la même feuille
Code:
Sub boite_dialogue()
total = 0
reponse = 1
Do
Question = MsgBox(Sheets(1).Range("A" & reponse), vbYesNo)
    If Question = vbYes Then
        total = total + 1
    End If
    reponse = reponse + 1
Loop Until reponse = 47
MsgBox total
Sheets(1).Range("B1") = total
End Sub
A+
kjin
 

kjin

XLDnaute Barbatruc
Re : Comptage de Oui dans MsgBox

Re,
Alors simplement comme ça, comme dèjà indiqué par Pascal
Code:
Sub boite_dialogue()
Application.ScreenUpdating = False 'désactivation du raffraichissement écran
total = 0
question = MsgBox("blabla1", vbYesNo)
If question = 6 Then total = total + 1
question = MsgBox("blabla2", vbYesNo)
If question = 6 Then total = total + 1
question = MsgBox("blabla3", vbYesNo)
If question = 6 Then total = total + 1
'...la suite jusqu'à 46
Application.ScreenUpdating = True
Sheets(1).Range("A1") = total

End Sub
A+
kjin
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Comptage de Oui dans MsgBox

Re

Même idée en plus court

Code:
Sub boite_dialogue()
Application.ScreenUpdating = False 'désactivation du raffraichissement écran
total = 0
If MsgBox("blabla1", vbYesNo) = vbYes Then total = total + 1
If MsgBox("blabla2", vbYesNo) = vbYes Then total = total + 1
If MsgBox("blabla3", vbYesNo) = vbYes Then total = total + 1
'...la suite jusqu'à 46
Application.ScreenUpdating = True
Sheets(1).Range("A1") = total

End Sub
 

Laurent313131

XLDnaute Occasionnel
Re : Comptage de Oui dans MsgBox

Bonsoir,

Merci Pascal ça marche parfaitement. Peux tu m'expliquer les passages en gras ?. Leur fonction plus précisément afin que je comprenne la logique... Merci beaucoup.

Sub boite_dialogue()
Application.ScreenUpdating = False 'désactivation du raffraichissement écran
total = 0

If MsgBox("blabla1", vbYesNo) = vbYes Then total = total + 1
If MsgBox("blabla2", vbYesNo) = vbYes Then total = total + 1
If MsgBox("blabla3", vbYesNo) = vbYes Then total = total + 1
'...la suite jusqu'à 46
Application.ScreenUpdating = True
Sheets(1).Range("A1") = total

End Sub
 

Discussions similaires

Réponses
6
Affichages
247
  • Question
Microsoft 365 MsgBox
Réponses
9
Affichages
423

Statistiques des forums

Discussions
312 231
Messages
2 086 440
Membres
103 209
dernier inscrit
MIKA33260