Erreur !

Résolu
Micoute - 10 févr. 2013 à 17:46
 Micoute - 13 févr. 2013 à 11:26
Bonjour à tous,

J'ai un problème, car je ne comprend pas cette erreur



je répéte l'adresse au cas où l'image se s'afficherait pas :
http://dl.free.fr/rm.pl'h=vOyM8OqsD&i=55337296&s=7FwW89yGRgi9piFBh6oF4YA9eWY3j3bk

Quelqu'un serait-il assez aimable pour me l'expliquer, je vous en remercie par avance.


Tout homme doit être poli ; mais il doit aussi être libre.

53 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
11 févr. 2013 à 08:36
Bonjour,
C'est normal tu fermes ton Form principal avec ce code: Me.Close()

Private Sub RbU_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbU.CheckedChanged
Me.Close()
Form2.Show()
End Sub


@+ Le Pivert
0
Bonjour et merci à tous,

monsieur Le Pivert à écrit quelque chose qui est peut-être la réponse, jaurais peut-être dû mettre Me.Hide() ?
donc ma question est comment peut-on faire passer une form devant un autre ?

Et aussi, peut cacher un groupBox ?

Monsieur cmarcotte, votre réflexion n'est pas idiote, car c'est vrai que charger un programme avec des caractères accentués, ce n'est pas une sinécure !

Je vous remercie beaucoup pour vous réponses.


Tout homme doit être poli ; mais il doit aussi être libre.
0
Re bonjour à tous,

j'ai fait les modifications que je croyais nécessaires, mais j'ai toujours le même problème.

Exception de HRESULT:0x80131047

Je vous remercie pour vos réponses et je vous joins la nouvelle version.

Public Class Form1

    Private Sub RbU_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbU.CheckedChanged
        Me.Hide()
        Form2.Show()
    End Sub

    Private Sub RbI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbI.CheckedChanged
        Me.Hide()
        Form3.Show()
    End Sub

    Private Sub RbR_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbR.CheckedChanged
        Me.Hide()
        Form4.Show()
    End Sub

    Private Sub RbP_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbP.CheckedChanged
        Me.Hide()
        Form5.Show()
    End Sub

    Private Sub BtnQuitter_Click(sender As System.Object, e As System.EventArgs) Handles BtnQuitter.Click
        Me.Close()
    End Sub
End Class


Public Class Form2
    Dim U, I, R, P As Single

    Private Sub RbRI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbRI.CheckedChanged
        Lbl1.Text = "Résistance en Ohms"
        Lbl2.Text = "Intensité en Ampères"
    End Sub

    Private Sub RbPR_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPR.CheckedChanged
        Lbl1.Text = "Puissance en Watts"
        Lbl2.Text = "Résistance en Ohms"
    End Sub

    Private Sub RbPI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPI.CheckedChanged
        Lbl1.Text = "Puissance en Watts"
        Lbl2.Text = "Intensité en Ampères"
    End Sub

    Private Sub BtnConv_Click(sender As System.Object, e As System.EventArgs) Handles BtnConv.Click
        If Lbl1.Text "Résistance en Oms" And Lbl2.Text "Intensité en Ampères" Then
            R = Txt1.Text
            I = Txt2.Text
            TxtResultat.Text = "La Tension est de " & (R * I).ToString & " Volts"
        ElseIf Lbl1.Text "Puissance en Watts" And Lbl2.Text "Résistance en Ohms" Then
            P = Txt1.Text
            R = Txt2.Text
            TxtResultat.Text = "La Tension est de " & (Math.Sqrt(P * R)).ToString & " Volts"
        ElseIf Lbl1.Text "Puissance en Watts" And Lbl2.Text "Intensité en Ampères" Then
            P = Txt1.Text
            I = Txt2.Text
            TxtResultat.Text = "La Tension est de " & (P / I).ToString & " Volts"
        End If
    End Sub

    Private Sub BtnSortir_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortir.Click
        Txt1.Text = ""
        Txt2.Text = ""
    End Sub

    Private Sub BtnSortirTension_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortirTension.Click
        Me.hide()
        Form1.Show()
    End Sub
End Class


Public Class Form3
    Dim U, I, R, P As Single

    Private Sub RbITP_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbITP.CheckedChanged
        Lbl1.Text = "Tension en volts"
        Lbl2.Text = "Puissance en Watts"
    End Sub

    Private Sub RbIPR_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbIPR.CheckedChanged
        Lbl1.Text = "Puissance en Watts"
        Lbl2.Text = "Résistance en Ohms"
    End Sub

    Private Sub RbITR_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbITR.CheckedChanged
        Lbl1.Text = "Tension en Volts"
        Lbl2.Text = "Résistance en Ohms"
    End Sub

    Private Sub BtnConv_Click(sender As System.Object, e As System.EventArgs) Handles BtnConv.Click
        If Lbl1.Text "Tension en volts" And Lbl2.Text "Puissance en Watts" Then
            U = Txt1.Text
            P = Txt2.Text
            TxtResultat.Text = "L'intensité est de " & (P / U).ToString & " Ampères"
        ElseIf Lbl1.Text "Puissance en Watts" And Lbl2.Text "Résistance en Ohms" Then
            P = Txt1.Text
            R = Txt2.Text
            TxtResultat.Text = "L'intensité est de " & Math.Sqrt(P / R).ToString & " Ampères"
        ElseIf Lbl1.Text "Tension en Volts" And Lbl2.Text "Résistance en Ohms" Then
            U = Txt1.Text
            R = Txt2.Text
            TxtResultat.Text = "L'intensité est de " & (U / R).ToString & " Ampères"
        End If
    End Sub

    Private Sub BtnSortir_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortir.Click
        Txt1.Text = ""
        Txt2.Text = ""
    End Sub

    Private Sub BtnSortirIntensité_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortirIntensité.Click
        Me.Hide()
        Form1.Show()
    End Sub
End Class


Public Class Form4
    Dim U, I, R, P As Single

    Private Sub RbRPI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbRPI.CheckedChanged
        Lbl1.Text = "Puissance en Watts"
        Lbl2.Text = "Intensité en Ampères"
    End Sub

    Private Sub RbRTI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbRTI.CheckedChanged
        Lbl1.Text = "Tension en Volts"
        Lbl2.Text = "Intensité en Ampères"
    End Sub

    Private Sub RbRTP_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbRTP.CheckedChanged
        Lbl1.Text = "Tension en Volts"
        Lbl2.Text = "Puissance en Watts"
    End Sub

    Private Sub BtnConv_Click(sender As System.Object, e As System.EventArgs) Handles BtnConv.Click
        If Lbl1.Text "Puissance en Watts" And Lbl2.Text "Intensité en Ampères" Then
            P = Txt1.Text
            I = Txt2.Text
            TxtResultat.Text = "La résistance est de " & (P / (I * I)).ToString & " Ohms"
        ElseIf Lbl1.Text "Tension en Volts" And Lbl2.Text "Intensité en Ampères" Then
            U = Txt1.Text
            I = Txt2.Text
            TxtResultat.Text = "La résistance est de " & (U / I).ToString & " Ohms"
        ElseIf Lbl1.Text "Tension en Volts" And Lbl2.Text "Puissance en Watts" Then
            U = Txt1.Text
            P = Txt2.Text
            TxtResultat.Text = "La résistance est de " & ((U * U) / P).ToString & " Ohms"
        End If
    End Sub

    Private Sub BtnSortir_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortir.Click
        Txt1.Text = ""
        Txt2.Text = ""
    End Sub

    Private Sub BtnSortirRésistance_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortirRésistance.Click
        Me.Hide()
        Form1.Show()
    End Sub
End Class


Public Class Form5
    Dim U, I, R, P As Single

    Private Sub RbPTR_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPTR.CheckedChanged
        Lbl1.Text = "Tension en Watts"
        Lbl2.Text = "Résistance en Ohms"
    End Sub

    Private Sub RbPTI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPTI.CheckedChanged
        Lbl1.Text = "Tension en Volts"
        Lbl2.Text = "Intensité en Watts"
    End Sub

    Private Sub RbPRI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPRI.CheckedChanged
        Lbl1.Text = "Résistance en Ohms"
        Lbl2.Text = "Intensité en Ampères"
    End Sub

    Private Sub BtnConv_Click(sender As System.Object, e As System.EventArgs) Handles BtnConv.Click
        If Lbl1.Text "Tension en Watts" And Lbl2.Text "Résistance en Ohms" Then
            U = Txt1.Text
            R = Txt2.Text
            TxtResultat.Text = "La puissance est de " & ((U * U) / R).ToString & " Watts"
        ElseIf Lbl1.Text "Tension en Volts" And Lbl2.Text "Intensité en Watts" Then
            U = Txt1.Text
            I = Txt2.Text
            TxtResultat.Text = "La puissance est de " & (U * I).ToString & " Watts"
        ElseIf Lbl1.Text "Résistance en Ohms" And Lbl2.Text "Intensité en Ampères" Then
            R = Txt1.Text
            I = Txt2.Text
            TxtResultat.Text = "La puissance est de " & (R * (I * I)).ToString & " Watts"
        End If
    End Sub

    Private Sub BtnSortir_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortir.Click
        Txt1.Text = ""
        Txt2.Text = ""
    End Sub

    Private Sub BtnSortirPuissance_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortirPuissance.Click
        Me.Hide()
        Form1.Show()
    End Sub
End Class



Tout homme doit être poli ; mais il doit aussi être libre.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 févr. 2013 à 11:07
Salut

d'abord quand tu écris me.hide ,la form devient
est caché mais elle est toujours en mémoire
tu as form1 ,form2 ,form3 ,form4 ,form5
quand tu lances ton prog form1 est chargé
ensuite tu cliques sur un des boutons
ce qui va charger form2 ou form3 etc
donc form1 va etre caché et form2 ou form3 etc
visible
maintenant je clique est des boutons
BtnSortirTension_Click
me.hide
form1.show
la form2 ou form3 va etre caché mais est toujours chargé
quand tu cliques sur
Private Sub BtnQuitter_Click(sender As System.Object, e As System.EventArgs) Handles BtnQuitter.Click
        Me.Close()
    End Sub


form1 se ferme c.a.d n'est plus en mémoire
mais les autres forms sont toujours chargés
modifie

 Private Sub BtnQuitter_Click(sender As System.Object, e As System.EventArgs) Handles BtnQuitter.Click
        For Each ctrl As Form In Application.OpenForms
            If Application.OpenForms.OfType(Of Form).Contains(ctrl) Then
                ctrl.Close()
            End If
        Next
    End Sub


d'après moi tu n'as pas besoin de 5 form
tu peux obtenir le meme résultat avec une form
et 4 panels
0

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

Posez votre question
Re bonjour,

merci énormément, car ça me permet de sélectionner n'importe quelle option dans mon programme, mais j'ai encore quelques lacunes dans le form2 qui pourtant est fait du même modèle que les autres form, donc dans le form2 je n'ai pas accès à la première option et le bouton pour revenir au menu est grisé, évidemment, je vais chercher l'erreur.

Merci encore.

Tout homme doit être poli ; mais il doit aussi être libre.
0
Bonjour dayvid.

Réponse différée à propos du "nous" et du "on". Le "nous" est le pluriel du "je". In fait donc référence à un groupe bien défini de personnes. Par contre, le "on" fait référence à tout le monde.

Cordialement.


Étant illettré, je signe d'une croix : ×
0
Bonjour Dayvid,

permets moi de répondre à ta question, il faut éviter en général d'utiliser le pronom on qui se conjugue comme il, mais surtout parce que c'est un pronom imbécile qui qualifie celui qui l'emploie, c'est ce que m'a appris mon instituteur quand j'avais 7 ans et ça m'a marqué pour le restant de ma vie.


Tout homme doit être poli ; mais il doit aussi être libre.
0
Bonjour Micoute.

Je lis dans votre code,
Public Class Form2
    Dim U, I, R, P As Single
'...............................
    Private Sub BtnConv_Click(sender As System.Object, e As System.EventArgs) Handles BtnConv.Click
        If Lbl1.Text "Résistance en Oms" And Lbl2.Text "Intensité en Ampères" Then
            R = Txt1.Text
            I = Txt2.Text
            TxtResultat.Text = "La Tension est de " & (R * I).ToString & " Volts"

D'après vos déclarations, R et I sont de type Single. Or vos lignes
R = Txt1.Text
I = Txt2.Text

en font des String. Et vous croyez que vb.net va avaler ça ?

Cordialement.


Étant illettré, je signe d'une croix : ×
0
Bonjour monsieur Zermelo,

je suis un peu surpris de ce que vous me dites là, car ça fonctionne dans tous les form, sauf le form2, mais sachant que Txt1 et Txt2 sont des TextBox, je ne vois pas pourquoi des single ne prendraient pas la valeur des TextBox,puisque VB fait sa petite cuisine interne.

Merci beaucoup de votre intervention, mais vous m'avez mis dans le doute, mais je pense que vous avez fait une confusion avec les labels !


Tout homme doit être poli ; mais il doit aussi être libre.
0
Ma remarque précédente vous a, j'imagine, fait comprendre qu'il vous faudra convertir en type Single les informations de type String délivrées par les TextBox. Mais cela ne suffira pas. En effet, certaines fautes de frappe rendent la conversion impossible. De plus, il vous faudra vérifier, lorsque la conversion est possible, qu'elle produise un réel strictement positif, pour éviter tout risque de dépassement de capacité.

Autre chose. Pourquoi afficher en toutes lettres les unités, au lieu de mettre leurs symboles normalisés.

Après réflexion, je pense qu'un seul formulaire devrait suffire.

Cordialement.


Étant illettré, je signe d'une croix : ×
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
11 févr. 2013 à 14:43
Merci des réponses.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 févr. 2013 à 15:02
si ton option strict est à OFF
mets le à On
et corrige ensuite tes erreurs
et en plus qui oblige dans le textbox Txt1
je vais taper un nombre
si je tape toto
R = Txt1.Text
ça plante R sera vraiment toto
donc on peut utiliser le Single.TryParse
ex
str as string
result as single
str = 100.34
if single.tryparse(str,result) then

end if 
0
Bonjour à nouveau, Micoute.

Il est vrai que, sans prise de précautions, Visual Basic est très laxiste. Il convertit tout ce qui bouge, mais sans que l'on sache comment, et cela peut provoquer des dysfonctionnement sans message d'erreur. De plus, les programmes ainsi construits seront à terme obsolètes.
Voici ces précautions.

Afficher l'explorateur de solutions si ce n'est déjà fait.
Faire un clic droit sur My Project, et cliquer sur Ouvrir.
Sélectionner l'onglet Compiler et
– mettre Option Explicit à On,
– mettre Option Strict à On,
– mettre Option Infer à Off,
– mettre Option Compare à Text si vous pensez avoir besoin de l'ordre alphabétique usuel.
Sélectionner l'onglet Compiler et désactiver Microsoft.VisualBasic.

Par ailleurs, j'ai l'honneur de vous faire savoir que le "grand robert" n'est pas d'accord avec votre instituteur.

Cordialement.


Étant illettré, je signe d'une croix : ×
0
Erreur !

C'est dans l'onglet Références que l'on désactive Microsoft.VisualBasic


Étant illettré, je signe d'une croix : ×
0
Bonsoir à tous et merci beaucoup,

j'ai essayé de faire une synthèse de tout ce que j'ai appris aujourd'hui, je ne mets que la form2, les autres étant sur le même modèle.

Public Class Form2
    Public U, I, R, P, Nbre1, Nbre2, Résultat As Single
    Dim Choix As Byte

    Private Sub RbRI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbRI.CheckedChanged
        If RbRI.Checked = True Then
            Lbl1.Text = "Résistance en Ohms"
            Lbl2.Text = "Intensité en Ampères"
            Choix = 1
        End If
    End Sub

    Private Sub RbPR_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPR.CheckedChanged
        If RbPR.Checked = True Then
            Lbl1.Text = "Puissance en Watts"
            Lbl2.Text = "Résistance en Ohms"
            Choix = 2
        End If
    End Sub

    Private Sub RbPI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPI.CheckedChanged
        If RbPI.Checked = True Then
            Lbl1.Text = "Puissance en Watts"
            Lbl2.Text = "Intensité en Ampères"
            Choix = 3
        End If
    End Sub

    Private Sub BtnConv_Click(sender As System.Object, e As System.EventArgs) Handles BtnConv.Click
        If Choix = 1 Then
            Single.TryParse(Txt1.Text, Nbre1)
            Single.TryParse(Txt2.Text, Nbre2)
            TxtResultat.Text = "La Tension est de " & CSng(Nbre1) * CSng(Nbre2) & " Volts"
        ElseIf Choix = 2 Then
            TxtResultat.Text = "La Tension est de " & Math.Sqrt(CSng(Nbre1) * CSng(Nbre2)) & " Volts"
        ElseIf Choix = 3 Then
            TxtResultat.Text = "La Tension est de " & CSng(Nbre1) / CSng(Nbre2) & " Volts"
        End If
    End Sub

    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        RbRI.Checked = False
        RbPR.Checked = False
        RbPI.Checked = False
    End Sub

    Private Sub BtnSortirTension_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortirTension.Click
        Me.Hide()
        Form1.Show()
    End Sub
End Class



Tout homme doit être poli ; mais il doit aussi être libre.
0
Non Micoute, ce n'est pas ça.

Le TryParse que shayW vous propose judicieusement teste si le texte Str peut être converti en Single

If Single.TryParse(str,result) then
    'La conversion est possible, et result en
    'est le résultat, qu'il n'y plus lieu de
    'convertir par la fonction CSng.
Else
    'La conversion est impossible. On envoie
    'un message d'erreur et on s'arrête pour
    'pleurer un bon coup. 
End If



Bon courage.

Étant illettré, je signe d'une croix : ×
0
Bonsoir et merci beaucoup,

décidément, j'ai encore plein de choses à apprendre et moi qui étais ravi d'avoir fini, mais bon, quand on à terminé un programme il faut bien en recommencer un autre et ainsi de suite ...

En fait, je serais plus intéresser par une astuce qui permette de taper un point ou une virgule et que le programme mette la ponctuation adéquate.

La fonction TryParse(), je n'y ai rien compris et c'est dommage, car je suis sûr que ça me simplifierait la vie.

Et encore merci à tous.


Tout homme doit être poli ; mais il doit aussi être libre.
0
Re bonsoir à tous et merci énormément,

je crois que j'ai compris, je vous envoie la dernière version.

Public Class Form2
    Public U, I, R, P, Nbre1, Nbre2, Résultat As Single
    Dim Choix As Byte

    Private Sub RbRI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbRI.CheckedChanged
        If RbRI.Checked = True Then
            Lbl1.Text = "Résistance en Ohms"
            Lbl2.Text = "Intensité en Ampères"
            Choix = 1
        End If
    End Sub

    Private Sub RbPR_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPR.CheckedChanged
        If RbPR.Checked = True Then
            Lbl1.Text = "Puissance en Watts"
            Lbl2.Text = "Résistance en Ohms"
            Choix = 2
        End If
    End Sub

    Private Sub RbPI_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RbPI.CheckedChanged
        If RbPI.Checked = True Then
            Lbl1.Text = "Puissance en Watts"
            Lbl2.Text = "Intensité en Ampères"
            Choix = 3
        End If
    End Sub

    Private Sub BtnConv_Click(sender As System.Object, e As System.EventArgs) Handles BtnConv.Click

        If Single.TryParse(Txt1.Text, Nbre1) And Single.TryParse(Txt2.Text, Nbre2) Then
            If Choix = 1 Then
                ' Résistance et Intensité
                TxtResultat.Text = "La Tension est de " & CSng(Nbre1) * CSng(Nbre2) & " Volts"
            ElseIf Choix = 2 Then
                ' Puissance et Résistance
                TxtResultat.Text = "La Tension est de " & Math.Sqrt(CSng(Nbre1) * CSng(Nbre2)) & " Volts"
            ElseIf Choix = 3 Then
                ' Puissance et Intensité
                TxtResultat.Text = "La Tension est de " & CSng(Nbre1) / CSng(Nbre2) & " Volts"
            End If
        Else
            TxtResultat.Text = "Vous devez entrer uniquement des nombres"
        End If
    End Sub

    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        RbRI.Checked = False
        RbPR.Checked = False
        RbPI.Checked = False
    End Sub

    Private Sub BtnSortirTension_Click(sender As System.Object, e As System.EventArgs) Handles BtnSortirTension.Click
        Me.Hide()
        Form1.Show()
    End Sub
End Class


C'est bien comme ça, qu'il faut procéder ?


Tout homme doit être poli ; mais il doit aussi être libre.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 févr. 2013 à 21:26
If Single.TryParse(Txt1.Text, Nbre1) And Single.TryParse(Txt2.Text, Nbre2) Then
If Choix = 1 Then
' Résistance et Intensité
TxtResultat.Text = "La Tension est de " & CSng(Nbre1) * CSng(Nbre2) & " Volts"

si Nbre2 et Nbre1 sont single pas besoin
de faire la conversion avec csng
donc
TxtResultat.Text = "La Tension est de " & Nbre1 * Nbre2  & " Volts"


la meme chose pour le reste
0
Finalement c'est encore plus simple que je croyais, mais c'est dans l'erreur qu'on progresse, n'est-ce pas ?

Merci immensément, je ne trouve pas de qualificatif plus fort pour exprimer ma reconnaissance.


Tout homme doit être poli ; mais il doit aussi être libre.
0
Rejoignez-nous