IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Questionnaire Excel/VBA avec "parties" répétables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut Questionnaire Excel/VBA avec "parties" répétables
    Bonjour à tous !

    Je vous explique mon problème. Je souhaite réaliser un questionnaire sous Excel pour, par la suite, pouvoir ouvrir un certain nombre d'onglets en fonction des réponses puis les compléter toujours en fonction de ces réponses (pour celà, je pense que je n'aurai pas de problèmes, je vois déjà comment faire en VBA).

    Mon problème concerne le questionnaire lui même. En gros, ma première question est : combien y a-t-il de "modules". Et ensuite, pour chacun des modules je dois poser les mêmes questions comme est-il répétable etc. Je voudrais donc qu'en fonction de ma première question sur le nombre, les questions pour chacun des modules apparaissent comme elles le doivent.

    En gros ça donne (vu que je me suis bien embrouillé avant ) :

    Combien de modules ?

    Pour le 1er: nom?
    Est-il répétable?
    Est-il supprimable?
    ...

    Pour le 2ème: nom?
    Est-il répétable?
    Est-il supprimable?
    ...

    Etc le nombre de fois qu'on répète ces questions dépend donc de la réponse à la première question. Et celà en cascade vu que pour chacun des modules, on a une question sur un nombre d'interfaces pour lesquelles il faut aussi compléter des champs...

    J'espère avoir été assez clair. Je cherche donc de l'aide, si possible, pour comprendre comment réaliser celà. Je pense que Excel seul n'en est pas capable et qu'il faut donc utiliser VBA (les formulaires? Je sais pas trop...)

    Merci donc d'avance pour votre aide !

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Si tu as trois questions pour le premier module, donc trois réponses possibles, tu auras 3 modules pour le second niveau, 9 pour le 3ème, 27 pour le 4ème, 81 pour le 5ème...
    Tu connais l'histoire du grain de blé dans un jeu d'échecs ? 1 gain de blé dans la 1ère case, 2 dans la 2ème, puis 4, puis 8, puis 16... Et un train de marchandise avec x wagons dans la 64ème

    Bref, je ne comprends pas ta question
    Avec un exemple, peut-être

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Va pour l'exemple Je dois avouer que mon explication n'était pas très claire !

    En gros on a la série de questions suivantes :

    Combien de modules y a-t-il?

    En fonction de la réponse à cette question, il faut répéter autant de fois les suivantes (en gros, une fois pour chaque module) :

    Nom du module?
    Est-il répétable?
    Est-il supprimable?
    Combien d'interfaces y a-t-il?

    En fonction de la réponse au nombre d'interfaces, il faut répéter autant de fois les questions suivantes (et celà pour chaque module) :

    Nom de l'interface?
    Nombre de surfaces?

    De même, en fonction du nombre de surfaces, il faut répéter autant de fois (pour chaque module et chaque interface donc) les questions suivantes :

    Nom de la surface?
    ...

    Voilà, en gros le cheminement du questionnaire.

    Au final, si on a 2 Modules ça va donner :

    Combien de modules y a-t-il? ==> 2

    Nom du 1er module?
    Est-il répétable?
    Est-il supprimable?
    Combien d'interfaces y a-t-il?
    2

    Nom de l'interface?
    Nombre de surfaces?
    2

    Nom de la 1ère surface?
    Nom de la 2ème?


    Nom de l'interface?
    Nombre de surfaces?
    1

    Nom de surface?

    _________________________________________________________________

    Nom du 2ème module?
    Est-il répétable?
    Est-il supprimable?
    Combien d'interfaces y a-t-il?
    1

    Nom de l'interface?
    Nombre de surfaces?
    1

    Nom de surface?


    Voilà donc ce que ça doit donner. Le questionnaire doit donc être dynamique en fonction des réponses : il est donc évident qu'il faut que j'automatise ça en VBA mais je ne sais pas comment faire.

    Pour ce qui est de l'histoire du grain de blé dans le jeu d'échecs, je ne connaissais pas

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Je me pose donc la question de savoir si seulement c'est possible. Je disais donc les formulaires pourquoi pas, sinon coder tout simplement en VBA ce qu'on design graphiquement sur Excel en utilisant la palette "Formulaires". Mais je vois pas vraiment aps comment faire et ça fait quelques jours que je me prends la tête sur le problème (sachant que je ne suis pas le plus grand expert de tous les temps en VBA ).

    En tout cas merci pour les réponses

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je pense que tu dois passer par les classes. Une classe "module" contenant une classe "répétable", une classe "supprimable" et une classe "Nbinterfaces"
    Si je prends la classe "Nbinterfaces", elle contient les classes "NomInterface" et "NbSurfaces", etc.
    Ça me semble bien compliqué... mais regarde toujours ici Ludix pose une question sur les classes et où tu trouveras les explication de Mayekeul et des adresses intéressantes.

    L'autre solution serait un affichage "circonstanciel" des item.
    Si réponse 1 alors affichage 1.1, 1.2, 1.3 ...
    et dans l'exemple que tu donnes :
    Si réponse 4 alors 4.1, 4.2
    Si réponse 4.2 alors n afffichages de 4.2.1 (Nom surface 1 & Nom Surface 2 & Nom Surface n
    etc.
    Tu pourrais utiliser un un tableau à deux dimensions Tablo(1, 4nnn)
    où chaque n représente le nombre de questions pour un item
    Le 1er indice du tableau Tablo(0, n) serait un boolean : Vrai => Réponse fournie, Faux => Réponse non fournie
    Le 2ème indice serait renseigné au fur et à mesure par la référence de la dernière réponse. ex :
    Tableau(0, 3) = True
    Tableau(1, 3) = "4.2.1"
    Où la dernière réponse détermine les prochains items à afficher

    Un second tableau pourrait te donner la liste de ces items pour chaque réponse fournie.
    Comme le nombre d'items à afficher suite à une réponse donnée, n'est pas fixe, aucun calcul ne pourrra te le fournir, non plus que la liste et donc tu devras faire ça à la mimine
    Ce tableau à "plusieurs" dimensions devra être défini en dur après que tu aies écrit toutes les combinaisons possibles pour chaque item de départ (!!!) et structuré de manière à ce qu'une réponse trouve ses enfants
    Va falloir que ça se structure et que ça carbure là-dedans et même
    En tous cas, bon courage.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Je vous tiens au courant en ce qui concerne le formulaire mais je suis pas rentré Ca m'a l'air assez compliqué donc ça me prendra du temps. Si j'ai un problème je vous poserai la question ici

    Encore merci !

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Juste une indication pour traiter tes "séquences"
    Si tu as par exemple une séquence 4.2.1, tu la places dans ton tableau sous la forme d'un string "4.2.1" et pour la récupérer, tu utilises split pour obtenir un tableau de ta séquence
    Seq = Split("4.2.1", ".")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 to ubound(Seq)
         'afficher Question(val(Seq(i)))
    Next

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Seq(0) = "4"
    Seq(1) = "2"
    Seq(2) = "1"
    Si tu as toutes tes questions dans un tableau, leurs index te permettra de les retrouver.
    Juste en passant

Discussions similaires

  1. Démarrer fichier excel vba avec paramètre
    Par ooyeah dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2007, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo