Lier des valeurs de cellules à des cases d'option groupées
Bonjour,
je n'utilise pas fréquemment Excel et malgré de nombreuses recherches en ligne, je n'ai pas pu résoudre mon problème. Je vais tenter de vous l'exposer :
La feuille de calcul que je crée sert entre autre à calculer des coûts de production en fonction des coûts des matériaux utilisés.
Je souhaite donner l'option aux utilisateurs de la feuille de pouvoir choisir la provenance (et donc le coût) des matériaux via des cases d'options ; lesquelles doivent donc être associées à des valeurs de cellules.
En prenant l'exemple de la ligne 4, l'objectif est donc d'afficher le coût total de production (cellule T4) en fonction des prix choisis pour les matériaux nécessaires (ici 2x Mark of potency 4 (abr. MoP4) et 3x Enchanting stone 4 (abr. R4)) ainsi que du nombre de Preservation wards utilisés (nombre en N4 et prix unitaire en Y10).
MoP4 dispose de 3 prix différents (Auction House, Wonderous Bazar, No Cost) sélectionnables de manière exclusive (ligne) dans le tableau PRICES TABLE. R4 et Pres wards disposent chacun de 2 prix différents (Auction House, No Cost).
J'ai commencé en utilisant des cases options ActiveX : pour les options de MoP4 j'ai donc créé 3 cases appartenant au même groupe (GroupName mop4) chacune identifiée par un nom distinct (mop4ah, mop4wb, mop4f). L'exclusivité de sélection fonctionne bien grâce au GroupName, mais lorsque j'assigne une même cellule-liée aux 3 cases options, la sélection ne fonctionne plus — la cellule-liée essaie d'afficher 3 informations en même temps dans la même cellule (VRAI/FAUX/FAUX ou FAUX/VRAI/FAUX ou FAUX/FAUX/VRAI). J'ai donc essayé d'assigner chaque case option à une cellule-liée différente puis d'utiliser la fonction =SI() afin de déterminer laquelle des options avait été choisie au sein du groupe 'mop4' pour ensuite associer à cette option la valeur de cellule voulue (Y4, AA4 ou 0) ; je ne suis pas parvenu à mes fins. À bout de ressources, j'ai donc essayé une autre méthode.
En utilisant des cases options Formulaire, j'ai créé attentivement mes cases afin de ne pas me mélanger dans les 'ID de cases options', les ai regroupées grâce à une Zone de Contrôle de Formulaire, et j'ai finalement utilisé la fonction =CHOISIR() pour convertir les 'ID' recueillis (1, 2 ou 3 pour le groupe de contrôle MOP4 et 1 ou 2 pour les groupes de contrôle R4 et PRESW).
Par exemple, pour le groupe MOP4 dont la cellule-liée est AD14, j'ai choisi d'afficher la valeur correspondante dans la cellule AD4 en y inscrivant la formule : =CHOISIR($AD$14;Y4;AA4;0) . Cette méthode fonctionne, la valeur associée à l'option choisie par l'utilisateur au sein du groupe de contrôle MOP4 s'affiche en AD4. Même chose pour le groupe R4 avec pour cellule-liée AD17 et l'affichage du résultat en AD8 ainsi que le groupe PRESW ayant AD20 pour cellule-liée et affichant son résultat en AD11.
Les problèmes — enfin!
- Les résultats affichés en AD4, AD8 et AD11 sont bien incorporés de façon dynamique dans la formule du résultat final (cellule T4) en fonction des choix d'utilisateurs, mais j'aimerais que ces résultats intermédiaires ne soient pas visibles des utilisateurs, au même titre que les ID de cases-options choisies (1, 2 ou 3).
- La présentation des cases-options ActiveX est plus sobre et discrète que celle des cases-options Formulaire qui ne me permettent (a priori) pas de cacher la mention 'case' à côté des puces ; il semblerait cependant que les Groupes de contrôle (cadre et titre) ne soient pas indispensables pour ce que j'essaie d'obtenir et je pourrais donc simplement les effacer.
- Serait-il possible de modifier la dualité VRAI/FAUX des cases-options ActiveX pour obtenir des réponses plus variées (comme 1, 2 ou 3, voire 0) afin d'éviter l'étape intermédiaire via la fonction =CHOISIR() ou bien d'utiliser les cases-options Formulaire mais n'afficher que les puces tout en gardant la formule en T4 dynamique?
J'ai fait de mon mieux avec mon peu de connaissances aussi j'espère avoir été clair dans mes objectifs et je m'en remets à vous pour la suite!
Merci d'avance!
PS: les cases bleues sont celles destinées à l'utilisateur pour entrer ses propres valeurs.
Bonjour
- soit tu gères par formule et le plus simple est d'utiliser des objets de formulaires
Comme tu l'a remarqué la logique de la cellule liée n'est pas la même et la 1ère est bien plus facile à gérer par formule
Néanmoins une solution c-jointe exploitant les activeX
La zone jaune pourrait être ailleurs (autre onglet au autres colonnes)
Bonjour Chris,
merci pour cette réponse rapide!
Ça m'a pris un peu de temps à analyser tes formules mais je pense que j'ai bien tout compris :
=SI(EQUIV(VRAI;AF4:AH4;0)=3;0;INDEX(Y4:AC4;1;EQUIV(VRAI;AF4:AH4;0)*2-1))
Si, dans la plage AF4:AH4 la valeur VRAI est en position 3, alors envoyer 0.
Sinon, rechercher dans la plage Y4:AC4, première ligne, le numéro de colonne dans laquelle se trouve la valeur VRAI au sein de la plage AF4:AH4, le multiplier par 2 en soustraire 1 pour obtenir la bonne référence.
Si VRAI est dans la colonne 1 : 2x1-1 = 1 donc la première valeur de la plage Y4:AC4 sera utilisée.
Si Vrai est dans la colonne 2 : 2x2-1 = 3 donc la troisième valeur de la plage Y4:AC4 sera utilisée.
Pffffiu! Je ne pense pas que j'aurais trouvé ça moi-même, merci beaucoup!
Est-ce qu'il est possible d'inclure toute cette formule à la place de la valeur correspondante obtenue (case AD4) directement dans la formule de la cellule T4 ou est-ce que l'étape intermédiaire pour obtenir la référence dans une autre cellule est indispensable?
Puisque cela fonctionne avec ActiveX je continuerais comme ça ; y a-t-il des implications particulières pour les utilisateurs si j'utilise ActiveX ou Formulaire ou est-ce simplement une méthode de travail différente?
Merci!
Bonjour
Oui, tu peux imbriquer dans ta formule
Si tu préfères les activeX , cela n'est pas gênant en dehors de la démultiplication de cellules liées
Je n'ai pas vraiment de préférence en tant que novice, j'y vais avec ce qui fonctionne!
Je n'ai pas essayé d'imbriquer la formule étant donné que j'ai finalement trouvé utile d'afficher la sélection pour l'utilisateur.
Voici le résultat final ; propre et dynamique!
Merci encore!
RE
Merci du retour
Apparemment la protection bloque le fonctionnement
Comment ça?
C'est la première fois que je protège un document, j'ai verrouillé toutes les cellules qui ne doivent pas être modifiées et laissé les zones bleues modifiables pour que les utilisateurs entrent leurs valeurs.
Les puces (cases d'option) semblent être déverrouillées en tout temps.
EDIT2: Il faut que je laisse ma feuille de formules (VRAI/FAUX) non protégée sinon les cases-option ne fonctionnent pas.
Je suis donc forcé de laisser ces cellules VRAI/FAUX apparentes?
EDIT3: Super! J'ai masqué l'onglet Formulas, merci infiniment! je vais fermer le sujet!
RE
Il faut déprotéger la plage des cellules liées ou masquer l'onglet plutôt que protéger la feuille