[vba] datediff
Résolu/Fermé
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
-
Modifié par yacleouf le 28/06/2010 à 14:45
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 - 1 juil. 2010 à 08:39
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 - 1 juil. 2010 à 08:39
A voir également:
- [vba] datediff
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
4 réponses
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
28 juin 2010 à 14:54
28 juin 2010 à 14:54
je précise que je dois réutiliser le résultats, car j'effectue 2 fois ce calculs une fois pour connaitre le nombre de jours d'une date A à la fin de l'année et celui d'une date B que j'additionnerais par la suite .
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 306
28 juin 2010 à 15:05
28 juin 2010 à 15:05
Bonjour,
essaies
essaies
MsgBox Format(DateDiff("d", Range("A1"), DateSerial(Year(Range("A1")), 12, 31)), "#,##0") & " jours"
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
28 juin 2010 à 15:13
28 juin 2010 à 15:13
C'est parfait ! en plus la formule gère déjà le cas des années bissextile vraiment nikel
j'ai encore 1 question ...
comment est ce que je pourrait faire, si j'ai besoin de mémoriser ce résultats car je vais effectuer ce calcul deux fois, et pour au final additionner les deux résultats
ma formule sera un truc du genre :
20 +résultat premier caclul/nombre de jour de l'année= (résultat à mémoriser)
20 +résultat deuxième caclul/nombre de jour de l'année = (résultat à mémoriser)
et pour terminer sur addition des deux résultats...
j'espère ne pas en demander de trop ^^"
j'ai encore 1 question ...
comment est ce que je pourrait faire, si j'ai besoin de mémoriser ce résultats car je vais effectuer ce calcul deux fois, et pour au final additionner les deux résultats
ma formule sera un truc du genre :
20 +résultat premier caclul/nombre de jour de l'année= (résultat à mémoriser)
20 +résultat deuxième caclul/nombre de jour de l'année = (résultat à mémoriser)
et pour terminer sur addition des deux résultats...
j'espère ne pas en demander de trop ^^"
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 306
28 juin 2010 à 15:26
28 juin 2010 à 15:26
comprend pas ta demande....
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
28 juin 2010 à 15:50
28 juin 2010 à 15:50
désolé... c'est vrai que ma demande n'est pas très simple, pour simplifier cela disons que j'ai besoin d'utiliser cette formule en la stockant dans une variable afin de pouvoir la réutilisé plus tard...
j'ai essayer déjà de faire quelque chose, mais j'ai du me tromper en définissant le type de la variable, j'ai mis un integer et aussi essayer avec un string, mais sa ne marche pas ...
j'ai essayer déjà de faire quelque chose, mais j'ai du me tromper en définissant le type de la variable, j'ai mis un integer et aussi essayer avec un string, mais sa ne marche pas ...
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 306
28 juin 2010 à 16:16
28 juin 2010 à 16:16
oui, je crois avoir compris
en fait actuellement
test=Format(DateDiff("d", Range("A1"), DateSerial(Year(Range("A1")), 12, 31)), "#,##0") & " jours"
et bien un string et donc tu ne peux pas faire de calcul
par contre
test = DateDiff("d", Range("A1"), DateSerial(Year(Range("A1")), 12, 31))
te renvoie un entier que tu peux utiliser pour tes formules en aval
quite à la fin des calculs d'utiliser la fonction "format" pour la lisibilité
tu dis...
en fait actuellement
test=Format(DateDiff("d", Range("A1"), DateSerial(Year(Range("A1")), 12, 31)), "#,##0") & " jours"
et bien un string et donc tu ne peux pas faire de calcul
par contre
test = DateDiff("d", Range("A1"), DateSerial(Year(Range("A1")), 12, 31))
te renvoie un entier que tu peux utiliser pour tes formules en aval
quite à la fin des calculs d'utiliser la fonction "format" pour la lisibilité
tu dis...
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
28 juin 2010 à 17:22
28 juin 2010 à 17:22
ok merci je vais essayer sa !
et je te fais un retour après
et je te fais un retour après
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
30 juin 2010 à 11:17
30 juin 2010 à 11:17
salut,
désolé du retard de ma réponse...
entre temps j'ai eu le temps d'essayer beaucoup de choses, et voila à quoi j'arrive :
enfaite j'essaye de lui demander de me faire ce calcul, et de me retourner le résultat dans la cellule D29
désolé du retard de ma réponse...
entre temps j'ai eu le temps d'essayer beaucoup de choses, et voila à quoi j'arrive :
Dim test As Integer, resultat As Integer, test2 As Integer, result As Integer test2 = DateDiff("d", Range("E10"), DateSerial(Year(Range("E10")), 1, 1)) test = DateDiff("d", Range("E10"), DateSerial(Year(Range("E10")), 12, 31)) resultat = ((28 * test2) + (14 * test)) / 365 result = resultat result.Value = Cells(D, 29).Value
enfaite j'essaye de lui demander de me faire ce calcul, et de me retourner le résultat dans la cellule D29
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 306
Modifié par michel_m le 30/06/2010 à 11:49
Modifié par michel_m le 30/06/2010 à 11:49
salut
ne serait ce pas plutôt ça:
ou si tu as besoin de "result" pour autre chose
ne serait ce pas plutôt ça:
range("D29")=((28 * test2) + (14 * test)) / 365
ou si tu as besoin de "result" pour autre chose
result=((28 * test2) + (14 * test)) / 365 range("D29")= result
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
1 juil. 2010 à 08:39
1 juil. 2010 à 08:39
merci! c'est nickel, ta réponse me prouve que parfois je suis un peut borné dans ce que je fais, et que je cherche pas la simplicité!!
merci encore !
merci encore !