Vb déja fait mais érreure imposible a détecté

Fermé
glimor - 8 nov. 2008 à 21:09
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 9 nov. 2008 à 00:40
Bonjour,
voila mon vb ne marche pas c'est tout c.. comme calcule mais je ne trouve pas mon érreur si vous pouviez m'aider a la trouver (c'est le calcule qui et faux a la fin )
svp merci

Option Explicit
Dim note1, note2, note3 As Integer
Dim moyenne, coeff1, coeff2, coeff3 As String



Sub main()

note1 = InputBox("saisir note1 :")
note2 = InputBox("saisir note2 :")
note3 = InputBox("saisir note3 :")
coeff1 = InputBox("saisir coeff1 :")
coeff2 = InputBox("saisir coeff2 :")
coeff3 = InputBox("saisir coeff3 :")



moyenne = ((note1 * coeff1) + (note2 * coeff2) + (note3 * coeff3) / (coeff1 + coeff2 + coeff3))

MsgBox ("votre moyenne est de : " & moyenne)

End Sub
A voir également:

7 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
8 nov. 2008 à 21:17
Slt,

Si j'ai pas encore oublié: inbox retourne une chaine de caractère, donc il faut récuerer le tout dans des chaines puis faire la conversion:

dim intNote1, intNote2, intNote3, intCoeff1, intCoeff2, intCoeff3 as Integer
dim strNote1, etc etc as String

strNote1 = Inbox("Saisir Note1:")
intNote1 = CInt(strNote1)


Et même pendant le calcul vous avez mélangé des int et des string.

BonCourage.
0
j'ai pas compris?? dsl
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
8 nov. 2008 à 21:34
Re,

Analysant votre code:

Option Explicit 
Dim note1, note2, note3 As Integer 
Dim moyenne, coeff1, coeff2, coeff3 As String 


Vous avez déclarez un mélange de Integer: valeurs numériques et String: chaines de caractères.

note1 = InpuBox("...")


Vous essayez de mettre une String (chaine de caractère) dans un Integer (numérique), je ne sais pas est ce que ça marche!

Puis:

moyenne = ((note1 * coeff1) + (note2 * coeff2) + (note3 * coeff3) / (coeff1 + coeff2 + coeff3))


Un mélange de String et Integer dans la même formule, là aussi source probable d'erreur. Et même je pense qu'il y a une erreur dans les parenthèses.

Donc je vous propose:

Option explicit
dim intNote1, intNote2, intNote3, intCoeff1, intCoeff2, intCoeff3, moyenne as Integer 
dim strNote1, strNote2, strNote3, strCoeff1, strCoeff2, strCoeff3 as String 


strNote1 = InputBox("saisir note1 :") 
strNote2 = InputBox("saisir note2 :") 
strNote3 = InputBox("saisir note3 :") 
strCoeff1 = InputBox("saisir coeff1 :") 
strCoeff2 = InputBox("saisir coeff2 :") 
strCoeff3 = InputBox("saisir coeff3 :") 

intNote1 = CInt(strNote1) 'Conversion de type de String vers Integer
intNote2 = CInt(strNote2)
intNote3 = CInt(strNote3)
intCoeff1 = CInt(strCoeff1)
intCoeff2 = CInt(strCoeff2)
intCoeff3 = CInt(strCoeff3)

moyenne = ((note1 * coeff1) + (note2 * coeff2) + (note3 * coeff3) )/ (coeff1 + coeff2 + coeff3)

MsgBox ("votre moyenne est de : " & moyenne)
0
ce que je comprend pas c'est pourquois vous entrer deux fois les notes
intnote et strnote sa sert a quoi???
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
8 nov. 2008 à 21:46
inoutbox("") est une fonction qui vous donne une chaine de caractère, vous pouvez ne pas déclarrer intNote1 mais il faut certainement convertir pendant le calcul, autrement dit:

strNote1 va contenir un truc comme "1.23", un tableau de caractère, donc les opérateurs numériques vont vous donner des résultats érronés (je pense).
intNote1 = CInt(strNote1) = 1.23 la valeur numérique.
0

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

Posez votre question
en fait je veut un truc simple il faut que mon programme me fasse la moyenne de trois notes et qu'elle me l'affiche le plus simple possible sans convertire
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
8 nov. 2008 à 22:11
Est ce que mon programme a marché? je pense que c'est le plus simple (à part de faire une conversion dans la formule!)

Pour tester, mettez le code dans un fichier .vbs et cliquez deux fois dessus:

strNote1 = InputBox("saisir note1 :") 
strNote2 = InputBox("saisir note2 :") 
strNote3 = InputBox("saisir note3 :") 
strCoeff1 = InputBox("saisir coeff1 :") 
strCoeff2 = InputBox("saisir coeff2 :") 
strCoeff3 = InputBox("saisir coeff3 :") 

intNote1 = CInt(strNote1)
intNote2 = CInt(strNote2)
intNote3 = CInt(strNote3)
intCoeff1 = CInt(strCoeff1)
intCoeff2 = CInt(strCoeff2)
intCoeff3 = CInt(strCoeff3)

moyenne = ((intNote1 * intCoeff1) + (intNote2 * intCoeff2) + (intNote3 * intCoeff3) )/ (intCoeff1 + intCoeff2 + intCoeff3)

MsgBox ("votre moyenne est de : " & moyenne)




Norlament, ça marche.
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 nov. 2008 à 00:40
Bonjour tous,
Quelque petite remarque...
1°)
Option explicit
dim intNote1, intNote2, intNote3, intCoeff1, intCoeff2, intCoeff3, moyenne as Integer
dim strNote1, strNote2, strNote3, strCoeff1, strCoeff2, strCoeff3 as String
Dan VB, chaque variable doit être déclarée explicitement et non en bout de ligne.
Dim Note1 as integer, Note 2 as integer etc..
2°) Le InputBox retourne en fonction de la variable appelée, si c'est un string.. renvoi un string, si c'est une numérique.. renvoi un numérique.
Mais le plus simple c'est...
Sub Main()
Dim Note(1 To 3) As Integer
Dim Coef(1 To 3) As Single
Dim Tot As Single
Dim CoefT As Single
    For i = 1 To 3
        Note(i) = InputBox("Entrez la note N°" & i, "Moyenne")
        Coef(i) = InputBox("Entrez le coéficient pour la note N°" & i, "Moyenne")
        Tot = Tot + (Note(i) * Coef(i))
        CoefT = CoefT + Coef(i)
    Next i
    MsgBox ("votre moyenne est de : " & Tot / CoefT)
End Sub

Tu dit...
A+

0