XL 2019 [VBA] Exercice tableaux

shanon7

XLDnaute Junior
Bonjour !

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"

Merci d'avance pour vos éclairages,

Shanon
 
Solution
Bonjour Shanon ,
Essayez cela :
VB:
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.

Staple1600

XLDnaute Barbatruc
Bonjour

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)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Shanon ,
Essayez cela :
VB:
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.
 

chris

XLDnaute Barbatruc
Bonjour
  • jour est une variable contenant un texte : tu ne peux pas utiliser le même nom pour une autre variable de type array
  • si tu testes chaque jour de la semaine dans un if, ni l'array, ni la boucle ne servent à quelque chose
Donc
  • soit tu supprimes la ligne jour=array.... et le For... Next pour ne garder que la ligne if
  • soit tu nommes autrement ton array et tu compares jour avec NomArray(i)
Edit : Arf, j'arrive après la bataille. Pas d'infos sur vos réponses avant de poster...
 

shanon7

XLDnaute Junior
re

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)

Shanon
 

Discussions similaires

Réponses
3
Affichages
384

Statistiques des forums

Discussions
311 720
Messages
2 081 886
Membres
101 830
dernier inscrit
sonia poulaert