Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

IsDate, Select Case

3 réponses
Avatar
MichD
Bonjour à tous et à toutes,

Une situation étrange à vous soumettre :

Si j'exécute cette petite procédure, X = Vrai dans x = IsDate(elt)
mais dans le select case, Elt n'est pas reconnu comme date. Case IsDate(Elt)

Est-ce que quelqu'un a une explication ?

'-------------------------------------------
Sub Test()

Dim Elt As Variant
Elt = "25/1/2001"
x = IsDate(Elt)

Select Case Elt
Case IsNumeric(Elt)
A = 1
Case IsDate(Elt)
A = 2
Case Else
A = 3
End Select
End Sub
'-------------------------------------------

Merci de votre participation.


MichD
--------------------------------------------

3 réponses

Avatar
Charabeuh
Bonsoir,

Une explication peut-être?

Elt est une chaine de caractère (dans le select case elt)

isdate(elt) et isnum(elt) sont des boolean.

Elt (string) n'est pas logiquement comparable à isdate(elt) (boolean)
ni à isnum(elt) (boolean)

dans ce cas il vaut sans doute mieux utiliser des conditions:

If IsDate(Elt) Then
A = 2
ElseIf IsNumeric(Elt) Then
A = 1
Else
A = 3
End If



Après mûre réflexion, MichD a écrit :
Bonjour à tous et à toutes,

Une situation étrange à vous soumettre :

Si j'exécute cette petite procédure, X = Vrai dans x = IsDate(elt)
mais dans le select case, Elt n'est pas reconnu comme date. Case IsDate(Elt)

Est-ce que quelqu'un a une explication ?

'-------------------------------------------
Sub Test()

Dim Elt As Variant
Elt = "25/1/2001"
x = IsDate(Elt)

Select Case Elt
Case IsNumeric(Elt)
A = 1
Case IsDate(Elt)
A = 2
Case Else
A = 3
End Select
End Sub
'-------------------------------------------

Merci de votre participation.


MichD
--------------------------------------------
Avatar
MichD
Merci Charabeuh,

OK pour l'explication. Pour utiliser un select case, il faudrait le faire comme ceci :

'------------------------------------
Sub Test()
Dim Elt As Variant
Elt = "25/1/2001"
x = IsDate(Elt)

Select Case IsDate(Elt)
Case True
A = A + 1
Case False
A = A + 1
End Select
End Sub
'------------------------------------


MichD
--------------------------------------------
"Charabeuh" a écrit dans le message de groupe de discussion : in5ca7$v1m$

Bonsoir,

Une explication peut-être?

Elt est une chaine de caractère (dans le select case elt)

isdate(elt) et isnum(elt) sont des boolean.

Elt (string) n'est pas logiquement comparable à isdate(elt) (boolean)
ni à isnum(elt) (boolean)

dans ce cas il vaut sans doute mieux utiliser des conditions:

If IsDate(Elt) Then
A = 2
ElseIf IsNumeric(Elt) Then
A = 1
Else
A = 3
End If



Après mûre réflexion, MichD a écrit :
Bonjour à tous et à toutes,

Une situation étrange à vous soumettre :

Si j'exécute cette petite procédure, X = Vrai dans x = IsDate(elt)
mais dans le select case, Elt n'est pas reconnu comme date. Case IsDate(Elt)

Est-ce que quelqu'un a une explication ?

'-------------------------------------------
Sub Test()

Dim Elt As Variant
Elt = "25/1/2001"
x = IsDate(Elt)

Select Case Elt
Case IsNumeric(Elt)
A = 1
Case IsDate(Elt)
A = 2
Case Else
A = 3
End Select
End Sub
'-------------------------------------------

Merci de votre participation.


MichD
--------------------------------------------
Avatar
Charabeuh
Formellement, oui.

MichD avait énoncé :
Merci Charabeuh,

OK pour l'explication. Pour utiliser un select case, il faudrait le faire
comme ceci :

'------------------------------------
Sub Test()
Dim Elt As Variant
Elt = "25/1/2001"
x = IsDate(Elt)

Select Case IsDate(Elt)
Case True
A = A + 1
Case False
A = A + 1
End Select
End Sub
'------------------------------------


MichD
--------------------------------------------