Bonjour à tous,
Étant occupé, je n'ai pu répondre plus tôt.
1-EQUIV(H2;Tarif!$A$3:$A$123;0) donne l'indice (la position) du département H2 dans la plage Tarif!$A$3:$A$123. En cas de doublons (altitude et îles) c'est toujours la première ligne qui est renvoyée. À traiter par la suite.
2-RECHERCHEH(F2;Tarif!$C$3:$P$123;EQUIV(H2;Tarif!$A$3:$A$123;0), recherche la valeur du poids F2 dans la première ligne de la plage Tarif!$C$3:$P$123 et renvoie la valeur trouvée à la position (ligne) donnée par la fonction EQUIV précédente (qui correspond donc au département). La recherche se fait par valeur approchée, c'est à dire que si le poids exact n'est pas trouvé c'est la valeur immédiatement inférieure sur cette première ligne qui est renvoyée.
3-SI(F2<=100;1;PLAFOND.MATH(F2;10)/100) permet d'avoir un coefficient multiplicateur, soit 1 pour les poids inférieurs à 100 kg, soit le poids arrondi au multiple supérieur de 10 et divisé par 100. J'ai effectivement zappé le cas supérieur à 1000 kg ou on arrondi au 50 kg supérieur. Formule modifiée pour prendre en compte ce cas : SI(F2<=100;1;PLAFOND.MATH(F2;SI(F2<1000;10;50))/100)
4-Pour le cas des départements avec altitude ou île, il faut trouver, si nécessaire, un moyen de différencier les spécificités. On peut faire simple en supposant que dans la zone tarif ces tarifs spécifiques sont toujours après le tarif de base et en ajoutant une colonne supplémentaire I dans la feuille Détail, on prend dans ce cas la seconde ligne de tarif avec +(I2<>"")
=RECHERCHEH(F2;Tarif!$C$3:$P$123;EQUIV(H2;Tarif!$A$3:$A$123;0)+(I2<>""))*SI(...
Application voir fichier joint.
On peut toujours trouver mieux ! Mais si la première formule correspondait à 99% de vos cas, c'était déjà bien.
@78chris
mais si tu te contentes d'1/2 solution, tout va bien.
Jugement plutôt sévère me semble-t-il !