Récupérer date dans format datetime VBA
Fermé
vans7k
-
15 avril 2011 à 11:52
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 28 avril 2011 à 08:17
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 28 avril 2011 à 08:17
4 réponses
Utilisateur anonyme
Modifié par Lupin.PC4 le 15/04/2011 à 15:25
Modifié par Lupin.PC4 le 15/04/2011 à 15:25
Bonjour,
Suggestion de code :
Cdt
Lupin
Suggestion de code :
Option Explicit ' Sub Test() Dim JourIntervalle As Date Dim HeureDebut As Date Dim HeureFin As Date Dim SommeEvenement As Variant Dim NbEvenement As Long Dim j As Integer JourIntervalle = Now HeureDebut = Now HeureFin = Now j = 1 While Format((Sheets("feuil1").Range("A" & j).Value), "YYYY-MM-DD") = Format(JourIntervalle, "YYYY-MM-DD") If (Format((Sheets("feuil1").Range("A" & j).Value), "HH:MM:SS") >= Format(HeureDebut, "HH:MM:SS")) And _ (Format((Sheets("feuille1").Range("A" & j).Value), "HH:MM:SS") <= Format(HeureFin, "HH:MM:SS")) Then SommeEvenement = SommeEvenement + Sheets("feuil1").Range("D" & j).Value NbEvenement = NbEvenement + 1 End If j = j + 1 Wend End Sub '
Cdt
Lupin
Merci, cependant celà ne semble pas fonctionner.
Je voudrais aussi faire la différence entre deux dates avec DateDiff cependant à cause de ces format ça ne me donne pas le bon resultat.
voici ma formule :
NbJours = DateDiff("d", Sheets("feuille1").Range("A2").Value, Sheets("feuille1").Range("A2").End(xlDown).Value) + 1
Et aussi faire un DateAdd pour ajouter un nombre de jour à ma date de début dans ma boucle (même problème):
DateCherchee = DateAdd("d", Jour, ActiveWorkbook.Sheets("feuille1").Range("A2").Value)
Si vous avez une idée ?!
Merci
Je voudrais aussi faire la différence entre deux dates avec DateDiff cependant à cause de ces format ça ne me donne pas le bon resultat.
voici ma formule :
NbJours = DateDiff("d", Sheets("feuille1").Range("A2").Value, Sheets("feuille1").Range("A2").End(xlDown).Value) + 1
Et aussi faire un DateAdd pour ajouter un nombre de jour à ma date de début dans ma boucle (même problème):
DateCherchee = DateAdd("d", Jour, ActiveWorkbook.Sheets("feuille1").Range("A2").Value)
Si vous avez une idée ?!
Merci
Utilisateur anonyme
27 avril 2011 à 21:29
27 avril 2011 à 21:29
Bonjour,
Suggestion :
Décomposer votre code en y insérant des variables.
Exemple :
NbJours = DateDiff("d", Sheets("feuille1").Range("A2").Value, Sheets("feuille1").Range("A2").End(xlDown).Value) + 1
En décomposant ainsi, vous diminuer le risque d'erreur.
Personnellement, je code sous VBA depuis 1995 et je décompose
encore lorsque le code devient compliqué à lire et de fait même
à interprèter.
Enfin, cela demeure un opignon personnel.
Cdt
Lupin
Suggestion :
Décomposer votre code en y insérant des variables.
Exemple :
NbJours = DateDiff("d", Sheets("feuille1").Range("A2").Value, Sheets("feuille1").Range("A2").End(xlDown).Value) + 1
Sub Test() Dim NbJours As Long Dim Valeur1 As Variant Dim Valeur2 As Variant Valeur1 = Sheets("feuille1").Range("A2").Value Valeur2 = Sheets("feuille1").Range("A2").End(xlDown).Value NbJours = DateDiff("d", Valeur1, Valeur2) + 1 MsgBox NbJours End Sub '
En décomposant ainsi, vous diminuer le risque d'erreur.
Personnellement, je code sous VBA depuis 1995 et je décompose
encore lorsque le code devient compliqué à lire et de fait même
à interprèter.
Enfin, cela demeure un opignon personnel.
Cdt
Lupin
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 28/04/2011 à 08:28
Modifié par michel_m le 28/04/2011 à 08:28
Bonjour
en VBa, il vaut mieux travailler en numéro de série
par ex démo d'école qui mémorise une date heure et restitue la date 10 jours et 2 heures+ tard
ainsi les calculs sur les dates et heures sont facilités: pas besoin de datediff par exemple
Michel
en VBa, il vaut mieux travailler en numéro de série
par ex démo d'école qui mémorise une date heure et restitue la date 10 jours et 2 heures+ tard
Dim Jour As Long Dim Jour As Long Dim Heure As Double With Sheets(1) 'mémorisation Jour = Int(Range("A1")) Heure = Range("A1") - Jour 'restitution With Range("A2") .Value = (Jour+10) + (Heure+120/1440) .NumberFormat = "dd/mm/yyyy h:mm;@" End With End With
ainsi les calculs sur les dates et heures sont facilités: pas besoin de datediff par exemple
Michel