Bonjour Robinherold,
Un essai en PJ avec :
Zone =SIERREUR(RECHERCHEV(CodePostal;ListeCodes;2;FAUX);"")
Prix =INDEX(ListePoids;EQUIV(Zone;ListeZones;0);EQUIV(Poids;ListePoids;1))
A noter que j'ai différencié sur deux lignes les poids min et max, car XL comprends mieux un nombre qu'une chaine de texte ( 10 est plus compréhensible que 10kg-20kg )