Gros travail avec listes deroulantes et choix multiples

Bonjour a tous,

cela fait quelque mois que j'utilise excel et votre forum m'a depané bien des fois et je vous en remercie!

Cependant pour mon boulot je dois créer un document et j'ai bien peur de ne pouvoir y arriver tous seul!

Je vous explique, je dois faire un fichier dans lequel l'utilisateur peut choisir a l'aide de menu déroulant 3 projets (a,b,c), de la il peut choisir entre 2 process ( skate, shuttle), puis il a le choix entre 2 custo (yes,no), etc....

Lorsque l'utilisateur a fait tous ses choix dans l'ordre ( 5 au total) il obtient le prix total de son projet avec un joli petit lien vers une autre feuille ou il aura tout les details...

Soit au final 108 possibilités!!!

Au depart j'etais parti sur des listes deroulantes a choix multiples mais je me suis vite trouvé bloqué a cause des noms à donner aux cellules.

Deuxieme solution, imaginée , l'utilisateur fait ses choix et dans la cellule du résultat une énorme fonction SI mais tellement enorme que j'en ai mal au coeur rien que dit penser!

Troisieme solution imaginée, faire une sorte d'organigramme ( c'est un peu comme les listes deroulantes a final) mais en fait je vois pas tres bien ou je vais.

Je sais pas trop comment faire a cause surtout du nombre de donnée a mettre en correspondance tout en ayant un rendu clair et facile d'utilisation.

Mon ebauche de travail:

https://www.excel-pratique.com/~files/doc2/globalproject01.xls

Merci,

julien

salut à toi,

je suis pas un pro d'excel, mais j'ai plus l'habitude de programmer, alors je passerais par VBA.

je créerais des userforms qui s'appellent les uns les autres et enregistrent les choix de l'utilisateur.

comment est-ce que tu calcules le prix final ?

voilà une idée simplifiée d'interface

(avec juste deux choix, mais ça montre le principe)

https://www.excel-pratique.com/~files/doc2/tXYihtest.xls

en fait mes prix final, sont deja fait sur des feuilles separées avec des tableurs etc...

En fait si j'ai bien compris ce que tu as fait avec ton prog' on pourrait cliqué encore plusieurs fois ( si j'ai d'autres options a mettre) et est ce que a la fin on pourrait obtenir un lien direct avec la feuille qui nous interesse ( celle ou j'ai le prix et les details de mon projet)

Sinon ton prog' a l'air plutot dans l'esprit de ce que je cherche dans la simplicité pour l'utilisateur, est il compliqué a mettre en place?

t'as bien compris le truc, on peut continuer avec des boîtes de dialogues les unes après les autres, c'est ça mon idée.

et effectivement, à la fin, on peut avoir le lien direct sur la feuille déjà préparée.

elles sont faites sous excel tes feuilles?

et pour la simplicité de programmation, là on est au bas de l'échelle.

tu t'y connais un peu en programmation en virtual basic? tu as regardé le code que j'ai écris?

mes feuilles sont faites sur excel oui,

J'ai fait un petit peu de programmation en cours mais je suis pas une fleche!

Par contre visual basic je connais pas du tout et j'ai pas reussi a voir le code que tu as ecrit (je suis allez dans outil, macro, pas a pas detaillé, apres...)

ok, alors pour voir mes codes, tu vas sous

outil / macro / visual basic editor

pour VBA, si t'as déjà programmé avec C++ ou JAVA, ça va pas être dur de comprendre.

redis-moi quand tu as lu mon code

c'est bon j'ai lu ton code, ca n'a pas l'air trop compliqué en effet mais je me pose une question:

admettons; je choisi skate puis a , j'obtiens alors un resultat avec un lien hypertexte vers une feuille comme je souhaite.

MAIS si je choisi shuttle puis a , est ce que j'obtiens le meme resultat ( ce que je ne veux pas) ou est que j'obtiens un resultat different ( celui que j'aurais deffini)?

skate--------a---------resultat 1

shuttle------a----------resultat 2

a mon avis dans le programme :

Private Sub CommandButton1_Click()

Range("A1").Value = "skate"

Unload Me

UserForm2.Show

End Sub

Private Sub CommandButton2_Click()

Range("A1").Value = "shuttle"

Unload Me

UserForm2.Show->userForm3.show

End Sub

avec un userform3 de la meme syntaxe que userform2 mais qui va permettre de prendre un "chemin" differents

j'espere etre clair mais c'est pas evident

c'est ça le principe :

userform1 (uf1) -> uf2 ->uf3 ->uf4 ->uf5

et j'ai réfléchi

il faut numéroter les fichiers finaux comme dans une clé de détermination

avec n fichier au tot, on créé un variable "rep" et elle acquiert petit à petit sa valeur.

à la fin, on regarde sa valeur et on charge le fichier correspondant

houla, faire des userforms encore je pense que j'en suis capable, mais des qu'il y a des variables a incrementer et tout ca j'atteinds mes limites!

Meme si c'est long je pense que je vais essayer la solution des userforms1,uf2, uf3,uf4....

J'essaye ca et si je bloque je te montre ce que j'ai fait, merci pour ton aide libanga et aussi pour le lien excelabo qui va mettre tres utile je sens!

et la méthode à utiliser pour ouvrir un classeur est

Workbooks.Open("Macintosh HD:Users:Shared:MyBook.xls")

pour la numérotation, si n= nb de possibilités

1 ; 2 ; 3 ; 4 ; 5 les étapes avec les choix comme suit : 1a 1b 2b...

mettons qu'à chaque étape on a 2 possibilités : a et b

ça nous donne 2^5 possibilités = 32

la variable s'appelle rep

0) rep = 0

1) rep = rep + x*n/2

2) rep = rep + x*n/4

3) rep = rep + x*n/8

4) rep = rep + x*n/16

5) rep = rep + x*n/32

ex : le choix final est 1b 2a 3b 4b 5a

1) rep = 0 + 16

2) rep = 16 + 0 =16

3) rep = 16 + 4 = 20

4) rep = 20 + 2 = 22

5) rep = 22+0=22

fin : rep = 22

et on charge le fichier 22

tu me suis?

oui je te suis

en prenant n=32

si a alors x=0

si b alors x=1

jusque la ca va (pour la comprehension du moins)

ben t'as compris le principe de la seule variable dont on a besoin pour diriger vers le bon fichier.

ça avance ces userforms?

voila ce que j'ai reussi a faire pour aujourd'hui:

https://www.excel-pratique.com/~files/doc2/POURFORUM.xls

j'ai dut supprimer pas mal de truc a cause de la taille donc t'etonne pas s'il y a des bugs.

Moi , j'ai pu aller jusqu'a l'userform 22, (les USF11 a USF22 etant encore vierges)

Probleme:

Tu as remarquer sur ma page excel y a le resumé de mes choix (de B7 a B9), mais si j'ajoute ou enlève une ligne tout ce decale, n'y a t'il pas moyen de bloqué l'affichage en face des choix? ( j'ai essayé $B$7 ca marche pas)

J'aimerai egalement faire une deuxieme macro comme expliquer dans Module 1 sousvisual Basic (formule SI dependant du dernier click (skate ou shuttle) et qui pour la premiere ligne affiche un nombre (lien hypertexte avec une case d'une autre feuille), pour la deuxieme ligne un bouton qui m'envoie sur la feuille en question.)

Voila pour l'histoire de la deuxieme macro, j'ai pas encore eu le temps d'y reflechir c'est juste dans l'hypothese d'actions futures mais mon probleme me derange plus pour l'instant

evidement avec l'histoire de la deuxieme macro les USF11 a 22 disparaissent!

OK cool!

bon boulot déjà!

effectivement, tu pourrais tout faire avec des userforms, mais c'est lourd et long, non?

pour la variable, ce serait facile... il suffit de la déclarer dans this workbook :tout au début

dim variable as integer

puis après, dans les userform, lui donner petit à petit sa valeur comme je l'ai indiqué dans le message plus haut

var = var+n/x

avec n et x remplacés par leurs valeurs : n = nb total ; x = nb choix * nb choix préc.

par contre, je comprends pas ton problème...

"Probleme:

Tu as remarquer sur ma page excel y a le resumé de mes choix (de B7 a B9), mais si j'ajoute ou enlève une ligne tout ce decale, n'y a t'il pas moyen de bloqué l'affichage en face des choix? ( j'ai essayé $B$7 ca marche pas)"

qu'entends-tu par ajouter où enlever une ligne?

J'aimerai egalement faire une deuxieme macro comme expliquer dans Module 1 sousvisual Basic (formule SI dependant du dernier click (skate ou shuttle) et qui pour la premiere ligne affiche un nombre (lien hypertexte avec une case d'une autre feuille), pour la deuxieme ligne un bouton qui m'envoie sur la feuille en question.)

ça aussi, j'ai du mal à cerner, peut être que mes yeux ne sont pas encore totalement ouvert... quel est le but de la manoeuvre?

la syntaxe du SI dans VBA, c'est comme dans C++ :

If ... then

instruction

elseif ... then

instruction

else

instruction

end if

in

j'ai besoin d'éclaircicement

m****... (oups), je viens de remarquer que tu n'as pas dû comprendre ma réponse à ça :

julien.t a écrit :

c'est bon j'ai lu ton code, ca n'a pas l'air trop compliqué en effet mais je me pose une question:

admettons; je choisi skate puis a , j'obtiens alors un resultat avec un lien hypertexte vers une feuille comme je souhaite.

MAIS si je choisi shuttle puis a , est ce que j'obtiens le meme resultat ( ce que je ne veux pas) ou est que j'obtiens un resultat different ( celui que j'aurais deffini)?

skate--------a---------resultat 1

shuttle------a----------resultat 2

a mon avis dans le programme :

Private Sub CommandButton1_Click()

Range("A1").Value = "skate"

Unload Me

UserForm2.Show

End Sub

Private Sub CommandButton2_Click()

Range("A1").Value = "shuttle"

Unload Me

UserForm2.Show->userForm3.show

End Sub

avec un userform3 de la meme syntaxe que userform2 mais qui va permettre de prendre un "chemin" differents

j'espere etre clair mais c'est pas evident

le chemin est où n'est pas différent, ça dépend ce qu'on met entre deux...

si on utilise ma variable (ce qui me semble vraiment le plus simple), le chemin semble le même, mais la variable "enregistre" le chemin parcouru et donc nous sert de mémoire pour à la fin, en un seul nombre rappeler quels fut le chemin.

dans ce cas là, juste besoin de 5 userforms!

et pour la variable, y a deux principes : soit clé de détermination (principe de l'arbre)

soit nombre de Gödel :

2^a * 3^b * 5^c * 7^d * 11^e

qui joue sur la décomposition en facteurs premiers uniques :

2 ; 3 ; 5 ; 7 ; 11 sont des nombres premiers

a est le choix à la première étape : 0 1 ou 2 (ou plus)(en fonction du nombre de choix disponibles, ici trois)

b c d e idem que pour a mais pour les étapes suivante

comme la décomposition d'un nombre est unique, si à la fin on a 3300

on regarde sa décomposition : 3300 = 2*2*3*5*5*11 = 2^2*3^1*5^2*7^0*11^1

donc les choix étaient 3e puis 2e puis 3e puis 1er puis 2e

donc on a bien gardé le chemin en mémoire!

tu me suis?

OK, je vais essayé d'etre plus clair!!

Pour mon premier probleme: sur ma premiere page (d'accueil et de presentation en qque sorte)i je souhaite mettre un recapitulatif de mes choix (lignes B7 a B9) .

Mais voila pour l'instant ma page est en construction et il se pourrait que je doive inserer une ligne (par exemple j'ajoute une ligne entre 3 et 4) du coup B7 devient B8, B8 devient B9 et B9 devient B10 et mon recapitulif ce trouve decalé.

Il me faudrait donc un moyen pour que mon recapitulatif ne ce decale pas (j'ai pas envie de me taper des modif' de programmation a chaque fois que je modifie ma premiere page!)

Rechercher des sujets similaires à "gros travail listes deroulantes choix multiples"