besoin d'aide vba excel - VB/VBA/VBS - Programmation
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...
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.
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)
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.
Marsh Posté le 17-12-2002 à 14:26:31
et malheureusement pour mois cette fonction n'accepte pas des mois >12
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
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.
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
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!
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...
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.... |
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
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.
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
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?