Rechercher : dans
Par :

[Excel VBA] Comparaison de date

Dernière réponse le 9 mar 2009 à 11:54:27 Foufou, le 9 mar 2009 à 11:10:44 
 Signaler ce message aux modérateurs

Bonjour,

Je possède un listing de tache à effectuer avec des dates. Ce listing est trié chronologiquement.
Je dois programmer une macro VBA pour Excel me permettant de selectionner la ligne correspondant à une date ou, si cette date n'est pas dans la liste, la ligne du jour d'après. (ou le jour le plus proche après)

Après avoir cherché un peu sur les forums, j'ai fini par ecrire un code, mais je ne vois pas où est le problème...

Dim i As Variant
i = 0
Dim L As Variant
L = 1

Dim A As Date
Dim B As Date

'détermine la dernière ligne remplie
Worksheets("feuil1").Range("H4").Value = Worksheets("active").Range("A65536").End(xlUp).Row

While i < (Range("H4").Value + 1) And L <> 0

'convertit et compare les valeurs de case en date.
A = FormatDateTime(Worksheets("active").Range("K" & i).Value, 1) **************LIGNE DE L'ERREUR
B = FormatDateTime(Worksheets("feuil1").Range("I17").Value, 1)
If A < B Then
i = i + 1
Else
L = Range("K" & i).Row - 1
End If
Wend

'Inscrit la valeur de la ligne correspondant à la date recherchée
Worksheets("feuil1").Range("I20").Value = L


A vot' bon coeur !! ;)

Foufou

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [Excel VBA] Comparaison de date » dans :
Différence entre dates avec la fonction DATEDIF VoirLa fonction DATEDIF n'est pas documentée dans Excel, mais par contre sur CCM vous pouvez trouver les possibilités offertes. En voici un résumé.   La syntaxe =DATEDIF(date début;date fin;type de calcul) date début : doit être une valeur date...
VBScript - Les fonctions de date et de temps VoirLes fonctions de date et de temps Fonction Description Date Retourne la date du système DateAdd(interval, number, date) Ajoute un intervalle de temps (interval) à une...

1

 Foufou, le 9 mar 2009 à 11:54:27
  • +1

Mon code est imbitable désolé...


Dim i As Variant   'l'index d'incrementation
Dim L As Variant  'le numéro de la ligne retenu
Dim A As Date     'la date de recherche
Dim B As Date     'la date d'index

L = 1 
i = 0 

Worksheets("feuil1").Range("H4").Value = Worksheets("active").Range("A65536").End(xlUp).Row 

While i < (Range("H4").Value + 1) And L <> 0 

       A = FormatDateTime(Worksheets("active").Range("K" & i).Value, 1) ***LIGNE DE L'ERREUR 
       B = FormatDateTime(Worksheets("feuil1").Range("I17").Value, 1) 

       If A < B Then 
              i = i + 1 
              Else 
              L = Range("K" & i).Row - 1 
       End If 
Wend 

Worksheets("feuil1").Range("I20").Value = L

Répondre à Foufou
Collection CommentÇaMarche.net