Comment récupérer la valeur d'un menu déroulant dans une formule [Résolu/Fermé]

Signaler
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015
-
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015
-
Bonjour à tous !

Ceci est mon premier message sur ce forum, merci d'avance pour votre aide et votre patience !
Autant je suis très débrouillard en Excel et VBA, autant Word reste un peu ma bête noire dès qu'il s'agit de "codes de champs" etc...
On m'a donné comme tâche de mettre à jour un fichier de chiffrage, qui calcul un coût total en fonction d'un tarif journalier et du nombre de jours comptés dans le devis (jusque là, c'est juste une formule dans un tableau, un SUM qui compte le nombre de jours et le multiplie par le tarif qui était fixe... jusqu'à maintenant).
La mise à jour consiste donc à prendre en compte le fait que le tarif n'est plus fixe, et donc d'aller chercher cette valeur dans un menu déroulant.

Voilà j'ai essayé de poser mon problème le plus simplement possible sans trop oublier d'infos.

Auriez vous une idée ? Voir même une solution ? :P

Cordialement, Florian.

2 réponses

Messages postés
4010
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
3 octobre 2016
1 605
Bonjour Florian,

pour récupérer la valeur d'une liste déroulante, dans ta formule de base, que tu affiches avec ALT F9, à l'endroit où tu veux faire appel à la valeur de la liste déroulante, tu tapes CTRL F9 pour obtenir { } et à l'intérieur tu indiques le nom de ta liste déroulante.

Dans les propriétés du champ Nombre de jour (champ numérique), tu dois activer la case "Calculer à la sortie".

Tu peux donc avoir ton total qui ressemble à cela si B2, B3 et B4 contiennent le nombre de jours et si Listedéroulante1 est el nom de ta liste :
{ =SUM(B2:B4) * { Listedéroulante1 }}
Tu verrouilles ton formulaire et tu testes.
Si cela ne fonctionne pas, reviens en indiquant ta formule avec un exemple concret.

Attention : les { } s'obtiennent avec CTRL F9. N'utilise pas celles du clavier, cela ne fonctionnerait pas.

PS : comme tu le vois, on peut indiquer les références des cellules comme dans Excel en utilisant A1, etc. Tu comptes toi-même les colonnes et les lignes.
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015

Bonjour Claire, et merci pour ton aide !

Alors j'ai réussi à importer la valeur de la liste déroulante dans mon calcul, c'est déjà une première victoire. Apparemment je n'utilisais pas le bon type de liste déroulante : dans l'onglet "Développeur" je cliquais sur les boutons "Zone de liste déroulante" ou "Liste déroulante", alors qu'il fallait apparemment cliquer sur "Outils hérités" et choisir "Zone de liste déroulante (avec contrôle ActiveX)" (sinon il me met une erreur de syntaxe, "Signet non défini").

Le second problème qui se pose alors est que je ne dois pas faire apparaître la valeur qui intervient dans le calcul, je m'explique :

La liste déroulante comporte plusieurs choix, qui ont chacun une valeur correspondante
- choix 1 = prix 1
- choix 2 = prix 2
...
Il faut que ma liste déroulante propose les différents "choix X", et que la valeur "prix X" soit ensuite prise pour le calcul, sans être affichée.

Est-ce possible ?
Messages postés
4010
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
3 octobre 2016
1 605 >
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015

Tout est possible plus ou moins facilement ou directement :-)

Tu as bien fait de prendre la liste dans les outils hérités, mais je ne suis pas certaine que la liste avec contrôle ActiveX soit utile, sauf à utiliser des macros.

As-tu de nombreux choix dans ta liste déroulante ou est-ce juste 2 ou 3 ?
S'il y en a peu, un ou 2 "IF" devraient suffire.
Par exemple :
{ IF { Listedéroulante1 } = 1 { =SUM(B2:B4)*100} { =SUM(B2:B4)*200} }

C-Claire
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015
>
Messages postés
4010
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
3 octobre 2016

J'ai un total de 7 choix possibles... Donc en attendant une meilleure solution je vais "essayer" de faire 6 IF imbriqués ! ^^' Mais c'est quand même archi galère et illisible..

De plus mes choix sont de la forme "CHOIX = 0%", "0% < CHOIX < 2%"... etc.
Dois-je utiliser des guillemets ? Où dois-je mettre des {} ?

EDIT : c'est trop galère, quelqu'un saurait-il comment écrire directement via une maccro le résultat dans la case voulue (mes petites méthodes Excel ne semblent pas fonctionner...). Il sera plus simple de faire les IF imbriqués en VBA ^^'.
Messages postés
4010
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
3 octobre 2016
1 605 >
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015

Une meilleure réponse serait sans doute d'insérer un tableau Excel avec liaison par exemple.
Word n'est pas un logiciel de calcul même si, avec de la patience, on peut lui faire faire beaucoup de choses.

Ta formule va ressembler à ceci pour 3 choix :
{ IF { Listedéroulante1 } = 0% 0% { IF { Listedéroulante1 } = 2% { =SUM(B2:B4)*100} { IF { Listedéroulante1 } = 3% { =SUM(B2:B4)*200} } } }
Tu pourras la compléter facilement en copiant/collant le { IF...}

C-Claire
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015

Quelqu'un saurait-il comment écrire directement via une maccro le résultat dans la case voulue ? (mes petites méthodes Excel ne semblent pas fonctionner...). Il sera plus simple de faire les IF imbriqués en VBA qu'en codes de champs... ^^'.
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015

Je suis d'accord, mais je n'ai pas vraiment le choix... ^^'
Messages postés
4010
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
3 octobre 2016
1 605 >
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015

"mes petites méthodes Excel ne semblent pas fonctionner" ??
Quelles petites méthodes en Excel ?

As-tu essayé dans Word la formule avec les codes de champs ? Elle n'est pas si méchante et ressemble à des SI imbriqués Excel. Ok, les accolades perturbent un peu et il faut remplacer le séparateur d'arguments par un espace au lieu d'un ";" dans Excel.
Mais, une fois que tu as fait un premier IF complet avec CTRL F9 pour les paires d'accolades, tu peux copier/coller.

Maintenant, si tu veux le faire en VBA, comme tu le connais sous Excel, ce ne doit pas être bien différent dans Word. Assure-toi ensuite d'enregistrer en .docm et non .docx et que tes utilisateurs ont bien les macros activées dans Word.

C-Claire
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015

L'enregistrement de macros ne donne rien d'utile, ni la Fenêtre d'exécution (rien que savoir comment écrire dans une case en particulier devient impossible..)

Le problème est que le les choix du menu déroulant sont de la forme "CHOIX = 0%", "0% < CHOIX < 2%", dois-je mettre des guillemets pour l'expression entière ? Sinon ça donne { IF { Listedéroulante1 } = CHOIX = 0% { =SUM(B2:B4)*100} { IF { Listedéroulante1 } = 0% < CHOIX < 2% { =SUM(B2:B4)*200} { IF { Listedéroulante1 } = 2% < CHOIX < 4% { =SUM(B2:B4)*300} } } } ...
Messages postés
4010
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
3 octobre 2016
1 605 >
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015

Je n'avais pas compris que le contenu de ta liste présentait des données comme "CHOIX = 0%" etc.
Oui, tu encadres les items de la liste déroulante par des guillemets.

{ IF { Listedéroulante1 } = "CHOIX = 0%" 0% { IF { Listedéroulante1 } = "0% < CHOIX < 2%" { =SUM(B2:B4)*100} { IF { Listedéroulante1 } = "2% < CHOIX < 4%" { =SUM(B2:B4)*200} } } }

C-Claire
Messages postés
7
Date d'inscription
lundi 9 février 2015
Statut
Membre
Dernière intervention
10 février 2015
>
Messages postés
4010
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
3 octobre 2016

Merci ! :) Grâce à ton aide précieuse ça a fini par marcher !