Que choisir pour extraire de Excel et afficher dans Excel?

Résolu
Bonjour à la communauté! Sur une feuille Excel, je dispose d'un certain nombre de questions d'évaluation. A chacune de ces question, l'élève répond par Vrai ou Faux avec un indice de certitude (résolu hier). Parmi ces questions, j'aimerais maintenant en tirer 15 au hasard qui devraient apparaître, (j'ignore ce qui est faisable et de plus simple): sur une autre feuille Excel? un formulaire Excel?, autre? En complément d'info, je dispose en fait et en tout, de 12 feuilles de questions mais ce qui change n'est que la matière ayant trait aux questions sur la feuille. Le protocole à appliquer reste le même. Peut-être qu'une liste déroulante qui s'affiche sur une feuille ou formulaire unique pourrait permettre de choisir l'envoi des 15 questions d'une des feuilles 1 à 12. Enfin, l'affichage d'une question à la fois pour répondre aux 15 questions serait l'idéal. Quelqu'un voudrait bien me dire, SVP, comment je devrais envisager de résoudre? Je pourrais alors me mettre à la tâche et vous demander au besoin comment sortir de tel point où je n'en sortirais pas. D'avance merci!

54 réponses

Résumé de la discussion

Le problème porte sur l’extraction aléatoire de 15 questions parmi 12 feuilles thématiques dans Excel, puis leur affichage sur une interface unique, avec les réponses Vrai/Faux et un indice de certitude. La solution proposée privilégie un formulaire UserForm en VBA pour afficher les questions une par une, avec une liste déroulante permettant de choisir la feuille source (1 à 12). Des exemples et des codes commentés ont été fournis pour illustrer l’option, et des mécanismes d’archivage temporaire ou de suivi des résultats sur une feuille dédiée ont été évoqués. Pour avancer, il est recommandé de concevoir le formulaire, de coder la sélection aléatoire et l’affichage séquentiel, puis d’ajouter progressivement l’archivage et le suivi des réponses si nécessaire.

Bobot (l’IA à votre service)
  1. Modérateur
    Bon je vais m'absenter pour le reste de la journée. Je te proposes de me préparer un fichier avec tes feuilles de questions/réponses, ta feuille avec le noms de participants (faux pour préserver la confidentialité) etc etc... Tu me ficèle un joli fichier excel et on reverra la programmation demain.
    Pour te répondre, non il s'agit toujours de bureautique. Certains parlent de programmation de "bas étage", perso je ne trouve pas. Tu peux te créer de vrais outils de travail qui te permettent un gain de temps considérable.
    Voilà à demain.
    2
    1. Modérateur
      Bonjour,

      Tout dépend de ce que vous souhaitez...

      Personnellement, je trouve ça plus convivial de le faire par un formulaire de type UserForm.
      Faut s'y connaitre un minimum en VBA, mais ça peut être sympa à créer puis exploiter.

      Je t'ai bricolé cet exemple. Il est très incomplet mais te donne une idée de ce que l'on peux faire.
      Si tu es intéressé on développera.

      Tu dis.
      2
      1. Déjà grand merci!
        J'ai vu l'exemple. Oui! ça me plaît! Entre temps j'avais penché aussi sur l'UserForm et j'avais commenté par expérimenter les commandes de VBA (je suis sur Office 2000 professionnel). J'arrive à quelque chose (dans l'utilisation de ces commandes) et concluant dans mes essais. De votre côté vous en êtes à un autre stade... L'exemple (sans doute rapide pour vous mais pour moi y arriver il y a un délai) montre bien le profil d'une solution élégante. Ainsi, dans une telle perspective, partant de votre exemple (si je peux en modifier le code), je peux extrapoler aux dénominations réelles relatives à mes questions. Une manière de dire que je ne m'attends pas à "du tout cuit dans mon assiette".
        Là où je ne saurais pas de si tôt en sortir se serait au niveau de l'application dans l'UserForm de la formule suivante qui résout dans Excel (écrite hier par Bruce Willix de la communauté de ce site): =SI(A2=B2;SI(C2=1;0;SI(C2=2;3;SI(C2=3;4;SI(C2=4;5))));SI(C2=1;0;SI(C2=2;-1;SI(C2=3;-2;SI(C2=4;-5))))). En conclusion, merci donc de votre disponibilité et compétence. J'opte pour votre suggestion de déployer la solution via un UserForm
        0
        1. ...entre temps je vois que je peux entrer dans le code et que vous y avez écrit des informations (non visibles dans le Form). Je vais y bricoler dedans...
          0
          1. Modérateur
            Tu peux, tu peux...

            En ce qui concerne ta formule, je suis allé sur ta discussion d'hier (au passage tontong n'est pas bruce willix et donc un ptit merci à tontong serait le bienvenu...) il s'agit d'un système de points attribués aux réponses???
            0
        2. ha bon? J'ai bien lu tontong hier mais j'ai cru qu'il félicitait Bruce... Faut que j'aille revoir ça et remercier tontong, en plus! Entre temps, le Form de l'exemple je l'ai amplifié avec des cases nécessaires. Mais comment je fais pour te le renvoyer?
          0
          1. Modérateur
            tu passes par un service de pièce jointe comme https://www.cjoint.com/
            Tu va sur ce site, créer un lien vers ton fichier, reviens ici coller ton lien dans une réponse...
            0
        3. Merci infiniment! Voici le lien: http://cjoint.com/?CBmmtnY6KLQ
          0
          1. Modérateur
            premiers commentaires :
            - pourquoi des boutons "vrai" "faux" associés à des checkbox...
            Dans ce cas, il convient d'utiliser le contrôle adapté, soit des optionbutton... Dans l'exemple, j'ai affecté, à leurs propriétés groupename la même valeur (GP1) pour signifier qu'un seul peux être actif.
            - pourquoi un bouton certitude? totalement inutile. Suffit de mettre dans la propriété caption de la frame2 : certitude.
            - ton barème peux très bien être inclus dans un label.

            Après faut adapter le code du bouton valider...
            Ton fichier
            0
        4. Oui !OptionButton et non checkBox, bien grossière erreur (mais j'étais surtout appliqué à la disposition des éléments (me tester) Quant à ta remarque sur la certitude, je ne comprends pas, mais voilà: Selon que la réponse est correcte ou non, l'indice (1,2,3 ou 4) vient appliquer un tarif différent (qui est dans la formule de hier (Bruce et TongTong qui en ont donné chacun une). Ta 2e remarque tient toujours? Si oui, tu dois avoir tes raisons, moi je te suis...
          0
          1. Modérateur
            Regarde et teste ce nouvel exemple.
            J'y ai ajouté un peu de programmation VBA.

            Au niveau des tarifs différents, je ne comprends rien à ta formule... Alors dis moi qu'appliquer dans quel cas.
            J'ai fait en fonction du choix 1, 2, 3 ou 4 :
                If OptionButton1 = True Then Points = 0
                If OptionButton2 = True Then Points = 2
                If OptionButton3 = True Then Points = 4
                If OptionButton4 = True Then Points = 8
            0
        5. Merci ! Je vais voir ton form. Entre temps je m'étais corrigé (selon tes remarques): Voici: ' target='_blank' rel='nofollow'>http://cjoint.com/?CBmnnxlH3YZ

          Etant bien entendu que mes modifications sont à considérer comme des "vocalises", pour voir et pour me faire comprendre
          0
          1. Oui, j'ai vu ! Ce qu'il y a (mais entre temps tu en as pris conscience) ce que: SELON que la RÉPONSE est correcte ou non, le barème est différent ! Un effet, s'il est certain mais que c'est faux le tarif sera -5 (et non +5). C'est ce que résolvent les 2 équations précitées (ça marche déjà dans la feuille Excel)
            0
            1. Entre temps, toujours merci. Il me serait impossible d'avancer si vite sans aide (si je peux dire que j'avance, bien sûr). Voici à nouveau ma contribution dans ton formulaire: http://cjoint.com/?CBmnMtmLWY4
              1
              1. Modérateur
                Nouvel exemple.
                Celui-ci tu trouveras tout le code commenté.....
                Dans les commentaires du module1, tu trouveras 3 questions et une amélioration à faire absolument.
                Dis moi...
                2
                1. Je suis allé voir, ça frôle la perfection ... ça va bien!
                  Alors, ce qu'il faudrait pour bien faire (voilà, ...ça commence..), c'est que le bouton radio soit initialisé après une réponse. En effet, le candidat pourrait valider sa réponse sans se rendre compte qu'il ne vient pas de cliquer. Très bien le tableau inséré avec les indices! Ce que je vais faire maintenant est d'aller extrapoler d'après ton code pour des données de ma feuille (voir si j'y arrive). Je dois me rendre compte le + rapidement possible des difficultés pour finaliser. Je m'en vais donc dans ton code et commentaires. Merci!
                  1
                  1. Modérateur
                    s'il est certain mais que c'est faux le tarif sera -5 (et non +5) ==> fait dans la nouvelle version
                    c'est que le bouton radio soit initialisé après une réponse
                    ==> fait également sauf pour le choix de l'indice...
                    Je reste en attente de ton retour après lecture des commentaires.
                    0
                2. Merci. je suis en train de travailler dessus. Vos commentaires sont très soignés. Je n'ai pas fini de chercher à comprendre certains effets de vos instructions (code) avec la conséquence. Par exemple, vous pouvez voir ici http://cjoint.com/?CBmpeKSKQES j'ai ajouté une feuille "Candidats" (mais qui s'ajoute aux listes des matière...) mais sans (encore) réussir (à comprendre) à l'importer dans la liste. Je ne vois pas encore POURQUOI votre code importe, sur quel critère. Bien entendu je ne manquerai pas d'étudier purement et simplement dans la littérature, votre aide est bien précieuse pour montrer le chemin. J'ai 2-3 questions que j'aimerais poser: 1/. l'extraction actuelle est-elle aléatoire? 2/. serait-il (simple) d'enregistrer les questions qui ont été posées, sinon, enregistrer le score et la date par exemple dans une colonne de la feuille "Candidats" à côté du nom? Quant à "Imprimer" je réalise que c'est dangereux car tôt ou tard on finirait par avoir su papier toutes questions ...et les réponses. Je vais donc retirer "Imprimer" du bouton "Imprimer/ Enregistrer". Avec tout cela, vous m'avez donné beaucoup de courage et vraiment une très bonne base pour continuer. Je ne suis pas sorti de l'auberge mais c'est très positif.
                  1
                  1. Quoi qu'il en soit, le "bureautique" n'a plus rien à voir dans ce que vous faites. Ces outils sont merveilleux mais ils relèvent des métiers de l'informatique et non du ...secrétariat (avec tout le respect bien sûr). Je ne m'attendais pas à moins et là je suis servi avec du pain sur la planche...
                    0
                    1. ...entre temps j'ai trouvé le module ChoixQuestion pour le choix des questions ainsi que les commentaires que je m'en vais étudier..., cela fait une question en moins ...
                      0
                      1. Bien le bonjour ! En voulant retirer hier le champ "Mention" (où dans le code tu avais par ailleurs écrit et commenté 2 mentions judicieuses) j'ai engendré un bug... Ayant découvert d'où ça venait, j'ai remis la mention (persuadé par toi que c'était judicieux). Donc à ce stade ça remarche. J'ai renommé les feuilles, ça marche. Le tout est (ré)organisé pour réduire les balayages avec la souris, notamment pour répondre aux questions. Dans' target='_blank' rel='nofollow'>http://cjoint.com/?CBnihbNuxYLDans la version d'avant le plantage, j'avais inséré une feuille "Candidats" et j'avais trouvé le "module" dont tu te servais pour lire les données, le randomize et autre qui répondaient en tout à 2 de mes 3 questions. Ce matin (maintenant) je dois m'absenter 1 bonne heure. Je reviendrai aussitôt continuer à m'appliquer sur ce projet. A plus tard, j'espère bien et merci par anticipation.
                        0
                        1. Modérateur
                          je regardes ça ce matin.
                          0
                      2. Bonjour pijaku, sur le thème d'un éventuel enregistrement (de par exemple le nom de l'article, la date et le score sur /75 [sur 75 car 75 = 15x5 points] j'ai planché sur une feuille Excel. Il me semble que Excel n'est pas adapté pour les enregistrements. Le couple d'identification prénom-nom des candidats (ils sont 7, oui, rien que 7 mais il y a un renouvellement), qu'il soit mis en lignes ou en colonnes, les données prennent la forme d'une matrice où CHAQUE nouvel enregistrement vient affecter la configuration de la matrice elle-même. Contrairement donc à un enregistrement dans une DB. A ce stade où je ne suis pas encore moi-même capable d'effectuer un lien ou une macro (?) reliant votre Form à Access, je tends par une (temporaire) marche arrière. Dans les limites de mes vue très partielle des solutions possibles, je me demande, je te demande, si, par exemple, au lieu d'enregistrer en interpellant un programme (Access?) on ne pourrait pas (au clic sur "enregistrer") envoyer les données (nom, prénom, article et score) qui sont vives dans le Form par email. Cela étant dit, le résultat obtenu par votre Form je le trouve bien séduisant!
                        0
                        1. Modérateur
                          on ne pourrait pas (au clic sur "enregistrer") envoyer les données (nom, prénom, article et score) qui sont vives dans le Form par email
                          on peut.

                          NOM Prénom suffiront ou il faut ajouter une date de naissance pour éviter les doublons???

                          pourquoi tu me parles d'access maintenant? Excel peux très bien gérer ce genre de choses...

                          Là je suis sur autre chose (je bosses entre deux pour mon patron, quand même) mais je te fais une proposition en début d'aprème...
                          0
                      3. Merci! Noms et prénoms suffiront. Le cas échéant un indice permettrait de distinguer les candidats (fort improbable de rencontrer ce cas). Pourquoi Access? Simple, car j'ignorais que Excel (ou plus précisément, celui qui sait l'exploiter, toi dans ce cas) peut être configuré dans un but. Oui, oui, bien sûr c'est déjà bien beau de recevoir ton aide... De mon côté j'ai doublé ton Form et je suis en train d'y insérer les feuilles avec les articles et questions réelles. Je teste au fur et à mesure et tout va très bien, ça marche parfaitement! Je présume qu'il me suffira de copier-coller ton code du Form modifié dans le Form réel sur lequel je travaille. Sinon je me débrouille après. Ces manipulations me permettent de découvrir et de réfléchir. A plus tard et merci infiniment.
                        0
                        1. Modérateur
                          Il sera certainement moins risqué (plantages) et plus facile de copier-coller tes feuilles dans mon fichier, plutôt que d'exporter les UserForms (je t'en ai fait un second de connection) et leurs codes vers ton fichier...
                          0
                      4. je comprends partiellement ta recommandation. Oui, c'est dans ton Form, appellons-le "A", que je place mes données (colonnes de mes questions qui écrasent celles du test) et idem pour les colonnes Vrai/Faux. Disons que "A" devient ainsi A'. Quand un ajout au code se fait dans ton "A" je me proposais d'encoller la modif (code) dans A'. Si maintenant il y a risque que ça plante ou si de toute façons s'il vaut mieux éviter, j'importerai à nouveau mes données dans ton nouveau "A". La taille de l'affichage des questions dans la fenêtre du Form pourrait-elle passer en 12 points? Si oui, je pourrais lire comment s'écrit le code et tester aussi en 11 ou autre. Je voulais aussi te dire de ne pas hésiter à me remballer si pour certaines questions ou améliorations il me suffirait d'étudier la documentation, ce que je compte faire de toute façons, ici j'avance grâce à toi mais je ne compte par en rester là, pas si bas en tous cas.
                        0
                        1. Modérateur
                          Il te faudra relire tous les commentaires que je place dans la dernière mouture du fichier exemple. Je te mettrais également un code pour que tu puisses changer facilement la taille de police d'écriture.
                          Les utilisateurs seront tous équipés d'un client de messagerie? Le même pour tous? lequel? lesquels?
                          0
                      • 1
                      • 2
                      • 3