variable vba et fonction excel

variable vba et fonction excel - VB/VBA/VBS - Programmation

Marsh Posté le 06-07-2009 à 14:47:00    

Bonjour,
J’ai un tableau qui recense des factures émises depuis le début de l'année quelque soit leur devise d'émission (JPY, USD, EUR, etc..).
Je voudrais qu'il me calcule la somme par devise et par lieu d'émission (siège ou agence) pour une période donnée. Pour cela, j'ai créé un userform dans lequel on rentre les dates de début et fin de période (champs que j'aie appelé : txtDateDebut et txtDateFin)
 
Pour les 2 premières conditions (sans prise en compte de la période), il n'y a aucun problème : la fonction SOMMEPROD (SUMPRODUCT en VBA) fait très bien l'affaire. Par contre, je n'arrive pas à introduire dans la formule les dates de début et fin de période. J'ai essayé de créer 2 variables :  
                                   "a"= txtDateDebut.value
                                   "b"= txtDatefin.value
 
Quelqu'un saurait-il comment faire pour résoudre ce problème de prise en compte de la période dans le calcul?
 
D'avance merci

Reply

Marsh Posté le 06-07-2009 à 14:47:00   

Reply

Marsh Posté le 06-07-2009 à 14:51:14    

dadaking a écrit :

                                  "a"= txtDateDebut.value
                                   "b"= txtDatefin.value


 [:delarue5]  
T'as pas mis ça exactement dans ton code quand même ?
Car c'est impossible ça. L'inverse oui mais tu peux pas changer la valeur de la lettre "a". :pt1cable:  
Ou alors c'est une faute de frappe et tu voulais dire : a = txtDateDebut.value ?

Reply

Marsh Posté le 06-07-2009 à 14:54:10    

c'est effectivement une erreur de frappe de ma part... j'ai mis :  
               a = txtDatedebut.value
excuse-moi pour cette erreur de saisie

Reply

Marsh Posté le 06-07-2009 à 15:04:07    

C'est quoi les types de a et b ? Et c'est quoi le problème exactement ? Ca compile pas, ça met une erreur à l'éxécution, ... ?

Reply

Marsh Posté le 06-07-2009 à 15:17:22    

mes variable sont de type date. le pb est que je n'arrive pas à prendre en considération cette période (entre a et b) dans ma formule SUMPRODUCT
voici ce que j'ai mis comme code  
"=SUMPRODUCT(('[Fact_2009.xls]Individuelles'!R3C8:R165C8=""MUR"" )*(a<='[Fact_2009.xls]Individuelles'!r3c1:r165c1<=b)*('[Fact_2009.xls]Individuelles'!R3C12:R165C12))
Comme résultat il me met : #NOM?

Reply

Marsh Posté le 06-07-2009 à 15:25:24    

à la place de a et b essaye de mettre un truc du genre : DATEVAL("xx/xx/xxxx" ) en remplaçant bien entendu les xx par la date que tu veux.


Message édité par Deamon le 06-07-2009 à 15:26:38
Reply

Marsh Posté le 06-07-2009 à 15:29:57    

j'avais bien pensé à ça mais le problème est que je ne veux pas que la période soit en dure dans le code : il faut que ça marche quelque soit la période mise (d'où l'utilisation d'un userform pour la saisie des dates de début et de fin de période)

Reply

Marsh Posté le 06-07-2009 à 15:38:24    

Alors fais un DATEVAL d'une variable string qui contiendrait la date entrée. Ca te va pas ça ?

Reply

Marsh Posté le 06-07-2009 à 15:51:24    

je mets un truc du style :  
 
dim a as string
dim b as string
     a = txtDateDebut.value
     b = txtDateFin.value
 
"=SUMPRODUCT(('Fact_2009....=""MUR"" )*(dateval(a)<='[Fact_2009...<=dateval(b))*(...)
 
je suis dans le vrai ou pas?
Excuse-moi de te harceler mais je débute en vba...

Reply

Marsh Posté le 06-07-2009 à 17:06:47    

Bah si tu testes ça ça marche ou pas ?

 

Je ne sais pas si Excel est sensible à la casse mais dans le doute je mettrai DATEVAL en majuscule.


Message édité par Deamon le 06-07-2009 à 17:07:30
Reply

Marsh Posté le 06-07-2009 à 17:06:47   

Reply

Marsh Posté le 06-07-2009 à 18:07:07    

j'ai essayé les deux versions (majuscules et minuscules) et ça ne marche pas....
Merci quand même de m'avoir aidé.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed