Je suis assez novice en VBA et je ne parviens pas à faire l'exercice suivant :
Ecrire la fonction VerifierJours(Jour As String) qui permet de vérifier que la chaîne de caractères passée en argument est bien un jour de la semaine et qui renvoie un booléen, et la tester dans EXCEL/
Voici ce que j'ai tenté sans succès :
VB:
Function VerifierJours(jour As String) As Boolean
Dim i As Integer
jour = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche")
For i = 0 To 6
If jour(i) = "lundi" Or "mardi" Or "mercredi" Or "jeudi" Or "vendredi" Or "samedi" Or "dimanche" Then VerifierJours = True Else VerifierJours = False
Next
End Function
J'ai ensuite essayé d'aller directement sur la feuille excel où j'avais marqué de A1 à A7 les jours de la semaine, puis en B2 j'ai tapé VerifierJours(A1) par exemple pour tester la fonction. Cela n'a pas fonctionné et j'ai eu un message d'erreur "erreur de compilation : tableau attendu"
Function VerifierJours(jour As String) As Boolean
Dim i As Integer, Liste()
Liste = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche")
VerifierJours = False
For i = 0 To 6
If Liste(i) = jour Then VerifierJours = True
Next
End Function
Si "jour" est la variable de la fonction elle ne peut pas être la liste des jours.
Donc on définit Liste puis on regarde pour tous les éléments de Liste si Liste(i)=jour.
En respectant ton tableau initial
Une façon de faire
VB:
Function verifjour(j As Range) As Boolean
Dim jour
jour = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche")
verifjour = Not IsError(Application.Match(j.Text, jour, 0))
End Function
Pour tester
En A1, saisir : jeudi
Puis en B1: =verifjour(A1)
Function VerifierJours(jour As String) As Boolean
Dim i As Integer, Liste()
Liste = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche")
VerifierJours = False
For i = 0 To 6
If Liste(i) = jour Then VerifierJours = True
Next
End Function
Si "jour" est la variable de la fonction elle ne peut pas être la liste des jours.
Donc on définit Liste puis on regarde pour tous les éléments de Liste si Liste(i)=jour.
si le message #2 est bien celui là alors oui je l'ai vu
Bonjour
En respectant ton tableau initial
Une façon de faire
VB:Copier dans le presse-papier
Function verifjour(j As Range) As Boolean
Dim jour
jour = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche")
verifjour = Not IsError(Application.Match(j.Text, jour, 0))
End Function
Pour tester
En A1, saisir : jeudi
Puis en B1: =verifjour(A1)