[VBA][Excel] comparer deux dates

comparer deux dates [VBA][Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 08-08-2008 à 10:41:02    

Bonjour,
je souhaiterai faire une macro qui comparerait 2 variables types dates
 
(C'est une macro permettant de faire des statistiques)
 
Je comparerai donc la date du mois en cours (01/07/2008)  
avec d'autres dates (comme 23/07/2008 ou 23/06/2008 ou 12/12/2007)
 
je veux donc savoir si la date se situe dans le mois en cours ou dans le mois precedent ou il y a plus de deux mois.
 
Je sais pas si j'ai bien été clair.  
 
plus simple : existe t il une fonction permettant de comparer le mois et l'année d'une date.
 
Merci

Reply

Marsh Posté le 08-08-2008 à 10:41:02   

Reply

Marsh Posté le 08-08-2008 à 12:06:56    

bonjour,
 
surement mois(date) ou month(date) et year(date) ou annee(date)
 
tu auras peut etre besoin des  
select case tavariable
case 1 to 4 (or > 6)
faire ...
case ..
faire ...
end select

Reply

Marsh Posté le 08-08-2008 à 14:54:01    

ok c'est tout à fait ca
merci

Reply

Marsh Posté le 11-08-2008 à 11:38:22    

Je souhaiterai juste avoir une petite info supplementaire.
 
Dans une cellule, j'ai une date au format JJ/MM/AA
Comment faire pour la lire et la stocker dans une variable de type date?

Reply

Marsh Posté le 11-08-2008 à 12:53:07    

dim dd as date
dd=range("A1" )
ou dd = cells(1,1)
 
peut etre utile:
fonction chr (la lettre A est chr(65))
range("A1:A10" ) equivalent a range("A1:"&chr(65)&"10) utile si tu selectionne une cellule en fonction d'une variable
qui est aussi equivalent a range(cells(1,1),cells(10,1))


Message édité par 86vomito33 le 11-08-2008 à 12:54:10
Reply

Marsh Posté le 11-08-2008 à 14:12:57    

oki merci
j'avais tenté ca des le debut mais j'ai une erreur "incompatibility type"
en fait j'avais pas fait gaffe mais la cellule est (JJ/MM/AA hh:mm) cela pose peut etre probleme non?

Reply

Marsh Posté le 11-08-2008 à 14:28:45    

autant (au temps) pour moi, je n'étais pas sur la bonne cellule. Maintenant ca marche Merci !!!

Reply

Marsh Posté le 11-08-2008 à 14:41:06    

si tu prefere avoir JJ/MM/AA hh:mm et recuperer juste la date que tu copie ailleurs (par exemple) tu peux faire dat=mid(lacelluleavecceformat,1,8) voir aide

Reply

Marsh Posté le 09-09-2008 à 07:46:37    

Bonjour,
 
Je suis moi aussi embêté par des comparaisons de dates, cependant, je dois admettre qe j'ai pas réellement compris se que vous évoquiez dans les lignes précédentes.
Pour ma part j'ai fais sa (qui ne fonctionne pas ...) :
 
Dim Date_A As Date
Dim datedeb As Date
Dim lignefinal As Variant
 
Date_A = InputBox("Date debut de tranche dd.mm.yy" )
 
lignefinal = 13
 
mef_date_A:
    datedeb = Cells(lignefinal, 4).Value
             If datedeb < Date_A Then
             Rows(lignefinal).Select
             Selection.Delete Shift:=xlUp
             Else: GoSub fin
        End If
GoSub mef_date_A
fin:
 
Alors pour info ma 1ere date en D13 est le 01.10.03, je veux donc supprimer ma ligne lorsque la date que j'ai saisi " Date_A" est supérieure à ma date ce trouvant en D13.
 
Si quelqu'un a une idée, je suis tout ouïe .
Par avance, merci.
 

Reply

Marsh Posté le 09-09-2008 à 13:24:07    

pluto faire comme ca
 

Code :
  1. Dim Date_A As Date
  2. Dim datedeb As Date
  3. Dim lignefinal As Variant
  4. Date_A = InputBox("Date debut de tranche dd/mm/yy" )
  5. while Cells(13, 4).Value < Date_A
  6. Rows(13).Select
  7. Selection.Delete Shift:=xlUp
  8. wend


 
si dans ta cellule tu es effectivement avec 10.01.08 ca va pas le faire
vaudrait mieux 10/01/08

Reply

Marsh Posté le 09-09-2008 à 13:24:07   

Reply

Marsh Posté le 09-09-2008 à 13:33:29    

Si tu veux etre sur de la maniere dont sera ecrit la date, utilise plutot while format(cells(13,4).value, "dd/mm/yyyy" ) < Date_A
Qui uniformisera le format de la date...


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 11-09-2008 à 08:23:57    

:hello:  
 
Merci bien, sa fonctionne au poil ^^

Reply

Marsh Posté le 25-04-2013 à 16:01:04    

Bonjour je suis actuellement en stage et j'ai quelques petites interrogations sur comment comparer deux dates. J'ai essayé plusieurs codes mais cela fonctionne pas je vous ai mis ci dessous mon dernier code. Sur ma feuille excel il y a toutes les interventions qui ont été effectué depuis 4 ans . à la demande de l'utilisateur il doit en ressortir toutes les interventions pour lesquelles la date qui est dans la colonne 5 est comprise entre l'intervalle que l'utilisateur aura saisie. JATTENDS PATIEMMENT VOS REPONSES PARCE QUE JE SUIS DANS UNE IMPASSE ....
 
Dim i As Integer
Dim stock As Date
Dim DateDebut As Date
Dim DateFin As Date
Dim papi As Integer
 
fin = Range("A1" ).End(xlDown).Row
 
DateDebut = InputBox("Entrer la date ", " Date de debut d'intervalle ", "01/01/2013 " )
 
MsgBox "Bonjour" & Chr(10) & "La date est " & DateDebut
 
DateFin = InputBox("Entrer la date ", " Date de fin d'intervalle ", "01/01/2013 " )
 
MsgBox "Bonjour" & Chr(10) & "La date est " & DateFin
 
For i = 2 To fin
Cells(i, 5).Select
stock = Cells(i, 5).Value
If (stock <= DateDebut) Or (stock >= DateFin) Then
Rows(i).Select
Selection.Delete Shift:=xlUp
papi = Range("A1" ).End(xlDown).Row
fin = papi
End If
Next i

Reply

Marsh Posté le 25-04-2013 à 16:02:18    

Bonjour je suis actuellement en stage et j'ai quelques petites interrogations sur comment comparer deux dates. J'ai essayé plusieurs codes mais cela fonctionne pas je vous ai mis ci dessous mon dernier code. Sur ma feuille excel il y a toutes les interventions qui ont été effectué depuis 4 ans . à la demande de l'utilisateur il doit en ressortir toutes les interventions pour lesquelles la date qui est dans la colonne 5 est comprise entre l'intervalle que l'utilisateur aura saisie. JATTENDS PATIEMMENT VOS REPONSES PARCE QUE JE SUIS DANS UNE IMPASSE ....  
 
Dim i As Integer  
Dim stock As Date  
Dim DateDebut As Date  
Dim DateFin As Date  
Dim papi As Integer  
 
fin = Range("A1" ).End(xlDown).Row  
 
DateDebut = InputBox("Entrer la date ", " Date de debut d'intervalle ", "01/01/2013 " )  
 
MsgBox "Bonjour" & Chr(10) & "La date est " & DateDebut  
 
DateFin = InputBox("Entrer la date ", " Date de fin d'intervalle ", "01/01/2013 " )  
 
MsgBox "Bonjour" & Chr(10) & "La date est " & DateFin  
 
For i = 2 To fin  
Cells(i, 5).Select  
stock = Cells(i, 5).Value  
If (stock <= DateDebut) Or (stock >= DateFin) Then  
Rows(i).Select  
Selection.Delete Shift:=xlUp  
papi = Range("A1" ).End(xlDown).Row  
fin = papi  
End If  
Next i  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed