Déterminer jour semaine VBA

Bonsoir,

Je rencontre un problème, je voudrais que lorsque je saisie la date de début de mon chantier dans mon Userform, je puisse tester si cette date n'est pas un samedi, un dimanche ou encore un jour férié.

En effet, je voudrais que lorsque cela corresponde à un samedi, dimanche ou jour férié, mon Userform s'ouvre à nouveau pour que celui-ci affiche un messagebox disant que la date n'est pas valide.

Pour les jours fériés : j'ai effectué une matrice pour les 3 années à venir, dans la feuille "critères". J'imagine qu'il faut que j'utilise un Vlookup, cependant je n'y arrive pas...

J'aimerai que ce processus se fasse lorsque j'appuie sur le bouton "valider" de mon Userform (qui est sur la feuille info)

Mon début de macro se trouve tout à la fin du code du Userform.

Le fichier est en PJ,

Merci d'avance pour votre aide !

Bonsoir,

voilà ce que fait VLookup :

Recherche une valeur dans la première colonne d'un tableau et renvoie une valeur dans la même ligne dans une autre colonne du tableau

Hors ce n'est pas ce que vous voulez, vous voulez savoir si la valeur cherchée est dans le tableau, non ?

@ bientôt

LouReeD

Bonjour,

Une solution en pièce jointe.

Remarquer qu'il a été crée une plage nommée "Feries" dans le Gestionnaire de Fichier correspondant à la plage :

=Critères!$H$2:$H$34

Le test de validation se fait quand vous tentez de quitter le contrôle.

Les macros utilisées :

Dans le formulaire

Private Sub TB_DateDebut_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo GESTERR
If Not (EstValide(CDate(TB_DateDebut))) Then
Cancel = True
MsgBox "Date invalide"
End If
Exit Sub
GESTERR:
Cancel = True
MsgBox "Date invalide"
End Sub

Dans Module2

Function EstFerie(HDate)
Dim YOK As Boolean, o
For Each o In Range("Feries")
If o = Range("K1") Then YOK = True
Next
EstFerie = YOK
End Function

Function EstWE(HDate)
Dim YOK As Boolean
If WorksheetFunction.Weekday(CDate(HDate), 3) > 4 Then YOK = True
EstWE = YOK
End Function

Function EstValide(HDate)
EstValide = EstWE(HDate) = False And EstFerie(HDate) = False
End Function

A+

Bonjour,

Merci pour votre aide et votre réactivité !

Cependant, je rencontre encore un problème avec les jours fériés... En effet, certains comme le 15/08 ou le 11/11 ne fonctionnent pas alors que la plupart d'entre eux fonctionnent très bien.

Merci de votre aide !

Bonjour,

Sorry...

Modifier cette macro :

Function EstFerie(HDate)
Dim YOK As Boolean, o
For Each o In Range("Feries")
If o = CDate(HDate) Then YOK = True '<= Ligne modifiée
Next
EstFerie = YOK
End Function

A+

Merci énormément, ça fonctionne !

Rechercher des sujets similaires à "determiner jour semaine vba"