Calcule d'un montant sur une Date

Résolu/Fermé
Maxime_86 Messages postés 35 Date d'inscription mercredi 17 avril 2013 Statut Membre Dernière intervention 11 avril 2017 - 11 avril 2017 à 12:36
Maxime_86 Messages postés 35 Date d'inscription mercredi 17 avril 2013 Statut Membre Dernière intervention 11 avril 2017 - 11 avril 2017 à 14:01
Bonjour,

Je débute en VB, j'utilise le code suivant pour calculer un montant à partir d'une date.
Exemple :


je souhaite par exemple faire un calcule du montant (qui est à droite) sur une période du 01.01.2016 (à gauche) au 01.01.2017 (au milieu) donc seul les valeurs 0.00+0.00+2611.45 doivent être calculées

ma variable date de début s'appel D_VS_TAB_REG_DEB_PERIOD_REG et celle de fin est la D_VS_TAB_REG_FIN_PERIOD_REG

Pour info D_VS_DATE_DEBUT et D_VS_DATE_FIN sont les variable du choix de la date par l'utilisateur afin de faire ce calcule.

sauf que le code que j'utilise est limité à un compte de 10, j'ai essayé de boucler mais ça ne marche pas.

Quelqu'un pourrait-il m'aider à régler ce problème.

Un grand Merci.


DIM a AS FLOAT
DIM b AS FLOAT
DIM c AS FLOAT
DIM d AS FLOAT
DIM e AS FLOAT
DIM f AS FLOAT
DIM g AS FLOAT
DIM h AS FLOAT
DIM l AS FLOAT
DIM m AS FLOAT

a = D_VS_TAB_REG_MONT_REG(1)
b = D_VS_TAB_REG_MONT_REG(2)
c = D_VS_TAB_REG_MONT_REG(3)
d = D_VS_TAB_REG_MONT_REG(4)
e = D_VS_TAB_REG_MONT_REG(5)
f = D_VS_TAB_REG_MONT_REG(6)
g = D_VS_TAB_REG_MONT_REG(7)
h = D_VS_TAB_REG_MONT_REG(8)
l = D_VS_TAB_REG_MONT_REG(9)
m = D_VS_TAB_REG_MONT_REG(10)

if ((D_VS_TAB_REG_DEB_PERIOD_REG(1)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(1) > D_VS_DATE_FIN))then
a = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(2)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(2) > D_VS_DATE_FIN))then
b = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(3)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(3) > D_VS_DATE_FIN))then
c = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(4)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(4) > D_VS_DATE_FIN))then
d = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(5)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(5) > D_VS_DATE_FIN))then
e = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(6)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(6) > D_VS_DATE_FIN))then
f = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(7)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(7) > D_VS_DATE_FIN))then
g = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(8)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(8) > D_VS_DATE_FIN))then
h = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(9)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(9) > D_VS_DATE_FIN))then
l = 0
endif
if ((D_VS_TAB_REG_DEB_PERIOD_REG(10)<D_VS_DATE_DEBUT) or (D_VS_TAB_REG_FIN_PERIOD_REG(10) > D_VS_DATE_FIN))then
m = 0
endif
value = a + b + c + d + e + f + g + h + l + m

1 réponse

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
11 avril 2017 à 12:45
bonjour, suggestion:
dim i as integer
dim total as float
total=0
for i = 1 to 10
    if ((D_VS_TAB_REG_DEB_PERIOD_REG(i) >= D_VS_DATE_DEBUT) and _
            D_VS_TAB_REG_FIN_PERIOD_REG(i) <=  D_VS_DATE_FIN)) then
total = total + D_VS_TAB_REG_MONT_REG(i) 
next i
1
Maxime_86 Messages postés 35 Date d'inscription mercredi 17 avril 2013 Statut Membre Dernière intervention 11 avril 2017 1
11 avril 2017 à 14:01
ah cool ça marche, merci bcp, petite précision j'ai utilisé un COUNT(D_VS_TAB_REG_DEB_PERIOD_REG) pour le for i =1 to 10
j'ai remplacé le 10 par COUNT(D_VS_TAB_REG_DEB_PERIOD_REG)
et maintenant ça marche.
Merci encore.
0