Macro affichage d'un résultat

pierre93

XLDnaute Nouveau
Macro affichage multiple

Bonjour à tous,

Désolé tout d'abord pour l'intitulé très peu clair.
J'ai un fichier composé de trois feuilles. Dans la 1ere un QCM, dans la deuxième un récap des bonnes et mauvaises réponses, et dans la troisième un récap global.

Dans la 3eme feuille, (la feuille "results") une ligne s'apelle "Incorrectes responses" Je voudrais à l'aide d'une macro que s'affiche dans la cellule D10 et suivantes (si il y a plusieurs mauvaises réponses) de cette feuille toutes les questions pour lesquels l'utilisateur a mal répondu. Pour identifier une mauvaise réponse c'est assez simple puisque la colonne "F" de la feuille "calcul sheet" indique "1" si l'utilisateur a bien répondu et "0" si l'utilisateur a mal répondu.
Ainsi si l'utilisateur a mal répondu à la question 1 et 2 j'aimerais qu'en C10 s'affiche l'intitulé du topic de la question (Topic 1) et en C11 "Topic 2" qu'en D10 s'affiche Q.1, et en D11 Q.2. Comme j'aime le challenge j'aimerais qu'en E10 et E11 s'affichent une phrase indiquant quelles étaient les bonnes réponses à cocher. Je vous envois un petit fichier joint simplifié afin de clarifier un peu mes explications.

Merci d'avance !
 

Pièces jointes

  • qcm pierre.zip
    25.7 KB · Affichages: 42
  • qcm pierre.zip
    25.7 KB · Affichages: 50
  • qcm pierre.zip
    25.7 KB · Affichages: 42
Dernière édition:

pierre93

XLDnaute Nouveau
Re : Macro affichage d'un résultat

Merci pour cette réponse, mais pour une raison que j'ignore dés que je coche ou décoche une réponse dans la 1ere feuille (QCM), les formules de la feuille que vous avez créé ne générent plus que des erreurs du type #nombre!
Voyez-vous d'ou cela peut-il venir ?

Merci pour votre aide
 

mromain

XLDnaute Barbatruc
Re : Macro affichage d'un résultat

Merci pour cette réponse, mais pour une raison que j'ignore dés que je coche ou décoche une réponse dans la 1ere feuille (QCM), les formules de la feuille que vous avez créé ne générent plus que des erreurs du type #nombre!
Voyez-vous d'ou cela peut-il venir ?

Merci pour votre aide


Bizare, j'ai essayé en tout cochant, en tout décochant, en mettant des bonnes réponses partout, et je n'ai pas eut de problème sur mon poste (Excel2007).
Sur quelle version travaillez-vous ?

a+
 

pierre93

XLDnaute Nouveau
Re : Macro affichage d'un résultat

Je suis sur Excel 2003, cela vient peut être de là. Je vous remet le fichier avec l'erreur générée juste en cochant une case, en vous remerciant une nouvelle fois du temps pris pour me répondre
 

Pièces jointes

  • qcm pierre erreur.zip
    27.4 KB · Affichages: 41

jeanpierre

Nous a quitté
Repose en paix
Re : Macro affichage d'un résultat

Bonjour pierre93, mromain,

Sous 2000 même constat #NOMBRE! dés que l'on valide une coche et pas encore eu le temps de m'y pencher mais les formules ne semblent pas en cause en première lecture.

Bon après-midi.

Jean-Pierre
 

mromain

XLDnaute Barbatruc
Re : Macro affichage d'un résultat

re bonjour,
bonjour jeanpierre

Je n'ai vu aucun problème sur le fichier que vous m'avez envoyé.
Cela vient surement de la version d'Excel. Je ne suis pas sûr que le 2003 accepte les colonnes entières dans les formules matricielles.

Voici un autre essai.

a+
 

Pièces jointes

  • essai max-min.zip
    26.6 KB · Affichages: 54
  • essai max-min.zip
    26.6 KB · Affichages: 53
  • essai max-min.zip
    26.6 KB · Affichages: 52

pierre93

XLDnaute Nouveau
Re : Macro affichage d'un résultat

Cela marche effectivement mais j'ai maintenant un nouveau problème, lorsque je veux changer le F$61 par une autre valeur car mon fichier d'origine va jusqu'à F277, rebelotte erreur "#nombre!". En fait, dès que je touche à une formule même sans rien changer celle-ci génére une erreur.
Je pense avoir identifié la raison mais ne peut pas la résoudre; en début et en fin de formule je vois une accolade
{=SI(LIGNE()-1>NB.SI('[essai max-min.xls]Calcul Sheet'!$F$2:$F$61;0);"";GRANDE.VALEUR(('[essai max-min.xls]Calcul Sheet'!$F$2:$F$61=0)*('[essai max-min.xls]Calcul Sheet'!$F$2:$F$61<>"")*LIGNE('[essai max-min.xls]Calcul Sheet'!$F$2:$F$61);NB.SI('[essai max-min.xls]Calcul Sheet'!$F$2:$F$61;0)-LIGNE()+2))}
Or dès que je clique sur une formule ces accolades disparaissent, et la formule ne marche plus, même si je remet les accolades manuellement cela ne donne aucun résultat. S'agit-il aussi d'une particularité d'Excel 2007 ?
 

jeanpierre

Nous a quitté
Repose en paix
Re : Macro affichage d'un résultat

Re,

Oui, bien sûr, le problème vient uniquement des formules qui utilisent les colonnes entières (jusqu'à 2003 elles sont refusées), je n'avais pas encore vu. Il suffit de les bloquer à $F$1:F$65536 par exemple et cela doit fonctionner. Enfin devrait car lorsque je modifie la formule Excel ne fait rien sauf à remettre la même qu'avant modification....

J'ai eu un problèmùe similaire hier soir avec une MFC qui n'était pas demandée... Est-ce Excel, mon Pc ??? vais voir après redémarrage....

Aggaçant des fois.

Jean-Pierre
 

jeanpierre

Nous a quitté
Repose en paix
Re : Macro affichage d'un résultat

Re,

Pierre, le temps d'écrire et toc.... les accolades ne doivent pas être saisies manuellement, lorsque tu es sur ta formule, en mode édition donc, il faut que tu valides par les 3 touches (en même temps) Ctrl Maj Entrée au lieu de Entrée seule. C'est une formule matricielle qui ne comprend que ce mode de saisie.

Jean-Pierre
 

pierre93

XLDnaute Nouveau
Re : Macro affichage d'un résultat

Eh bien j'ai, encore appris quelque chose aujourd'hui :). Merci beaucoup !
Dernier point, comme vous le voyez dans la feuille "results" le tableau "Incorrect responses" ne comprend que peu de lignes, mon questionnaire initial comprend 40 questions, et donc potentiellement 40 erreurs, je pourrais faire un tableau de 40 lignes mais si l'utilisateur n'a commis qu'une erreur esthetiquement c'est pas terrible, existe-t-il un moyen d'adapter la taille de ce tableau en fonction du nombre de mauvaise réponse ?
J'avais pensé à une macro permettant de masquer les cellules vides, et j'ai trouvé celle-la :
Dim Plage As Range, Lign As Range
Set Plage = Range("C10:C50")
For Each Lign In Plage.Rows
If Application.CountA(Lign) = 0 Then
Lign.EntireRow.Hidden = True
End if
mais ca ne marche pas puisque même si les cellules sont apparemment vide elles comprennent néanmoins une formule, comment dois je construire une macro de ce type ? Quelle valeur mettre à la place de 0 ?

Merci d'avance et désolé de vous en demander toujours plus !
 

mromain

XLDnaute Barbatruc
Re : Macro affichage d'un résultat

re,

Voici une autre solution, toujours sans macro, mais avec une MFC.
par contre, je ne l'ai testé que sous 2007.

a+
 

Pièces jointes

  • essai max-min.zip
    30.4 KB · Affichages: 55
  • essai max-min.zip
    30.4 KB · Affichages: 51
  • essai max-min.zip
    30.4 KB · Affichages: 48

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 940
Membres
103 989
dernier inscrit
jralonso