Comment faire une boucle avec un compteur pour conversion Fahrenheit a Celsius

MrZoe Messages postés 815 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 19 septembre 2018 - 18 févr. 2010 à 23:45
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 - 24 févr. 2010 à 13:25
Bonjour

J'aimerai savoir comment faire une boucle avec un compteur dans un programme de conversion Fahrenheit a Celsius qui demande a la utilisateur de rentrer un degré en Fahrenheit un apres l autre tant que le compteur soit <=5 ou

Soit une boucle comme compteur qui compte le nombre de enregistrement fait a la saisie.


Merci d'avance

12 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
18 févr. 2010 à 23:54
salut,

je ne comprends pas trop la question, si tu veux vérifier la saisie (lors de la saisie, justement), c'est de l'évènementiel, pas du procédural

donc pourquoi il faudrait une boucle?

lors de l'évènement _CHANGE de ta zone il suffit de compter et d'agir...

ou tu parles d'un NOMBRE de saisies valides?
précise un peu stp

[hr]
0
MrZoe Messages postés 815 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 19 septembre 2018
19 févr. 2010 à 00:46
Pourquoi je veux mettre un compteur comme boucle c est un projet je dois faire et je dois mettre une boucle dans mon programme mais je n arrive pas comment le faire le code du compteur

Pour répondre a ta question oui c est pour savoir le nombre de saisir valide après je vais garder tout ses enregistrement valide et les afficher dans un tableau
merci
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
19 févr. 2010 à 00:59
montre nous ton code actuel stp
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
22 févr. 2010 à 11:21
Pas clair ! Ai-je bien compris ?

Il s'agirait d'un ensemble de 5 exercices consistant à demander à l'utilisateur de convertir en degrés Fahrenheit, une température donnée en degrés Celsius.

Les exercices et les réponses seraient mémorisés.

C'est ça ? Hein, c'est ça ?
0

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

Posez votre question
MrZoe Messages postés 815 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 19 septembre 2018
23 févr. 2010 à 05:58
oui c 'est sa mdevaud62 mais j ai régler mon problème.
Mais j'ai autre question c'est quoi le code que je doit écrit pour avoir juste des chiffre et non des lettres dans un champs textes quand
j'ai des chiffres a traiter leur de la saisie ???

merci
0
SnkVrt Messages postés 89 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 23 février 2010
23 févr. 2010 à 08:31
Salut, il y a ça qui marche...

Private Sub Text1_Change()

If IsNumeric(Text1.Text) = False Then ' vérification

On Error Resume Next 'gestion d'erreur

Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
' on retire le dernier caractère (pas numérique)

Text1.SelStart = Len(Text1.Text) 'on replace le curseur à la fin

End If

End Sub


Voilou ;)
0
MrZoe Messages postés 815 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 19 septembre 2018
23 févr. 2010 à 23:41
voici mon code mon de mon programme de conversion rentrer un degré en Fahrenheit et le convertir en Celsius
Mon code est fait de manière lorsque utilisateur rentre une lettre au lieu des chiffres dans le txtDegre.text sa affiche un message box erreur rentrer des chiffre. Mon programme prend juste des nombre et j aimerai qu'il prend des nombre a virgule ou point.

Mon problèmes est je sais pas c est quoi le code que je doit mettre pour prendre des nombre a virgule ou point aussi. je suis visual basic 6






Option Explicit
Dim intDegre As Single
Dim intCompt As Integer
Dim intCelsius As Integer
Dim intFahrenheit As Integer
Dim strDegre As String
Dim strPays As String
Dim strVille As String
Dim i As Integer
Dim intlongueur As Integer
Dim valeur As Boolean






Private Sub cmdConver_Click()

If txtPays.Text "" Or txtVille.Text "" Or txtDegre.Text = "" Then
MsgBox ("Vous devez remplir les champs") ' message d'erreur a l'utilisateur


Else
intlongueur = Len(txtDegre.Text)
strDegre = txtDegre.Text
For i = 1 To intlongueur
If Mid(strDegre, i, 1) < "0" Or Mid(strDegre, i, 1) > "9" And valeur = True Then
MsgBox ("vous devez entrer juste des chiffres ")
valeur = False


End If



Next i

If valeur = True Then

strPays = txtPays.Text
strVille = txtVille.Text
intDegre = txtDegre.Text
intDegre = ((intDegre - 32) * 5) / 9
txtResultat.Text = intDegre
End If








Do While intCompt > 0
intCompt = intCompt + 1
Loop















End If
valeur = True

End Sub

Private Sub cmdMenu_Click()
frmTemp.Hide
frmMenu.Show
End Sub

Private Sub cmdReset_Click()

txtDegre.Text = ""
txtPays.Text = ""
txtVille.Text = ""
txtResultat = ""



End Sub



Private Sub Form_Load()

strPays = ""
strVille = ""
intDegre = 0
txtResultat = ""
intCompt = 0
valeur = True

End Sub
[code=vb][code=vb][code=vb]/code/code/code
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
24 févr. 2010 à 04:49
Utilise l'évènement KeyPress pour filtrer tes entrées :

Private Sub txtDegre_KeyPress(KeyAscii As Integer)
    If InStr(1, "0123456789,.", Chr(KeyAscii)) = 0 And KeyAscii > 27 Then
        reponse = MsgBox("Ce champ n'accepte que des nombres.", vbExclamation + vbOKOnly, "Erreur")
        KeyAscii = 0
    End If
    If InStr(1, ",.", Chr(KeyAscii)) > 0 Then
        KeyAscii = Asc(",")
        If InStr(1, txtDegre.Text, ",") Then
            reponse = MsgBox("La marque de la décimale ne peut être utilisée qu'une fois.", vbExclamation + vbOKOnly, "Erreur")
            KeyAscii = 0
        End If
    End If
End Sub


Optionnel :
Malgré notre filtrage, des caractères indérisables peuvent encore être introduits si l'utilisateur utilise la commande "Coller" (menu contextuel ou Ctrl+V).
Il faut alors penser à analyser le contenu du textBox quand il change.
On peut profiter de cette phase pour arranger l'affichage des nombres. J'ai ainsi ajouté un zéro si le nombre commence par une virgule.
On pourrait aussi de même remplacer les entrées de type 03 par 3, 2,0 par 2 et ainsi de suite.

Private Sub txtDegre_Change()
    If Len(txtDegre.Text) = 0 Then
        Exit Sub
    End If
    Dim debutSelection As Integer
    debutSelection = txtDegre.SelStart
    Dim longueurSelection As Integer
    longueurSelection = txtDegre.SelLength
    Dim i As Integer
    Dim texteCorrige As String
    For i = 1 To Len(txtDegre.Text)
        If InStr(1, "0123456789,.", Mid(txtDegre.Text, i, 1)) = 0 Then
            If debutSelection >i Then debutSelection debutSelection - 1
        ElseIf InStr(1, ",.", Mid(txtDegre.Text, i, 1)) > 0 Then
            If InStr(1, texteCorrige, ",") > 0 Then
                If debutSelection >i Then debutSelection debutSelection - 1
            Else
                 texteCorrige = texteCorrige & ","
            End If
        Else
            texteCorrige = texteCorrige & Mid(txtDegre.Text, i, 1)
        End If
    Next i
    If Left(texteCorrige, 1) = "," Then
        texteCorrige = "0" & texteCorrige
        If debutSelection 1 Then debutSelection 2
    End If
    txtDegre.Text = texteCorrige
    txtDegre.SelStart = debutSelection
    txtDegre.SelLength = longueurSelection
End Sub
0
MrZoe Messages postés 815 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 19 septembre 2018
24 févr. 2010 à 07:06
Que dois je ajoute a mon code
debutSelection as integer
dim longueurSlection as integer
ect ??
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
24 févr. 2010 à 09:13
Bonjour,
Tu as bien dans ton formulaire (Form) un textBox nommé txtDegre dans lequel l'utilisateur entre la réponse ?
Oui, alors tu ajoutes dans le code de ton formulaire les 2 procédures ci-dessus telles qu'elles sont écrites.
Petites remarques au passage, tu devrais éviter les sauts de ligne inutiles et, quand tu retranscris du code sur ce forum, tu devrais utiliser les balises faites pour ça.
Ca aide à la compréhension
0
MrZoe Messages postés 815 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 19 septembre 2018
24 févr. 2010 à 13:18
Oui jai dans mon formulaire un txtBox nommé txtDegre

Ahh bon bon faut que j ajoute l autre mini code au début pour filtré les entrée mais le ascii faut que je le déclare Dim??
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
24 févr. 2010 à 13:25
Bon écoute, on va faire simple :
1) Tu crées un nouveau projet avec un formulaire
2) Sur ce formulaire tu déposes un textBiox que tu nommes txtDegre (comme dans ton exemple)
3) Dans le code du formulaire, tu copies les deux procédures que j'ai publiées plus avant. Il s'agit de la gestion des évènements KeyPress et Change du textBox txtDegre.
4) Tu testes.
5) Si ça te convient, tu élabores ton projet autour.
6) Voilà.
0