Macro DateDiff pour calcul écart en jours
Fermé
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
-
Modifié par AnthonyCK le 2/12/2015 à 10:13
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 4 déc. 2015 à 12:06
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 4 déc. 2015 à 12:06
A voir également:
- Macro DateDiff pour calcul écart en jours
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Compte facebook suspendu 180 jours - Guide
- Calcul moyenne excel - Guide
- Compte instagram suspendu 180 jours - Guide
- Macro word - Guide
7 réponses
eljojo_e
Messages postés
1155
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
14 octobre 2022
154
2 déc. 2015 à 10:20
2 déc. 2015 à 10:20
Bonjour,
Je n'est pas bien saisie le but de ce code.. Mais pour la différence de jour, il suffit de soustraire une date à une autre dans une cellule et tu as le nombre de jours. Pas besoin de vba normalement.
Le code
Cordialement
Je n'est pas bien saisie le but de ce code.. Mais pour la différence de jour, il suffit de soustraire une date à une autre dans une cellule et tu as le nombre de jours. Pas besoin de vba normalement.
Le code
If Datetwo > Dateone Then Exit Subveut dire la 1ère date est supérieur à la 2ème ?
Cordialement
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
2 déc. 2015 à 10:24
2 déc. 2015 à 10:24
Merci eljojo,
Je ne peux pas passer par une simple formule Excel (=DateDif) car la ligne et les cellules où se trouvent les dates ainsi que celles où se trouve la différence de jours entre ces dates n'existent pas lorsque le fichier est vierge. Ces lignes seront créées par l'utilisateur pendant l'avancement du dossier.
Concernant Datetwo > Dateone c'est pour palier aux erreurs éventuelles que pourraient faire les utilisateurs, bloquant ainsi le sub quand la saisie est erronée.
Je ne peux pas passer par une simple formule Excel (=DateDif) car la ligne et les cellules où se trouvent les dates ainsi que celles où se trouve la différence de jours entre ces dates n'existent pas lorsque le fichier est vierge. Ces lignes seront créées par l'utilisateur pendant l'avancement du dossier.
Concernant Datetwo > Dateone c'est pour palier aux erreurs éventuelles que pourraient faire les utilisateurs, bloquant ainsi le sub quand la saisie est erronée.
eljojo_e
Messages postés
1155
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
14 octobre 2022
154
2 déc. 2015 à 10:34
2 déc. 2015 à 10:34
D'accord, mais les utilisateurs ne peuvent-ils pas faire une simple formule : (=cellule1-cellule2) ? Je viens encore de tester cela m'affiche le nombre de jours
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
2 déc. 2015 à 17:29
2 déc. 2015 à 17:29
L'objectif est de simplifier la vie des utilisateurs ;)
Dans l'absolu, ils peuvent, mais je souhaite qu'ils n'aient pas à le faire.
Dans l'absolu, ils peuvent, mais je souhaite qu'ils n'aient pas à le faire.
Gloops1
Messages postés
322
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
27 septembre 2023
11
2 déc. 2015 à 10:29
2 déc. 2015 à 10:29
Bonjour,
J'ai trouvé la doc de la fonction DateDiff là :
https://support.microsoft.com/en-us/office/datediff-function-e6dd7ee6-3d01-4531-905c-e24fc238f85f?ui=en-us&rs=en-us&ad=us
Il y est dit que le premier argument est de type string, donc si tu lui envoies une variable d qui contient 0 il ne saura pas quoi en faire.
J'ai trouvé la doc de la fonction DateDiff là :
https://support.microsoft.com/en-us/office/datediff-function-e6dd7ee6-3d01-4531-905c-e24fc238f85f?ui=en-us&rs=en-us&ad=us
Il y est dit que le premier argument est de type string, donc si tu lui envoies une variable d qui contient 0 il ne saura pas quoi en faire.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
Modifié par michel_m le 2/12/2015 à 11:00
Modifié par michel_m le 2/12/2015 à 11:00
Bonjour
tcycle = DateDiff("d", Dateone, Datetwo)
mais jojo a raison
2/dans ta macro, tu écris
tu sembles chercher la 1° ligne non vide
si oui essaies sans boucle
3/
peut-^etre inverser les 2 lignes ?
Michel
tcycle = DateDiff("d", Dateone, Datetwo)
mais jojo a raison
2/dans ta macro, tu écris
i_tot = 5
Do Until IsEmpty(Cells(i_tot, 8)) = True
i_tot = i_tot + 1
Loop
tu sembles chercher la 1° ligne non vide
si oui essaies sans boucle
i_tot= Columns("H").Find("*", Range("B4")).Row
3/
Cells(i, 51) = tcycle
tcycle = DateDiff(d, Dateone, Datetwo)
peut-^etre inverser les 2 lignes ?
Michel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
2 déc. 2015 à 17:29
2 déc. 2015 à 17:29
Merci pour vos réponses.
J'ai redéfini mes variables (et remplacé d par "d") :
Michel je ne comprends pas le :
Notamment la partie Range("B4"), car le module doit s'arrêter en effet lorsque les cellules de la colonne 5 (donc H) sont vides.
La ligne 4 de mon fichier est bloquée et non modifiable par l'utilisateur, peut être est-ce la raison.
J'ai redéfini mes variables (et remplacé d par "d") :
Dim Dateone As Date
Dim Datetwo As Date
Dim tcycle As String
Dim i As Long
Dim i_tot As Long
Michel je ne comprends pas le :
i_tot= Columns("H").Find("*", Range("B4")).Row
Notamment la partie Range("B4"), car le module doit s'arrêter en effet lorsque les cellules de la colonne 5 (donc H) sont vides.
La ligne 4 de mon fichier est bloquée et non modifiable par l'utilisateur, peut être est-ce la raison.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
3 déc. 2015 à 07:52
3 déc. 2015 à 07:52
As tu essayer ?
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
3 déc. 2015 à 09:17
3 déc. 2015 à 09:17
Oui, sans succès...
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
3 déc. 2015 à 09:52
3 déc. 2015 à 09:52
http://www.cjoint.com/data3/ELdiZLKqmTx_Classeur1.xlsm
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
Modifié par AnthonyCK le 3/12/2015 à 10:29
Modifié par AnthonyCK le 3/12/2015 à 10:29
Merci Michel pour cet exemple.
J'aimerais, que ma macro ne tourne pas lorsque les champs de la colonne H sont vide, et non chercher la première case non vide.
Les premiers calculs doivent s'effectuer sur la ligne 5 pour calculer la DateDiff.
J'avance, j'y suis presque ! :)
J'aimerais, que ma macro ne tourne pas lorsque les champs de la colonne H sont vide, et non chercher la première case non vide.
Les premiers calculs doivent s'effectuer sur la ligne 5 pour calculer la DateDiff.
J'avance, j'y suis presque ! :)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
3 déc. 2015 à 11:40
3 déc. 2015 à 11:40
bon, si j'ai pigé: on calcule la différence de jour si il y a quelque chose dans la colonne H après la ligne 4
essaies
nota
Application.ScreenUpdating = True inutile: la réactivation de l'écran s'effectue automatiquement lorsque tu rend la main au système
essaies
'nombre de cellules > adresse H4 non vides
Nbre = Application.CountIf(Range("H5:H1000"), "*") '10000 à adapter
If Nbre = 0 Then GoTo err_vide
i_tot = 4
For Cptr = 1 To Nbre
i_tot = Columns("H").Find("*", Cells(i_tot, "H")).Row
Cells(i_tot, 51) = datetwo - dateone
Next
Exit Sub
'gestionnaire erreurs
err_vide:
MsgBox "plage vide", vbCritical
End Sub
nota
Application.ScreenUpdating = True inutile: la réactivation de l'écran s'effectue automatiquement lorsque tu rend la main au système
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
3 déc. 2015 à 14:22
3 déc. 2015 à 14:22
Michel, je pense avoir un problème de relation entre i et i_tot
Je ne vois pas comment procéder sans boucle...
Avec votre code peut-être n'ai-je plus besoin de la fonction DateDiff ?
Je ne vois pas comment procéder sans boucle...
Avec votre code peut-être n'ai-je plus besoin de la fonction DateDiff ?
Public Sub CalculTempsdeCycle()
'Calcul du temps de cycle
Dim Dateone As Date
Dim Datetwo As Date
Dim tcycle As Long
Dim i As Long
Dim i_tot As Long
Sheets("Gestion").Select
i = 5
Dateone = Cells(i, 50)
Datetwo = Cells(i, 8)
tcycle = DateDiff("d", Datetwo, Dateone)
Cells(i, 51) = tcycle
Nbre = Application.CountIf(Range("H5:H1000"), "*")
If Nbre = 0 Then GoTo err_vide
i_tot = 4
For Cptr = 1 To Nbre
i_tot = Columns("H").Find("*", Cells(i_tot, "H")).Row
Cells(i_tot, 51) = Datetwo - Dateone
Next
Exit Sub
err_vide:
MsgBox "Plage vide", vbCritical
End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
>
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
3 déc. 2015 à 15:09
3 déc. 2015 à 15:09
pour le coup de datediff, jojo, que je salue, a donné la bonne solution + simple que datediff valable si on cherche des mois ou des années..... ou années, mois, jours!!!
tu snobes ou quoi?
dans mon code j'ai marqué "cptr" au lieu de "i"
c'est un crime ?
Abandon du suivi
tu snobes ou quoi?
dans mon code j'ai marqué "cptr" au lieu de "i"
c'est un crime ?
Abandon du suivi
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
4 déc. 2015 à 11:55
4 déc. 2015 à 11:55
Je ne snobe rien ni personne. Vous avez mal interprété mon message. Bonne journée.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
>
AnthonyCK
Messages postés
14
Date d'inscription
lundi 16 novembre 2015
Statut
Membre
Dernière intervention
4 décembre 2015
Modifié par michel_m le 4/12/2015 à 12:07
Modifié par michel_m le 4/12/2015 à 12:07
En blacklist
Adieu
Adieu