Le seul truc a faire pour que ce code marche correctement est d'activer la référence "Microsoft Scripting Runtime", cela permet d'utiliser FileSystemObject.
(Projet / Référence... / Cocher "Microsoft Scripting Runtime").
Source / Exemple :
Option Explicit
' Pour activer la référence "FileSystemObject" :
' Projet / Référence... / Cocher "Microsoft Scripting Runtime"
Public fso As New FileSystemObject
' Variables du fichier en cours :
Dim nChemin As String ' Chemin du dossier parent du fichier
Dim nTexte As String ' Texte du fichier en cours
Dim nTitre As String ' Nom du fichier en cours
Dim nPath As String ' Adresse complete du fichier en cours
Dim nName As String ' Nom de l'application
' Variables Height et Width de txtSaisie :
Dim hHeight As Integer
Dim hWidth As Integer
Private Sub Form_Load()
' Initialisation et mise en forme de txtSaisie
hHeight = 670
hWidth = 100
txtSaisie.Text = ""
txtSaisie.Top = 0
txtSaisie.Left = 0
txtSaisie.Height = Form1.Height - hHeight
txtSaisie.Width = Form1.Width - hWidth
' Initialisation des variables du fichier texte
nChemin = ""
nTexte = ""
nPath = ""
nTitre = "Sans titre"
nName = "Bloc-notes"
' Caption de l'application
Form1.Caption = nTitre & " - " & nName
End Sub
Private Sub Form_Resize()
' Mise en forme de txtSaisie,
' quand la fenetre change de taille
txtSaisie.Height = Form1.Height - hHeight
txtSaisie.Width = Form1.Width - hWidth
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim R
' Vérifie que la zone de texte n'est pas déjà vide
If txtSaisie.Text <> "" Then
' Vérifie que le texte a été modifié
If txtSaisie.Text <> nTexte Then
' Le texte a été modifié, donc demande si
' on veut enregistrer, ou pas, ou annuler l'opération
R = MsgBox("Le fichier texte " & nTitre & " a été modifié." & _
vbCrLf & vbCrLf & "Voulez-vous enregistrer les modifications ?", _
vbYesNoCancel + vbExclamation, nName)
' Si Oui, on enregistre
If R = vbYes Then
mnuEnre_Click
' Si Annuler, sortie
ElseIf R = vbCancel Then
Exit Sub
End If
End If
End If
' Quitte l'application
End
End Sub
Private Sub mnuAbout_Click()
frmAbout.Show vbModal, Me
End Sub
Private Sub mnuEnre_Click()
Dim strm As TextStream
Dim fNew As String
On Error GoTo Erreur ' Prise en charge des erreurs
' Vérifie si la zone de texte n'est pas vide
If txtSaisie.Text <> "" Then
' Verifie si le fichier existe déjà
If (fso.FileExists(nPath)) Then
' Verifie que le texte a changé
If txtSaisie.Text <> nTexte Then
' Si oui, enregistre les nouvelles
' données dans le fichier texte existant
Set strm = fso.OpenTextFile(nPath, ForWriting, False)
With strm
.Write (txtSaisie.Text)
.Close
End With
' Reformate le caption sans "*"
Form1.Caption = nTitre & " - " & nName
' Informations de la variable que le texte a changé
nTexte = txtSaisie.Text
' Si le texte n'a pas changer, aucun enregistrement
' et ouverture de msgbox
Else
MsgBox "Vous n'avez pas modifié le fichier texte", _
vbExclamation, nName
End If
' Si le fichier texte n'existe pas, le créer
Else
' Ouverture du CommonDialog pour enregistrer le fichier
CD.Filter = "Fichier Texte (*.txt)|*.txt;|"
CD.ShowSave
If CD.FileName <> "" Then
With fso
' Crée le nouveau fichier
fNew = .BuildPath(.GetParentFolderName(CD.FileName), _
CD.FileTitle)
Set strm = .CreateTextFile(fNew, True)
End With
With strm
' Ecrit le texte dans le fichier
.Write txtSaisie.Text
.Close
End With
' Modifie le Caption de la fenetre, par le nom du fichier
Form1.Caption = fso.GetBaseName(CD.FileName) & _
" - " & nName
' Information des variables
With fso
nChemin = .GetParentFolderName(CD.FileName)
nTexte = txtSaisie.Text
nPath = .GetAbsolutePathName(CD.FileName)
nTitre = .GetBaseName(CD.FileName)
End With
' Reformate le caption sans "*"
Form1.Caption = nTitre & " - " & nName
End If
End If
' Si elle est vide, msgbox
Else
MsgBox "Ce document est vide !", vbExclamation, nName
End If
Exit Sub ' Aucune erreur, donc sortie
Erreur:
Beep
MsgBox "Problème dans l'enregistrement du fichier texte", _
vbCritical + vbOKOnly, nName
End Sub
Private Sub mnuEnregs_Click()
Dim strm As TextStream
Dim fNew As String
On Error GoTo Erreur ' Prise en charge des erreurs
' Vérifie si la zone de texte n'est pas vide
If txtSaisie.Text <> "" Then
' Ouverture du CommonDialog pour enregistrer le fichier
CD.Filter = "Fichier Texte (*.txt)|*.txt;|"
CD.ShowSave
If CD.FileName <> "" Then
With fso
' Crée le nouveau fichier
fNew = .BuildPath(.GetParentFolderName(CD.FileName), _
CD.FileTitle)
Set strm = .CreateTextFile(fNew, True)
End With
With strm
' Ecrit le texte dans le fichier
.Write txtSaisie.Text
.Close
End With
' Modifie le Caption de la fenetre, par le nom du fichier
Form1.Caption = fso.GetBaseName(CD.FileName) & _
" - " & nName
' Information des variables
With fso
nChemin = .GetParentFolderName(CD.FileName)
nTexte = txtSaisie.Text
nPath = .GetAbsolutePathName(CD.FileName)
nTitre = .GetBaseName(CD.FileName)
End With
' Reformate le caption sans "*"
Form1.Caption = nTitre & " - " & nName
End If
' Si elle est vide, msgbox
Else
MsgBox "Ce document est vide !", vbExclamation, nName
End If
Exit Sub ' Aucune erreur, donc sortie
Erreur:
Beep
MsgBox "Problème dans l'enregistrement du fichier texte", _
vbCritical + vbOKOnly, nName
End Sub
Private Sub mnuNew_Click()
Dim R
' Vérifie que la zone de texte n'est pas déjà vide
If txtSaisie.Text <> "" Then
' Vérifie que le texte a été modifié
If txtSaisie.Text <> nTexte Then
' Le texte a été modifié, donc demande si
' on veut enregistrer, ou pas, ou annuler l'opération
R = MsgBox("Le fichier texte " & nTitre & " a été modifié." & _
vbCrLf & vbCrLf & "Voulez-vous enregistrer les modifications ?", _
vbYesNoCancel + vbExclamation, nName)
' Si Oui, on enregistre
If R = vbYes Then
mnuEnre_Click
' Si Annuler, sortie
ElseIf R = vbCancel Then
Exit Sub
End If
End If
' Nouvelle page
Form_Load
End If
End Sub
Private Sub mnuOpen_Click()
Dim strm As TextStream
On Error GoTo Erreur ' Prise en charge des erreurs
' Ouverture du CommonDialog, pour ouvrir un fichier texte
CD.DialogTitle = "Ouvrir un Fichier Texte"
CD.Filter = "Fichier Texte (*.txt)|*.txt;|"
CD.ShowOpen
' Si l'utilisateur a bien choisi un fichier,
' ouverture et lecture de celui-ci
If CD.FileName <> "" Then
Set strm = fso.OpenTextFile(CD.FileName) ' Ouverture
With strm
txtSaisie = .ReadAll ' Lit et inscrit dans txtSaisie
.Close ' Fermeture
End With
' Modifie le Caption de la fenetre, par le nom du fichier
Form1.Caption = fso.GetBaseName(CD.FileName) & _
" - " & nName
End If
' Information des variables qu'un nouveau fichier est lancé
nChemin = fso.GetParentFolderName(CD.FileName)
nTexte = txtSaisie.Text
nPath = fso.GetAbsolutePathName(CD.FileName)
nTitre = fso.GetBaseName(CD.FileName)
Exit Sub ' Aucune erreur, donc sortie
Erreur:
Beep
MsgBox "Problème dans l'ouverture du fichier texte", _
vbCritical + vbOKOnly, nName
End Sub
Private Sub mnuPrint_Click()
CD.ShowPrinter
End Sub
Private Sub mnuQuitter_Click()
Unload Me ' Passe par la procedure OnUnload
End ' Fermeture du programme
End Sub
Private Sub txtSaisie_Change()
' Si le texte a été modifie, ajoute "*" à la fin du nom
If nTexte <> txtSaisie.Text Then
Form1.Caption = nTitre & "* - " & nName
End If
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.