OVH Cloud OVH Cloud

WorksheetFunction.Weekday

12 réponses
Avatar
Arnaud LECLEMENT
Bonjour,
j'essaie de mettre en ouvre cela afin d'empêcher la saisie de date le samedi
et le dimanche dans un textbox,
cela ne fonctionne pas
Une aide s'il vous plait ?
Merci et bonne journée
Arnaud


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox1.Value <> "" Then
Mavar = CDate(TextBox1.Value)

If Application.WorksheetFunction.Weekday(Mavar) = 6 Or _
Application.WorksheetFunction.Weekday(Mavar) = 7 Then

If Application.WorksheetFunction.Weekday(Mavar) = 6 Then
MsgBox "Vous avez saisi une date tombant le samedi", _
vbExclamation, " Erreur date !"
TextBox1 = ""
TextBox1.SetFocus
Exit Sub
End If

If Application.WorksheetFunction.Weekday(Mavar) = 7 Then
MsgBox "Vous avez saisi une date tombant le dimanche", _
vbExclamation, " Erreur date !"
TextBox1 = ""
TextBox1.SetFocus
Exit Sub
End If
End If
End If
End Sub

2 réponses

1 2
Avatar
anonymousA
tu peux aussi choisir le paramètre 3 auquel ca, Lundi vaut 0 et Samedi 5
pour les jours de la semaine.

bonjour,

c'est parce que Wekkday accepte 2 paramètres dont le 2eme donne la
possibilité de choisir si le 1er jour de la semaine est un Dimanche ou
un Lundi

ici Now() renvoie le jour d'aujourd'hui à savoir 16/07/05

Application.WorksheetFunction.Weekday(Now(),1) renverra la valeur 7
Application.WorksheetFunction.Weekday(Now(),2) renverra la valeur 6

C'est à toi de choisir si tu veux obtenir 7 pour un Samedi ou 6 pour un
Samedi.
Par défaut, il s'agit de la notation Américaine et en conséquence VBA
interprète que le paramètre est 1.


A+


Je te remercie abcd
le pb est que les dates sont bizarrement décalées d'un jour
si je saisi 16/07/05, cela me donne le dimanche ?
Arnaud


"abcd" a écrit dans le message de news:

petit cours:

le Cancel est transmis ByVal dans la déclaration de la procédure
cela signifie que tu peux le changer et que la valeur sera transmise
au code appelant: ce Cancel est fait pour te donner la possibilité
d'annuler l'action en cours, on le retrouve sur quelques autres
événements en VBA





Avatar
Arnaud LECLEMENT
Merci beaucoup abcd ainsi que AnonymousA
Je vais adapter, j'ai bien compris la leçon ;-)
Merci et bonne soirée
Arnaud

"abcd" a écrit dans le message de news:
%
on n'est pas dans un module, l'appel se fait dans l'autre sens, mais tu
as raison, habituellement, ByVal signifie qu'on ne transmet vers la
procédure que la valeur, pas la référence.

ici il y a aussi un MSForms.ReturnBoolean et ce paramètre n'est pas
envoyé vers notre procédure mais (je crois, et là c'est peut-être moi
qui modélise mal) est envoyé vers le UserForm...
1 2