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

glimor -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
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

7 réponses

tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
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
glimor
 
j'ai pas compris?? dsl
0
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
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
glimor
 
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   Statut Membre Dernière intervention   122
 
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
glimor
 
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   Statut Membre Dernière intervention   122
 
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   Statut Contributeur Dernière intervention   1 191
 
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