2 votes

VBA - Valeur minimale/maximale pour Date()

Y a-t-il une raison pour laquelle les fonctions Excel de Min et Max ne fonctionnent pas pour le code suivant ?

Sub minmaxtest()

Dim TEST_VALUES() As Date
ReDim TEST_VALUES(1 To 5, 1 To 1)

TEST_VALUES(1, 1) = 1
TEST_VALUES(2, 1) = 2
TEST_VALUES(3, 1) = 3
TEST_VALUES(4, 1) = 4
TEST_VALUES(5, 1) = 5

MsgBox Application.Max(TEST_VALUES)

End Sub

Ce problème n'existe pas dans le cas où Dim TEST_VALUES() As Integer mais se produit lorsqu'il est déclaré comme une date.

J'ai essayé d'envelopper les valeurs qui sont assignées dans le fichier (CLng(CDate()) par exemple, TEST_VALUES(1, 1) = (CLnd(CDate(1)) mais cela ne résout pas non plus mon problème d'analyse sur cette plage de dates (est-ce le nom correct pour ce type de variable ?) Merci !

2voto

Robin Mackenzie Points 11206

Si vous utilisez CDate sur chaque élément du tableau, vous obtiendrez 5 comme le Max :

Sub minmaxtest()

Dim TEST_VALUES() As Integer
ReDim TEST_VALUES(1 To 5, 1 To 1)

TEST_VALUES(1, 1) = CDate(1)
TEST_VALUES(2, 1) = CDate(2)
TEST_VALUES(3, 1) = CDate(3)
TEST_VALUES(4, 1) = CDate(4)
TEST_VALUES(5, 1) = CDate(5)

MsgBox Application.Max(TEST_VALUES)

End Sub

2voto

Nathan_Sav Points 5380

Cela a fonctionné pour toute une série de dates :

Sub d()

Dim a() As Variant

a = Range("a1:a5").Value2

Debug.Print CDate(Application.Max(a))

End Sub

0voto

CRCollazosG Points 1

Si les performances ne sont pas critiques, vous pouvez essayer :

MsgBox WorksheetFunction.Max(TEST_VALUES)

Je ne suis pas sûr que cela fonctionne aussi sur les tableaux.

0voto

iDevlop Points 9770

Dim TEST_VALUES() As Variant et ça marchera.
Vous avez défini une variable comme Date et vous lui avez assigné des entiers.

0voto

Slai Points 134

De la documentation :

Si les arguments ne contiennent aucun chiffre, MAX renvoie 0 (zéro).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X