pb VBA

Développement, conception de sites web, PHP, (X)HTML, ASP, Ajax, CSS, Javascript, Flash, MySQL, et autres ont leurs entrées dans cette section. On peut aussi parler d'hébergement, de maintenance, de sécurité...

Modérateur: Modérateurs

pb VBA

Messagepar atao » 10 Jan 2012 19:47

Bonsoir les libelluliens!
Pourquoi dans mon programme, la solution est toujours 1? Le but du programme est de trouver le chiffre mystère qui est aléatoire à chaque fois... Merci à vous!

Code: Tout sélectionner
Option Explicit
Sub alea()
    Dim mys As Integer
    Dim nbsaisi As Integer
    Dim nbcoup As Integer
   
    Randomize
    mys = Int(1000 = Rnd) + 1
    nbcoup = 0
   
    Do
        nbsaisi = InputBox("Saisir une solution :")
        nbcoup = nbcoup + 1
        If nbsaisi > mys Then
            'MsgBox ("Votre nombre est trop grand!")
            MsgBox ("C'est moins!")
        Else
            If nbsaisi < mys Then
                'MsgBox ("Votre nombre est trop petit!")
                MsgBox ("C'est plus!")
            End If
        End If
    Loop Until nbsaisi = mys
    MsgBox ("Félicitation! ;) La réponse est bien " & nbsaisi & " Vous avez trouvez en " & nbcoup & " coups")
End Sub
Dernière édition par atao le 10 Jan 2012 22:43, édité 2 fois.
atao
 

Re: pb VBA

Messagepar JpBbricole » 10 Jan 2012 20:13

Bonjour atao

la formule pour un nombre aléatoire entre 2 valeurs est

Dim upperbound As Integer
Dim lowerbound As Integer

upperbound = 1000
lowerbound = 1

Randomize
mys = Int((upperbound - lowerbound + 1) * Rnd + 1)

Extrait du help du VBA sous Excel

Bonne soirée.
L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

A bientôt.
Avatar de l’utilisateur
JpBbricole
Libellulien Junior
Libellulien Junior
 
Messages: 235
Inscription: 06 Aoû 2007 16:04
Localisation: Corsier-sur-Vevey

Re: pb VBA

Messagepar atao » 10 Jan 2012 22:42

Merci à toi! Le prof en cours ne nous a pas parlé de upperbound et lowerbound mais parfait ça marche!
Voilà le code corrigé :

Code: Tout sélectionner
Option Explicit
Sub alea()
    Dim mys As Integer
    Dim nbsaisi As Integer
    Dim nbcoup As Integer
    Dim upperbound As Integer
    Dim lowerbound As Integer

    upperbound = 1000
    lowerbound = 0
   
    Randomize
    mys = Int((upperbound - lowerbound + 1) * Rnd + 1)
    nbcoup = 0
   
    Do
        nbsaisi = InputBox("Saisir une solution :")
        nbcoup = nbcoup + 1
        If nbsaisi > mys Then
            'MsgBox ("Votre nombre est trop grand!")
            MsgBox ("C'est moins!")
        Else
            If nbsaisi < mys Then
                'MsgBox ("Votre nombre est trop petit!")
                MsgBox ("C'est plus!")
            End If
        End If
    Loop Until nbsaisi = mys
    MsgBox ("Félicitation! ;) La réponse est bien " & nbsaisi & " Vous avez trouvez en " & nbcoup & " coups")
End Sub
atao
 

Re: pb VBA

Messagepar inventit » 12 Avr 2013 05:02

l'erreur est là:
dans la ligne de code:
mys = Int(1000 = Rnd) + 1

'1000 = Rnd' réalise un test pour voir si 1000 est égal au résultat de la fonction rnd (qui retourne un nombre réel entre 0 et 1 aléatoire).
Comme 1000 est différent de ce nombre aléatoire, le test 1000 = Rnd retourne toujours la valeur 0. (vrai=-1, faux=0)
Ainsi int(0) donne 0
et mys donne 0+1 soit 1
inventit
 
Messages: 6
Inscription: 29 Mar 2013 18:21

Re: pb VBA

Messagepar Revjones » 12 Avr 2013 06:15

Je crois qu'une solution a été trouvée il y a plus d'un an, mais merci tout de même.
Avatar de l’utilisateur
Revjones
Modérateur
Modérateur
 
Messages: 5912
Inscription: 04 Fév 2003 17:59
Localisation: Suisse


Retourner vers Développement, conception de sites web

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités