Signaler

Calcule d'un montant sur une Date [Résolu]

Posez votre question Maxime_86 35Messages postés mercredi 17 avril 2013Date d'inscription 11 avril 2017 Dernière intervention - Dernière réponse le 11 avril 2017 à 14:01 par Maxime_86
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
Afficher la suite 
Utile
+1
plus moins
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
Maxime_86 35Messages postés mercredi 17 avril 2013Date d'inscription 11 avril 2017 Dernière intervention - 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.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !