Bonjour jesskyl, Banzai64, Jmd, le forum
Au risque d'être désagréable La formule de Banzai ne fonctionne pas avec certaines entrées pour x1, y1, x2, y2 on trouve des résultats > 375*racine(2) (=530,33) ce qui est impossible si on considère que le nord communique avec le sud et l'ouest avec l'est. (ex : x1=484, y1=38, x2=312, y2=683 donne 670).
La solution de JMD est bonne, il suffisait de remplacer 749 par 750 et d'extrapoler pour avoir une formule du type racine((minimum(a1;a2;a3))^2+minimum(b1;b2;b3))^2)
Je propose une autre approche : Soit A(x1,y1), B(x2,y2) et L (ici 750) la largeur et hauteur de la carte)
Considérer que A devient le centre du repère cartésien, on a alors A(0,0) et B(x'2,y'2) avec x'2=x2-x1 et y'2=y2-y1
Ensuite on s'intéresse aux valeurs de x'2 et y'2. Soit i représentant tour à tour l'un et l'autre dans la suite.
Alors si Abs(i) <= L/2 ne rien faire, si Abs(i) > 375 alors on substitue à i la valeur : i(L/Abs(i)-1)
Pour retrouver ce résultat : de 400 on doit arriver à 350, de -450 on doit arriver à -300, de 675 on doit arriver à 75 etc..
Pour obtenir finalement avec retour des valeurs initiales (je ne garantie pas qu'il n'y ai pas de fautes de frappes ou () mal placées ):
d=racine((si((x2-x1)>L/2;(x2-x1)*(L/abs(x2-x1)-1);(x2-x1)))^2+(si((y2-y1)>L/2;(y2-y1)*(L/abs(y2-y1)-1);(y2-y1)))^2)
Par contre la formule Excel qui suit est correcte avec x1 en B1, y2 en B2, x2 en D1, y2 en D2, L en F1
=RACINE((SI(ABS(D1-B1)>F1/2;(D1-B1)*F1/ABS(D1-B1)-(D1-B1);D1-B1))^2+(SI(ABS(D2-B2)>F1/2;(D2-B2)*F1/ABS(D2-B2)-(D2-B2);D2-B2))^2)
Cordialement
Jules237