"Open n'est pas déclaré"

Résolu
natinusala Messages postés 72 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 1 février 2012 - 23 janv. 2009 à 18:01
natinusala Messages postés 72 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 1 février 2012 - 13 févr. 2009 à 00:30
Bonjour,

J'aimerai savoir comment écrire un fichier .txt, à savoir :

Supprimer les lignes 1,2,3
Editer les lignes 1,2,3

Mais le problême, c'est qu'il me met "Open is not declared. File I/O functionnality is avaible in the "Microsoft.VisualBasic" namespace"

J'utilise Microsoft Visual Basic 2008 Express edition

S'il vout plaît, c'est urgent !

117 réponses

cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
23 janv. 2009 à 18:43
Salut,


<hr size= "2" width="100%" />


Pour écrire dans un fichier :




' Instanciation et déclaration d'une variable


' pour écrire dans un fichier



Dim
 SW As New IO.StreamWriter( "D:\monfichier.txt" )

' Ecrit dans le fichier : Bienvenue sur
SW.WriteLine("Bienvenue sur")
' Ecrit à la ligne suivante : http://www.codes-sources.com/
SW.WriteLine("http://www.codes-sources.com/")

' On ferme le fichier
SW.Close()



<hr size ="2" width= "100%" />



Pour lire ce même fichier

' Instanciation et déclaration d'une variable
' pour lire le contenu du fichier
Dim  SR As New IO.StreamReader( "D:\monfichier.txt" )

' Boucle parcourant toutes les lignes du
' fichier
Do Until SR.Peek  = -1
     ' SR.ReadLine() retourne le contenu d'une
     ' ligne
     ' au prochain SR.ReadLine(), on récupèrera
     ' la ligne suivante
     MsgBox(SR.ReadLine())

     ' Dans cet exemple, on affichera : Bienvenue sur
     ' puis : http://www.codes-sources.com/
Loop

' On ferme le fichier
SR.Close()







<hr size="2" width="100%" />
++

Fauve

<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
26 janv. 2009 à 18:43
Salut,

Il faut alors adapter la façon de lire le fichier. Voici une fonction dont tu envois le chemin d'accès complet du fichier à lire en paramètre et il te retourne la totalité du contenu du fichier.





Public Function
 LireFichier(ByVal FileName As StringAs String
     Dim SR As New IO.StreamReader(FileName)

     Return SR.ReadToEnd()

     SR.Close()
End Function



<hr size= "2" width="100%" />




Syntaxe :









TextBox1.Text = LireFichier( "D:\test.txt" )



RichTextBox1.Text = LireFichier("D:\test.txt")





<hr size="2" width="100%" />


++

Fauve

<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
26 janv. 2009 à 21:46
Si tu souhaites enregistrer ça ne pose aucun problème car juste avant la fin de la fonction, je fais SR.Close() donc le fichier n'est plus utilisé.

Ensuite pour écrire le contenu de la TextBox ou RichTextBox :


<hr size= "2" width="100%" />







Public Function
 EcrireFichier(ByVal FileName As StringByVal Texte As StringOptional ByRef MsgErreur As String  =  "" ) As Boolean

     ' Try Permet d'intercepter tout erreur qui se produirait
     ' pendant l'exécution du programme pour le code se trouvant
     ' entre Try et Catch ex As Exception
     Try
          ' Ouvre ou crée le fichier pour enregistrer
          Dim SW As New IO.StreamWriter(FileName)
          ' Ecrit le contenu de la variable dans le fichier
          SW.WriteLine(Texte)
          ' On ferme le fichier
          SW.Close()

          ' On retourne True car l'enregistrement
          ' s'est bien passé
          Return True

          ' Si une erreur vient à se produire par exemple,
          ' Le fichier est cours d'utilisation par un autre
          ' processus
     Catch ex As Exception
          ' On stocke le message de l'erreur dans la variable
          ' MsgErreur ce qui permet de pouvoir connaitre la
          ' raison de l'erreur
          MsgErreur  =  ex.Message

          ' On retourne False car l'enregistrement ne s'est
          ' pas bien passé
           Return False
     End Try

End Function



<hr size = "2" width= "100%" />



Syntaxe :






EcrireFichier( "D:\test.txt" , TextBox1.Text, MessageErreur)



EcrireFichier("D:\test.txt", RichTextBox1.Text, MessageErreur)





Retourne True ou False cela dépend si l'enregistrement c'est bien passé.

Si la fonction EcrireFichier retourne
False
, tu peux utiliser la variable MessageErreur de type String pour savoir quelle erreur a été rencontré.

++

Fauve

<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
27 janv. 2009 à 21:13
Salut,

Voici un exemple de code (à mettre l'évènement Click d'un bouton) :





Dim
 Ofd As New OpenFileDialog

' Affiche un message d'avertissement si l'utilisateur
' spécifie un nom de fichier inexistant
Ofd.CheckFileExists =   True

' Affiche un message d'avertissement si l'utilisateur
' spécifie un chemin d'accès inexistant
Ofd.CheckPathExists  = True

' Permet de choisir les fichiers qui doivent être affichés
' ici, on affiche tous les fichiers sans exceptions
Ofd.Filter =   "*.*|*.*"

' On définit le répertoire affiché au démarrage
' Ici, c'est le répertoire Mes Documents
Ofd.InitialDirectory  = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

' On affiche la boîte de dialogue et on teste si l'utilisateur
' a cliqué sur OK
If  Ofd.ShowDialog()  = Windows.Forms.DialogResult.OK Then
     ' On affiche le chemin d'accès complet du fichier
     ' dans la TextBox
     TextBox1.Text =  Ofd.FileName
End If





++

Fauve

<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
3

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

Posez votre question
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
28 janv. 2009 à 13:31
Salut,

Voici comment récupérer le message de l'erreur avec la fonction EcrireFichier :





Dim
 Erreur As String =   ""

If  EcrireFichier(TextBox1.Text, RichTextBox1.Text, Erreur) Then
     MsgBox("ecriture réussie!")
Else
     MsgBox("Le fichier n'as pas été enregistré à cause de l'erreur: " & Erreur)
End If





++

Fauve

<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
28 janv. 2009 à 13:39
Pour le problème avec l'instruction SR.Close(), cela vient peut être que quand on fait Return, le programme croit qu'on est arrivé à la fin de la fonction donc il fait pas SR.Close(). Ça mettait déjà arrivé...





Public Function
  LireFichier(ByVal FileName As StringAs String
     Dim SR As New IO.StreamReader(FileName)
     Dim str As String

     str =  SR.ReadToEnd()

     SR.Close()

      Return  str
End Function

++

Fauve





<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
3
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
28 janv. 2009 à 19:20
Re,

Dans la procédure ton bouton "Ouvrir" tu met :
On Error resume Next
au début de ta procédure et:
On Error Goto 0
A la fin

Ca te donnera un code comme ceci:

Sub
Button1_Click()

    On Error resume Next
    If OpenFileDialog1.ShowDialog() =  Windows.Forms.DialogResult.OK  Then
         ' On affiche le chemin d'accès complet du fichier
         ' dans la TextBox
         TextBox1.Text  =OpenFileDialog1.FileName
    End If
    On Error Goto 0
End Sub

LC 
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
3
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
28 janv. 2009 à 19:25
RE...

avec quelques explication c'est plus sympa.

Il faut que tu saches que pendant l'éxécution d'un code placé au milieu des intructions ci-dessous, s'il s eproduit une erreur le programme sautera directement à la fin de ce bloc sans renovyer d'erreur.

On Error resume Next'S'il se produit une erreur alors sauter sur la lignes "On Error Goto 0"  sans éxécuter le reste
.....
.....
.....
On Error Goto 0 ' A partir d'ici la gestion d'erreur est arrétée

Vala j"espère que c'est plus clair pour toi maintenant

LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
29 janv. 2009 à 00:21
C'est normal, il faut définir tous les filtres dans Filter, tu définis le filtre tous les fichiers, puis le filtre sur les fichiers txt et ainsi de suite donc c'est le dernier qui pris en compte

<hr size="2" width="100%" />Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
29 janv. 2009 à 00:22
Voici la syntaxe exacte :

Ofd.Filter =   "Tous les fichiers|*.*|Fichiers Textes|*.txt|Fichiers web HTML|*.html|Fichier web HTM|*.htm|Fichier web PHP|*.php"




<hr size ="2" width="100%" />Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
29 janv. 2009 à 00:51
Voici un début de code pour contrôler si l'extension du chemin d'accès du fichier dans TextBox1 est correct :

If My.Computer.FileSystem.FileExists(TextBox1.Text) =   True Then
     Dim Fi As New IO.FileInfo(TextBox1.Text)

     ' A faire pour toutes les extensions
     ' j'en ai fait seulement pour quelques unes
     If Fi.Extension  <>  ".txt" And Fi.Extension <> ".html" And Fi.Extension <> ".htm" And Fi.Extension <> ".php" And Fi.Extension <> ".phtml" Then
          Exit Sub
     Else
          ' Suite du code du bouton Ouvrir
     End If
End If

<hr size ="2" width="100%" />Pensez : Réponse Acceptée 
3
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
29 janv. 2009 à 08:03
ah ben je vois que ton application à cachement avancée depuis hier !! super!!

Pour afficher ton message de prise en charge place le juste avant le Exit Sub dans le bout de code de fauve

     If Fi.Extension <> ".txt" And Fi.Extension <> ".html" And Fi.Extension <> ".htm" And Fi.Extension <> ".php" And Fi.Extension <> ".phtml" Then
         msgbox("EasyTXT ne prend en charge que les extension ...........................")
         Exit Sub
     Else

Par contre dans ta dernière version je n'ai pas de filtre dans l'OpenFileDialog... je peux donc ouvrir tout les formats possible... Cette version inclus t-elle les filtres comme dit sur le message ?

Sinon ca parait pas mal maintenant même si on peu toujours améliorer . En revanche j'avais remarquer un petit truc de rien du tout dès le début mais qui gâche un peu l'esthétique de ton application c'est ta RichTextBox est plus grande que ta Form...Redimensionne donc la Form ou la Box pour un effet Visuel plus sympa

Ah oui un dernier petit truc utile pour pouvoir quitter ton appli "proprement" rajoute un dernier boutton que tu appelleras "Quitter" et dans lequel tu rajoute le code:
End
Ce bouton terminera donc ton programme de facon correct plutot que la croix de ton Form Windows

Voili voilou

LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
29 janv. 2009 à 11:32
Là, tu codes en VB.NET

<hr size="2" width="100%" />Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
29 janv. 2009 à 13:41
If
 MsgBox("Souhaitez-vous enregistrer le fichier ?", MsgBoxStyle.YesNo Or MsgBoxStyle.Information, "Enregistrement...") =  MsgBoxResult.Yes  Then
     ' Enregistrer le fichier
Else
     ' Effectuer une autre action (exemple : on tente d'ouvrir un fichier et on a cliqué sur non
     ' pour l'enregistrement du fichier >>> on ouvre le nouveau fichier)
End If





<hr size ="2" width="100%" />Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
30 janv. 2009 à 19:19
Salut,

Tu as l'air un peu perdu avec tout cà, je vais t'aiguiller :





Private Sub
 RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
     ' modif à True car une modification a été effectuée dans la
     ' RichTextBox
     modif =   True
End Sub

Private Sub Form1_FormClosing(ByVal sender As ObjectByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     If modif  = True Then
          ' Code pour enregistrer le fichier
     End If
End Sub







<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
30 janv. 2009 à 20:32
Oui, quand tu doubles clic sur une RichTextBox, tu as cet évènement qui apparait et ce que je veux c'est le code qui se trouve dedans.

<hr size="2" width="100%" />Pensez : Réponse Acceptée 
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
1 févr. 2009 à 10:47
Salut,

Voici un code que j'avais sous la main pour envoyer un mail. Il te reste plus qu'à le paramétrer :





Private Function
 EnvoyerMail() As Boolean

     Dim objMessage As System.Net.Mail.MailMessage
     Dim objAdrExp As System.Net.Mail.MailAddress
     Dim objAdrRec As System.Net.Mail.MailAddress
     Dim objSMTPClient As System.Net.Mail.SmtpClient

     Try
          objMessage =   New  System.Net.Mail.MailMessage()
          ' Expéditeur
          objAdrExp  = New System.Net.Mail.MailAddress( "xxx@hotmail.com" )
          ' Destinataire
          objAdrRec  =   New  System.Net.Mail.MailAddress("xxx@gmail.com")

          ' Adresse email de l'expéditeur
          objMessage.From  =  objAdrExp

          ' Adresse email du destinataire
          objMessage.To.Add(objAdrRec)

        



' Sujet de l'email

         objMessage.Subject =   "Ceci est un test"
         ' Définit si le message accepte le html
         objMessage.IsBodyHtml  = False

         ' Message de l'email
         objMessage.Body  =   "http://www.codes-sources.com/"










          ' Définit la priorité de l'email
          objMessage.Priority  =  Net.Mail.MailPriority.High

          ' Renvoi un email à l'expéditeur si la remise de l'email
          ' a échoué (il existe d'autres options comme recevoir
          ' un email si l'expéditeur a bien reçu celui envoyé)
          objMessage.DeliveryNotificationOptions =  Net.Mail.DeliveryNotificationOptions.OnFailure

          ' Définit le serveur smtp qui va envoyer l'email
          objSMTPClient =  New  System.Net.Mail.SmtpClient( "smtp.xxxx.xxx" , 587)
          ' Définit si l'envoi de l'email va utiliser une connexion SSL
          objSMTPClient.EnableSsl  = True
          ' Définit l'adresse email et le mot de passe
          objSMTPClient.Credentials =   New  Net.NetworkCredential( "ton adresse email" , "ton mot de passe")
          ' Envoi l'email
          objSMTPClient.Send(objMessage)
          ' Affiche un message si tout c'est bien passé
          MsgBox("Ok")
          ' La fonction retourne 1 si tout c'est bien passé
          Return True

     ' Si une erreur se produit
     Catch ex As Exception
          ' Affiche l'erreur rencontré
          MsgBox("Exception : " & ex.Message)
          ' La fonction retourne 0 s'il y a eu une erreur
          Return False
     End Try

End Function





++

Fauve




<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
3
natinusala Messages postés 72 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 1 février 2012
23 janv. 2009 à 19:03
Ouais super merciiiiii !
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
23 janv. 2009 à 19:53
N'oublies pas de cliquer sur le bouton Réponse Acceptée

++

Fauve

<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
0
natinusala Messages postés 72 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 1 février 2012
26 janv. 2009 à 18:33
Merci beaucoup (encore) mais j'aimerai que quand je clique sur Button1 il affiche le contenu de TextBox1.Text dans le RichTextBox1, et quand je clique sur le button2, il enregistre le contenu du RichTextBox1 dans le fichier TextBox1.Text (en remplacant tout évidemment)
0
Rejoignez-nous