La magie du tableau reporte cette formule dans les cases en dessous.
et le prix du cappucino est ok.
Explication de la formule :
SI(CoffeeOrder[[#Cette ligne];[Product]]="";"";
signifie : si la case Product de cette ligne du tableau CoffeeOrder est EGALE à vide (valeur "") ; alors valeur "" (vide) ; sinon la formule INDEX
Remarque : je n'ai pas tapé CoffeeOrder[[#Cette ligne];[Product]] , j'ai juste désigné la case en cliquant dedans.
Ensuite, la formule INDEX .. EQUIV
C'est une combinaison bien connu car indispensable Si tu tapes sur le web EXCEL INDEX EQUIV, il y a plein de tutos.
Pour le dire simplement : EQUIV va me permettre de trouver la ligne "Capuccino" dans la colonne TheCoffeeMenu[ESPRESSO]
Ca me renvoie un n°, que j'utilise dans INDEX sur le même tableau, MAIS en indiquant comme numéro de colonne 2 (tout dernier parametre).
Donc :
Cher EQUIV, je te donne "capuccino" (en fait : CoffeeOrder[[#Cette ligne];[Product]])
trouve-moi son n° de ligne dans TheCoffeeMenu[ESPRESSO] s'il te plait .
Et pour éviter une blague très fréquente (le résultat sera faux), le dernier argument est à 0, parce que l'ordre de la carte n'est pas alphabétique.
Résultat :
Ligne 1 ? Merci.
Cher INDEX, dans le tableau "TheCoffeeMenu", positionne toi sur la ligne 1 (donnée par EQUIV) , et donne moi le contenu de la colonne 2 de cette ligne)
Résultat :
Le format des prix n'est pas bon :
Sélection C29:C33
Menu Accueil Groupe Nombre Le 1er avec des sous et un billet.
ok
Case B34 :
Excel me propose une liste de fonctions : Autre fonction : Tous : Nbval
On a ainsi le nombre de "lignes" de commande.
OK, on donne ensuite les cafés comme dans l'exemple (par sélection liste)
et les quantités 1 6 3
Ceci va nous permettre de trouver la remise.
Ici, c'est délicat. on ne cherche pas une valeur, on cherche
la valeur inférieure ou égale dans la colonne Qty pour récupérer
Lista de comentários
Réponse :
Explications :
5717554
1) Tableaux
Selection B14:C20
Menu accueil
Groupe Style
Commande Mettre sous forme de tableau
Moyen 7
=$B$14:$C$20
(coché) comporte des en-têtes
ok
En haut à gauche Nom du tableau : TheCoffeeMenu (enter)
Les flèches de filtrage apparaissent
Selection I21:J26
idem avec : Moyen 4
nom : CoffeeDiscount
Selection A28: F33
idem avec : Moyen 4
nom : CoffeeOrder
ATTENTION :
Rester dans ce menu Création
Groupe Options de Style de Tableau
Cocher Ligne des totaux
On voit apparaitre Total ligne 34
2) AUTOMATISATION
2.a)
Sélection B29:B33
Menu Données
Groupe Outils de Données
Commande Validation de Données
Validation de Données
Crit de valid: Autoriser : Liste
Source : =$B$15:$B$20
OK
On teste .. pour le 1er case B29: choix capuccino
ça marche
2.b) prix de la boisson
case C29 (la première)
=SI(CoffeeOrder[[#Cette ligne];[Product]]="";"";INDEX(TheCoffeeMenu;EQUIV(CoffeeOrder[[#Cette ligne];[Product]];TheCoffeeMenu[ESPRESSO];0);2))
La magie du tableau reporte cette formule dans les cases en dessous.
et le prix du cappucino est ok.
Explication de la formule :
SI(CoffeeOrder[[#Cette ligne];[Product]]="";"";
signifie : si la case Product de cette ligne du tableau CoffeeOrder est EGALE à vide (valeur "") ; alors valeur "" (vide) ; sinon la formule INDEX
Remarque : je n'ai pas tapé CoffeeOrder[[#Cette ligne];[Product]] , j'ai juste désigné la case en cliquant dedans.
Ensuite, la formule INDEX .. EQUIV
C'est une combinaison bien connu car indispensable Si tu tapes sur le web EXCEL INDEX EQUIV, il y a plein de tutos.
Pour le dire simplement : EQUIV va me permettre de trouver la ligne "Capuccino" dans la colonne TheCoffeeMenu[ESPRESSO]
Ca me renvoie un n°, que j'utilise dans INDEX sur le même tableau, MAIS en indiquant comme numéro de colonne 2 (tout dernier parametre).
Donc :
Cher EQUIV, je te donne "capuccino" (en fait : CoffeeOrder[[#Cette ligne];[Product]])
trouve-moi son n° de ligne dans TheCoffeeMenu[ESPRESSO] s'il te plait .
Et pour éviter une blague très fréquente (le résultat sera faux), le dernier argument est à 0, parce que l'ordre de la carte n'est pas alphabétique.
Résultat :
Ligne 1 ? Merci.
Cher INDEX, dans le tableau "TheCoffeeMenu", positionne toi sur la ligne 1 (donnée par EQUIV) , et donne moi le contenu de la colonne 2 de cette ligne)
Résultat :
Le format des prix n'est pas bon :
Sélection C29:C33
Menu Accueil Groupe Nombre Le 1er avec des sous et un billet.
ok
Case B34 :
Excel me propose une liste de fonctions : Autre fonction : Tous : Nbval
On a ainsi le nombre de "lignes" de commande.
OK, on donne ensuite les cafés comme dans l'exemple (par sélection liste)
et les quantités 1 6 3
Ceci va nous permettre de trouver la remise.
Ici, c'est délicat. on ne cherche pas une valeur, on cherche
la valeur inférieure ou égale dans la colonne Qty pour récupérer
la remise.
1 café : remise COMME 0 café
6 cafés : remise comme 5
3 cafés : remise comme 3
RECHERCHEV(CoffeeOrder[[#Cette ligne];[Qty]];CoffeeDiscount[Qty];1)
nous donne la VALEUR cherchée : 0 pour 1, 3 pour 3, 5 pour 6 ...
Ensuite, on demande à EQUIV de trouver cette valeur dans la colonne Qty
du tableau de discount, pour récupérer sa ligne.
Puis, cette ligne via INDEX nous permet de récupérer le % de discount.
Enfin, on conditionne cette recherche au fait que le produit est défini.
On utilise pour cela SI (produit vide;""; INDEX ...)
La magie du tableau propoage la formule.
Les résultats sont bons, mais au format décimal.
Sélection E29:E33
Menu Accueil Groupe Nombre Le 2eme avec %
ok
Total to pay :
=CoffeeOrder[[#Cette ligne];[Unit Price]]*CoffeeOrder[[#Cette ligne];[Qty]]*(1-CoffeeOrder[[#Cette ligne];[%Discount]])
On multiplie Prix Unitaire x Quantité x (1 - remise%)
Par exemple, quand on a une remise de 12% on paye 88% du prix sans remise. C'est (1-remise)
OK, ça marche mais on a #VALEUR tout moche.
Pour cela, on va conditionner cette formule au fait que le produit est défini.
n utilise pour cela SI (produit vide;""; calcul ...)
La formule devient :
=SI(CoffeeOrder[[#Cette ligne];[Product]]="";"";CoffeeOrder[[#Cette ligne];[Unit Price]]*CoffeeOrder[[#Cette ligne];[Qty]]*(1-CoffeeOrder[[#Cette ligne];[%Discount]]))
Enfin, on passe en format monétaire.
Sélection F29:F34
Menu Accueil Groupe Nombre Le 1er avec des sous et un billet.
ok
Dernière chose : la formule du Grand Total F34 : sous.tal(103 ...) , équivaut à NBVAL
On met SOMME
Fini !