Pourcentage et Indice : Année N=> base 100; Année N+1=> (110)
Le
laprisson
Bonjour,
Ne trouvant pas de moyen simple sous excel pour obtenir sous forme d'indice
(base 100 en année N-1) un pourcentage donné, j'ai créé sous excel une
formule un peu lourde mais qui a le mérite de fonctionner
Formule excel (A4 = année précédente; B4 année en cours)
SI(OU(ESTVIDE(A4);ESTVIDE(B4);(A4=0);ESTERREUR(SI((A4*B4>0);"("&SIGNE(A4)*SIGNE(B4)*ARRONDI((100+SIGNE(B4)*(B4/A4-1)*100);0)&")";SI(A4<0;"("&SIGNE(B4)*ARRONDI((100+SIGNE(A4)*(B4/A4-1)*100);0)&")";"("&ARRONDI((100+SIGNE(A4)*(B4/A4-1)*100);0)&")"))));"";SI((A4*B4>0);"("&SIGNE(A4)*SIGNE(B4)*ARRONDI((100+SIGNE(B4)*(B4/A4-1)*100);0)&")";SI(A4<0;"("&SIGNE(B4)*ARRONDI((100+SIGNE(A4)*(B4/A4-1)*100);0)&")";"("&ARRONDI((100+SIGNE(A4)*(B4/A4-1)*100);0)&")")))
Je veux désormais créer une fonction pour l'utiliser directement mais je ne
suis pas expert en VBA donc je cale sur certains points (comment obtenir
le signe d'un nombre, comment faire pour éviter les messages d'erreurs dus à
un code trop long)
Function PGindex(previous_year_value, current_year_value)
PGindex = IIf(IsEmpty(previous_year_value) Or IsEmpty(current_year_value) Or
IsNull(previous_year_value) Or IsError(IIf((previous_year_value *
current_year_value > 0), "(" & SIGNE(previous_year_value) *
SIGNE(current_year_value) * Rnd(100 + SIGNE(current_year_value) *
(current_year_value / previous_year_value - 1) * 100) & ")",
IIf(previous_year_value < 0, "(" & SIGNE(current_year_value) * Rnd(100 +
SIGNE(previous_year_value) * (current_year_value / previous_year_value - 1) *
100) & ")", "(" & Rnd(100 + SIGNE(previous_year_value) * (current_year_value
/ previous_year_value - 1) * 100) & ")")), "", IIf((previous_year_value *
current_year_value > 0), "(" & SIGNE(previous_year_value) *
SIGNE(current_year_value) * Rnd(100 + SIGNE(current_year_value) *
(current_year_value/ previous_year_value - 1) * 100) & ")",
IIf(previous_year_value < 0, "(" & SIGNE(current_year_value) * Rnd(100 +
SIGNE(previous_year_value) * (current_year_value / previous_year_value - 1) *
100) & ")", "(" & Rnd(100 + SIGNE(previous_year_value) * (current_year_value
/ previous_year_value - 1) * 100) & ")"))))
End Function
Si vous pouvez m'aider, je vous en remercie d'avance.
Vincent
Ne trouvant pas de moyen simple sous excel pour obtenir sous forme d'indice
(base 100 en année N-1) un pourcentage donné, j'ai créé sous excel une
formule un peu lourde mais qui a le mérite de fonctionner
Formule excel (A4 = année précédente; B4 année en cours)
SI(OU(ESTVIDE(A4);ESTVIDE(B4);(A4=0);ESTERREUR(SI((A4*B4>0);"("&SIGNE(A4)*SIGNE(B4)*ARRONDI((100+SIGNE(B4)*(B4/A4-1)*100);0)&")";SI(A4<0;"("&SIGNE(B4)*ARRONDI((100+SIGNE(A4)*(B4/A4-1)*100);0)&")";"("&ARRONDI((100+SIGNE(A4)*(B4/A4-1)*100);0)&")"))));"";SI((A4*B4>0);"("&SIGNE(A4)*SIGNE(B4)*ARRONDI((100+SIGNE(B4)*(B4/A4-1)*100);0)&")";SI(A4<0;"("&SIGNE(B4)*ARRONDI((100+SIGNE(A4)*(B4/A4-1)*100);0)&")";"("&ARRONDI((100+SIGNE(A4)*(B4/A4-1)*100);0)&")")))
Je veux désormais créer une fonction pour l'utiliser directement mais je ne
suis pas expert en VBA donc je cale sur certains points (comment obtenir
le signe d'un nombre, comment faire pour éviter les messages d'erreurs dus à
un code trop long)
Function PGindex(previous_year_value, current_year_value)
PGindex = IIf(IsEmpty(previous_year_value) Or IsEmpty(current_year_value) Or
IsNull(previous_year_value) Or IsError(IIf((previous_year_value *
current_year_value > 0), "(" & SIGNE(previous_year_value) *
SIGNE(current_year_value) * Rnd(100 + SIGNE(current_year_value) *
(current_year_value / previous_year_value - 1) * 100) & ")",
IIf(previous_year_value < 0, "(" & SIGNE(current_year_value) * Rnd(100 +
SIGNE(previous_year_value) * (current_year_value / previous_year_value - 1) *
100) & ")", "(" & Rnd(100 + SIGNE(previous_year_value) * (current_year_value
/ previous_year_value - 1) * 100) & ")")), "", IIf((previous_year_value *
current_year_value > 0), "(" & SIGNE(previous_year_value) *
SIGNE(current_year_value) * Rnd(100 + SIGNE(current_year_value) *
(current_year_value/ previous_year_value - 1) * 100) & ")",
IIf(previous_year_value < 0, "(" & SIGNE(current_year_value) * Rnd(100 +
SIGNE(previous_year_value) * (current_year_value / previous_year_value - 1) *
100) & ")", "(" & Rnd(100 + SIGNE(previous_year_value) * (current_year_value
/ previous_year_value - 1) * 100) & ")"))))
End Function
Si vous pouvez m'aider, je vous en remercie d'avance.
Vincent

Poser une question


Je ne comprends pas ce que vous voulez faire.
Pouvez-vous inventer un exemple concret pour que je puisse vous aider ?
Du style:
En "A1" j'ai 2004, en truc j'ai XXX et en machin je veux
obtenir YYY.
Merci et à bientôt.
PMO
Patrick Morange
????
je tente :
0*(current_year_value/reference_year_value)
256 en 2000 (base 100)
275 en 2004 ==> indice= 107,421875
0*275/256
Non ???
@+
(B4/A4-1)*100);0)&")";SI(A4<0;"("&SIGNE(B4)*ARRONDI
((100+SIGNE(A4)*(B4/A4-1)*100);0)&")";"("&ARRONDI
((100+SIGNE(A4)*(B4/A4-1)*100);0)&")"))));"";SI
((A4*B4>0);"("&SIGNE(A4)*SIGNE(B4)*ARRONDI((100+SIGNE(B4)*
(B4/A4-1)*100);0)&")";SI(A4<0;"("&SIGNE(B4)*ARRONDI
((100+SIGNE(A4)*(B4/A4-1)*100);0)&")";"("&ARRONDI
((100+SIGNE(A4)*(B4/A4-1)*100);0)&")")))