OVH Cloud OVH Cloud

[VBA] IsDate dans Function

3 réponses
Avatar
Pascal
Bonjour =E0 toutes et =E0 tous,

Voici 2 bouts de code:

Code 1:
Sub TestDate()
If IsDate(ActiveCell) Then
MsgBox "Is a date"
Else: MsgBox "Is not a date"
End If
End Sub

Code 2:
Function Saison(MaDate As Date) As String
If IsDate(MaDate) Then
Select Case Format(MaDate, "mmdd")
Case 11 To 320, 1221 To 1231
Saison =3D "Hiver"
Case 321 To 620
Saison =3D "Printemps"
Case 621 To 920
Saison =3D "Et=E9"
Case 921 To 1220
Saison =3D "Automne"
Case Else
End Select
Else: Saison =3D "Date invalide!"
End If
End Function

Le premier code fonctionne parfaitement, =E9galement dans le=20
cas o=F9 la cellule active n'est pas une date. En revanche,=20
dans le second, si l'argument de la fonction n'est pas une=20
date (ex: date au format General), ce n'est pas le cas.=20
Quelqu'un parmi vous voit-il pourquoi?

Merci pour vos r=E9ponses et bien =E0 vous,

Pascal.

3 réponses

Avatar
CAP2
Salut Pascal,

essaie ça (ne pas déclarer que ton argument MaDate doit être de type Date,
sinon dès que ce ne sera pas le cas, ta fonction considèrera ton argument
comme non valide et renverra #VALEUR!) :

Function Saison(MaDate)

If IsDate(MaDate) Then
Select Case Format(MaDate, "mmdd")
Case 11 To 320, 1221 To 1231
Saison = "Hiver"
Case 321 To 620
Saison = "Printemps"
Case 621 To 920
Saison = "Eté"
Case 921 To 1220
Saison = "Automne"
Case Else
End Select
Else: Saison = "Date invalide!"
End If

End Function

Ca marche ?

CAP2

"Pascal" a écrit dans le message de
news: 980a01c48686$3ccb69c0$
Bonjour à toutes et à tous,

Voici 2 bouts de code:

Code 1:
Sub TestDate()
If IsDate(ActiveCell) Then
MsgBox "Is a date"
Else: MsgBox "Is not a date"
End If
End Sub

Code 2:
Function Saison(MaDate As Date) As String
If IsDate(MaDate) Then
Select Case Format(MaDate, "mmdd")
Case 11 To 320, 1221 To 1231
Saison = "Hiver"
Case 321 To 620
Saison = "Printemps"
Case 621 To 920
Saison = "Eté"
Case 921 To 1220
Saison = "Automne"
Case Else
End Select
Else: Saison = "Date invalide!"
End If
End Function

Le premier code fonctionne parfaitement, également dans le
cas où la cellule active n'est pas une date. En revanche,
dans le second, si l'argument de la fonction n'est pas une
date (ex: date au format General), ce n'est pas le cas.
Quelqu'un parmi vous voit-il pourquoi?

Merci pour vos réponses et bien à vous,

Pascal.
Avatar
Pascal
Salut CAP2,

Ca marche super! Comme quoi, VBA a encore beaucoup de
secrets pour moi!
Grand merci!

Pascal.

-----Message d'origine-----
Salut Pascal,

essaie ça (ne pas déclarer que ton argument MaDate doit
être de type Date,

sinon dès que ce ne sera pas le cas, ta fonction
considèrera ton argument

comme non valide et renverra #VALEUR!) :

Function Saison(MaDate)

If IsDate(MaDate) Then
Select Case Format(MaDate, "mmdd")
Case 11 To 320, 1221 To 1231
Saison = "Hiver"
Case 321 To 620
Saison = "Printemps"
Case 621 To 920
Saison = "Eté"
Case 921 To 1220
Saison = "Automne"
Case Else
End Select
Else: Saison = "Date invalide!"
End If

End Function

Ca marche ?

CAP2

"Pascal" a écrit
dans le message de

news: 980a01c48686$3ccb69c0$
Bonjour à toutes et à tous,

Voici 2 bouts de code:

Code 1:
Sub TestDate()
If IsDate(ActiveCell) Then
MsgBox "Is a date"
Else: MsgBox "Is not a date"
End If
End Sub

Code 2:
Function Saison(MaDate As Date) As String
If IsDate(MaDate) Then
Select Case Format(MaDate, "mmdd")
Case 11 To 320, 1221 To 1231
Saison = "Hiver"
Case 321 To 620
Saison = "Printemps"
Case 621 To 920
Saison = "Eté"
Case 921 To 1220
Saison = "Automne"
Case Else
End Select
Else: Saison = "Date invalide!"
End If
End Function

Le premier code fonctionne parfaitement, également dans le
cas où la cellule active n'est pas une date. En revanche,
dans le second, si l'argument de la fonction n'est pas une
date (ex: date au format General), ce n'est pas le cas.
Quelqu'un parmi vous voit-il pourquoi?

Merci pour vos réponses et bien à vous,

Pascal.


.



Avatar
CAP2
Avec plaisir ;o))

CAP2

"Pascal" a écrit dans le message de
news: 28cd01c4868c$85799e20$
Salut CAP2,

Ca marche super! Comme quoi, VBA a encore beaucoup de
secrets pour moi!
Grand merci!

Pascal.

-----Message d'origine-----
Salut Pascal,

essaie ça (ne pas déclarer que ton argument MaDate doit
être de type Date,

sinon dès que ce ne sera pas le cas, ta fonction
considèrera ton argument

comme non valide et renverra #VALEUR!) :

Function Saison(MaDate)

If IsDate(MaDate) Then
Select Case Format(MaDate, "mmdd")
Case 11 To 320, 1221 To 1231
Saison = "Hiver"
Case 321 To 620
Saison = "Printemps"
Case 621 To 920
Saison = "Eté"
Case 921 To 1220
Saison = "Automne"
Case Else
End Select
Else: Saison = "Date invalide!"
End If

End Function

Ca marche ?

CAP2

"Pascal" a écrit
dans le message de

news: 980a01c48686$3ccb69c0$
Bonjour à toutes et à tous,

Voici 2 bouts de code:

Code 1:
Sub TestDate()
If IsDate(ActiveCell) Then
MsgBox "Is a date"
Else: MsgBox "Is not a date"
End If
End Sub

Code 2:
Function Saison(MaDate As Date) As String
If IsDate(MaDate) Then
Select Case Format(MaDate, "mmdd")
Case 11 To 320, 1221 To 1231
Saison = "Hiver"
Case 321 To 620
Saison = "Printemps"
Case 621 To 920
Saison = "Eté"
Case 921 To 1220
Saison = "Automne"
Case Else
End Select
Else: Saison = "Date invalide!"
End If
End Function

Le premier code fonctionne parfaitement, également dans le
cas où la cellule active n'est pas une date. En revanche,
dans le second, si l'argument de la fonction n'est pas une
date (ex: date au format General), ce n'est pas le cas.
Quelqu'un parmi vous voit-il pourquoi?

Merci pour vos réponses et bien à vous,

Pascal.


.