Version boucle

giudy Messages postés 4 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 6 octobre 2008 - 2 mars 2008 à 09:12
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 2 mars 2008 à 15:49
Salut tout le monde !

j'ai écris une fonction qui rend une note entre 0 et 20 ou l'utilisateur recommence la saisie si la note n'est pas comprise entre 0 et 20 :

Function noteSaisie(ByVal note As Double) As Double
'note entre 0 et 20
Do Until note <= 20
Application.InputBox ("Veuillez saisir une note comprise entre 0 et 20 ")
Loop


End Function


Sub testNoteSaisie()
Application.InputBox ("Veuillez saisir une note comprise entre 0 et 20 ")
End Sub

Mais ma fonction me fait ne boucle qui ne se termine pas meme si j'ai fait Loop
Qu'en dites vous ?  Peut on ecrire des versions differentes avec "until" puis  "while" et do....loop sans que ça tourne à l'infini ?

Merci

7 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 mars 2008 à 11:30
Bonjour,

1) je ne vois pas quelle valeur de note tu passes à ta fonction.
2) <= 20 inclus des nombres négatifs !!! ?
3) je ne vois pas où ta fonction attribue à note la valeur saisie dans ton inputbox !!!
4) je ne vois pas non plus quelle valeur retourne ta fonction (tu ne lui en attribue aucune. or, une fonction est faite pour retourner la valeur qu'elle prend ...)


 


5) tu ne me parais pas développer sous VB6 mais sous VBA (et tu es iciç dans la section VB6) ...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 mars 2008 à 11:42
Voilà un exemple avec utilisation (bien inutile dans un tel cas à mon sens, mais bon ...) de fonction et avec boucle dans la fonction.

Private Sub Command1_Click()
  MsgBox "vous avez saisi " & noteSaisie()
End Sub

Private Function noteSaisie() As Double
  noteSaisie = -1
  Do Until noteSaisie <= 20 And noteSaisie >= 0
    noteSaisie = Val(InputBox("Veuillez saisir une note comprise entre 0 et 20 "))
  Loop
End Function

Adapte au besoin pour VBA (avec ton "Application.machin")
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 mars 2008 à 11:46
Ah oui...

Et lis dans ton aide en ligne à quoi peut servir Isnumeric, puis utilise-le, afin d'éviter que l'utilisateur frappe une lettre par erreur et que la note soit alors 0 ou qu'il frappe "1blabla" et que la note soit 1 !!!
0
giudy Messages postés 4 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 6 octobre 2008
2 mars 2008 à 12:25
bonjour !

1) est ce qu'avec une boucle while ça ressemblerais à ça ?

Private Function noteSaisie3() As Double
  noteSaisie3 = -1
  Do
    noteSaisie3 = Val(InputBox("Veuillez saisir une note comprise entre 0 et 20 "))
  Loop While noteSaisie3 <> 20 And noteSaisie3 <> 0
End Function

Private Sub Command1_Click3()
  MsgBox "Votre note a été saisie avec succès !" & noteSaisie3()
End Sub

2) pour isNumeric , est ce que je peux l'introduire dans mon test ?
3) dans mon msgbox du test , est ce que je peux enlever la note qui s'affiche à coté du msg "Votre note a été saisie avec succès !"  ??

Thx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 mars 2008 à 14:28
J'ABANDONNE !!!!!!!!!
Et te conseille de ne plus mettre la charrue avant les boeufs !!!!
Il y a un minimum a connaître avant de commencer à développer... et ce minimum s'acquiert (comme tout un chacun) en lisant au moins les bases dans son aide en ligne.

Bon apprentisasge, donc.
0
giudy Messages postés 4 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 6 octobre 2008
2 mars 2008 à 15:26
c'est bon ! j'ai réussi pour les deux boucles until et while !
par contre est ce qu'on peut faire la fonction juste avec Do... Loop ? (sans while et until ?) , par exemple avec un if dans le corps de la fonction

Pour jmfmarques désolé mais  ou es l'aide en ligne ? (je suis nouveau sur le site)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 mars 2008 à 15:49
"Pour jmfmarques désolé mais  ou es l'aide en ligne ? (je suis nouveau sur le site) "


L'aide en ligne n'est pas sur ce site ni sur ce forum !
Elle est sur TA MACHINE (barre d'outil ==>>> ? ou Aide ou Help selon ta version !!!).
Nul (même les plus avancés des développeirs) ne peut valablement développer sans consulter régulèrement cette aide !...
0
Rejoignez-nous