4 réponses
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
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
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