VB: Afficher ses propres erreurs de création de formulaire

Résolu
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   -  
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai crée une application vb.
En dehors d'un "Sub" ou d'une Fonction, j'ai tapé
Public test = System.IO.File.ReadAllText("C:\Test.txt")

Et dans un sub:
MsgBox(test)

Tout se déroule bien si le fichier existe, mais, si il n'existe pas, l'erreur
"Une erreur est survenue lors de la création du formulaire"
s'affiche en mode déboguage, et
"L'application a cessé de fonctionner..."
en mode "normal".
Je voudrais savoir comment faire pour que même si le fichier n'existe pas, démarrer l'application et par exemple afficher une
MsgBox("Le fichier n'existe pas!")
.
Je connais
On error GoTo erreur
qui marche très bien à l'intérieur d'un sub, mais là, comme je l'ai dit, c'est à l'extérieur.
Merci de votre aide.
A voir également:
  • VB: Afficher ses propres erreurs de création de formulaire
  • Vb - Télécharger - Langages
  • Vb cable - Télécharger - Audio & Musique
  • Vb editor - Télécharger - Langages
  • Vb runtime - Télécharger - Divers Utilitaires
  • Vb express - Télécharger - Langages

11 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

C'est quel VB ? (VB6, VBA, VB.Net) ? Ça serait bien de le préciser, nous n'avons pas tous pris l'option "divination" dans notre cursus...

Il faut proscrire, autant que possible, les Goto dans un programme.

En VB6, il y a
On Error Resume Next
. On intercepte l'erreur s'il s'en produit une.

Sub test()

    On Error Resume Next
    MsgBox (test)
    
    If Err.Number <> 0 Then
        Mesbox ("Le fichier n'existe pas!")
        Exit Sub
    End If
    
End Sub


En VB.Net, on utilise le Try ... Catch ... (http://msdn.microsoft.com/fr-fr/library/bb727317.aspx et https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/try-catch-finally-statement)

0
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   16
 
Visual Basic (Microsoft Visual Basic 2010)
Comme je vous l'ai dit, la variable public est définie à l'extérieur d'un sub.
Donc, pas moyen d'utiliser un "On error quelque chose"
Merci de votre aide.
0
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   16
 
Et je connais aussi Try... Catch... mais je vous l'ai déjà dit, c'est à l'extérieur d'un sub, et ça ne marche donc pas mieux que
On Error GoTo error
ou encore
On Error Resume Next
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Et pourtant ...

MsgBox(test) est bien dans un Sub ? Non ? c'est bien ce Sub qui appelle la variable public ? Non ?

Il faut mettre le Try... Catch... dans le Sub qui appelle la variable.
0

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

Posez votre question
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   16
 
Non:
En dehors d'un "Sub" ou d'une Fonction, j'ai tapé 
Public test = System.IO.File.ReadAllText("C:\Test.txt")

On ne peut pas déclarer de variable public à l'intérieur d'un sub
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Merci, mais je connais la différence entre une variable déclarée public ou local, par contre toi tu ignores comment ça fonctionne.

C'est dans ta Sub que tu utilises ta variable public. C'est donc dans la Sub que tu la gères.
0
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   16
 
Je ne vois pas comment je peux la gérer alors que si le fichier n'existe pas, la variable n'est pas créée et le programme se ferme automatiquement en affichant une erreur.
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Ta variable public est déclarée où ? dans une classe ? un module ?

Sinon, un exemple :

Dans un module, ma variable public
Module Module1

    Public test As String

End Module


A l'ouverture du formulaire principale
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            Module1.test = System.IO.File.ReadAllText("C:\Test.txt")
            MsgBox(Module1.test)
        Catch ex As Exception
            MsgBox("Le fichier n'existe pas !")
        End Try

    End Sub
End Class


«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
0
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   16
 
Bonjour, voici les parties du code qui nous intéressent:

Public Class Form1
    Public test = System.IO.File.ReadAllText("C:\Test.txt")
    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MsgBox(test)
    End Sub
End Class
0
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   16
 
Sinon, je vais essayer ta technique.

Public Class Form1
    Public test
    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Try
        test = System.IO.File.ReadAllText("C:\Test.txt")
        MsgBox(test)
      Catch ex As Exception
        MsgBox("Impossible d'accéder à ""C:\Test.txt""")
    End Sub
End Class
0
Anonyme209 Messages postés 681 Date d'inscription   Statut Membre Dernière intervention   16
 
Merci, pour l'instant ça a l'air de marcher.
0