Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pourcentage et Indice : Année N=> base 100; Année N+1=> (110)

2 réponses
Avatar
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

2 réponses

Avatar
PMO
Bonjour,

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


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



Avatar
Modeste
Bonsour ®,
????
je tente :
0*(current_year_value/reference_year_value)

256 en 2000 (base 100)
275 en 2004 ==> indice= 107,421875
0*275/256

Non ???

@+
-----Message d'origine-----
Bonjour,

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


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

.