besoin d'aide vba excel

besoin d'aide vba excel - VB/VBA/VBS - Programmation

Marsh Posté le 16-12-2002 à 16:14:36    

voila pour quelqu'un de mon taff, je dois programmer une macro qui calcule le nombre de jours entre deux dates. Aucun problème avec des dates normales. Le problème est que ce sont des dates de compta qui peuvent être de la forme 01/15/02. C'est bisard mais bon.... Du coup les fonctions standards ne marchent pas. Quelqu'un a une idée?

Reply

Marsh Posté le 16-12-2002 à 16:14:36   

Reply

Marsh Posté le 16-12-2002 à 18:09:17    

tu n'as pas envie de les remettre dans le bon sens pour commencer ?non, c'est une idée...

Reply

Marsh Posté le 17-12-2002 à 13:10:24    

non malheureusement c'est pas possible. Ce que j'aimerais arriver à faire c'est programmer une macro du genre: if mois>12 then..... mais je sais pas comment extraire l'information du mois dans le format date.

Reply

Marsh Posté le 17-12-2002 à 13:38:46    

if MOIS(DATEVAL(A1)) = 10 avec A1 contenant
la date '12/10/2002 (chaine de caractères)
 
 :whistle:

Reply

Marsh Posté le 17-12-2002 à 13:48:39    

ma version de vba ne reconnait pas la fonction "DATEVAL" :cry:

Reply

Marsh Posté le 17-12-2002 à 14:20:32    

en fait DATEVAL c'est la fonction "française" donc inutilisable dans du code vba mais directement dans une cellule Excel. J'ai besoin de la fonction équivalante pour le code en vba.

Reply

Marsh Posté le 17-12-2002 à 14:26:31    

et malheureusement pour mois cette fonction n'accepte pas des mois >12 :cry:

Reply

Marsh Posté le 17-12-2002 à 15:58:52    

L'équivalent VBA de DATEVAL est DATEVALUE

Reply

Marsh Posté le 18-12-2002 à 10:29:36    

merci.
ceci étant dit, cela ne résoud pas mon pb pour les dates avec des mois>12

Reply

Marsh Posté le 18-12-2002 à 10:36:21    

en VBA il existe la fonction DateDiff.  As-tu essayé?  Quelle version d'XL?  D'autre part en VBA, ce n'est pas DateVal mais DateValue.

Reply

Marsh Posté le 18-12-2002 à 10:36:21   

Reply

Marsh Posté le 18-12-2002 à 10:57:54    

encore merci. en effet ça aurait pu être une solution. mais cette fonction, elle aussi, ne prend pas en compte des dates avec des mois>12 :(

Reply

Marsh Posté le 18-12-2002 à 11:00:18    

je commence à me faire une raison; mon pb a peut être pas de solution....
mais bon si quelqu'un trouve je suis preneur! :)

Reply

Marsh Posté le 18-12-2002 à 11:13:47    

ben les fonctions VBA n'acceptent que des dates au format américain si tu leur passes une chaine (soit mois-jour-année).  Eventuellement, elles peuvent accepter le format français et le jour et le mois seront automatiquement inversés.  Sinon il reste le format universel: année-mois-jour.
 
Ce qui fait peur dans ton problème, c'est que tu dis bien "peuvent être".  Ca n'est pas toujours le cas?  Ca simplifierait grandement les choses...

Reply

Marsh Posté le 18-12-2002 à 11:59:52    

kruzi a écrit :

je commence à me faire une raison; mon pb a peut être pas de solution....
mais bon si quelqu'un trouve je suis preneur! :)


essaye ça:
 
Function difference_entre_dates(date1, date2)
jour1 = Mid(date1, 4, 2)
mois1 = Mid(date1, 1, 2)
annee1 = Mid(date1, 7, 2)
 
date1 = DateSerial(annee1, mois1, jour1)
jour2 = Mid(date2, 4, 2)
mois2 = Mid(date2, 1, 2)
annee2 = Mid(date2, 7, 2)
date2 = DateSerial(annee2, mois2, jour2)
 
difference_entre_dates = date2 - date1
End Function

Reply

Marsh Posté le 19-12-2002 à 07:25:37    

je vais vous expliquer mieux le pb (enfin je vais essayer :) )
en compta, qui n'est pas du tout ma spécialité (je suis statisticien), exeptionnellement en fin d'année avant de basculer sur l'année prochaine , il y a des dépenses engagées avant la fin d'année mais dont le règlement sera effectué que lors de l'année suivante. Mais elles sont prises en compte sur le budget 2002. Afin de boucler les comptes, la date d'enregistrement du réglement est exeptionnellement saisie sur une année de 17 mois. Donc une dépense enregistrée en 2002 mais dont le reglement a été effectuée par exemple le 2 fevrier 2003 sera saisie de la manière suivante: date d'engagement: 19/12/2002, date de reglement: 02/14/2002. On me demande de programmer(car je sert occasionnellement de pseudo informaticien dans ma boite) afin d'avoir les délais entre l'engagement et le réglement durant toute une année compta (donc une anneé de 17 mois) pour avoir des statistiques sur le service de la compta.
Voila j'espère que j'ai été clair.... :) Merci encore pour votre aide.

Reply

Marsh Posté le 19-12-2002 à 16:08:06    

peut etre ça alors:
 
 
Sub dd()
 
date1 = "10/10/02"
date2 = "15/12/03"
If Year(date2) <> Year(date1) Then
temp1 = DateValue(date2) - DateSerial(Year(date2), 1, 1)
temp2 = DateSerial(Year(date1), 12, 31) - DateValue(date1)
resultat = temp1 + temp2 - 1
Else
 
resultat = DateValue(date2) - DateValue(date1)
End If
MsgBox (resultat)
End Sub

Reply

Sujets relatifs:

Leave a Replay

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