Fichiers : Ouverture et enregistrement

Leçons de programmation Visual Basic

Un programme a parfois besoin d'accéder à des fichiers en lecture et en écriture (comme un traitement de texte par exemple). On peut pour faire cela, soit utiliser les commandes des contrôles de Visual Basic, soit programmer un enregisrement de fichier soi-même, ayant une extension propre au programme (comme .doc pour MSWord).

Fichiers texte :

Vous disposez de deux outils différents pour programmer un logiciel basé sur le traitement de texte : pour le traitement de texte de base, utilisez le contrôle textbox, en lui attribuant la valeur True à la propriété Multiline. Pour du traitement avancé, polices, taille, style, marges, exposant... préférez le contrôle RichText de microsoft.

TextBox :
Il n'y a pas de commande toute prête pour charger un fichier texte. De plus, la taille de celui-ci ne doit pas excéder 65000 caractères, sinon le contrôle génère une erreur. On doit donc utiliser une procédure, placée dans un menu par exemple, telle que :

Placez sur une feuille nommée Form1 un contrôle Text1 multilignes ainsi qu'un contrôle Microsoft Common Dialog Control (disponible dans les composants (Ctrl+T)) que vous appelerez cd. Vous pouvez aussi ajouter un bouton de commande et lui associer ce code à sa procédure Click.

On Error Resume Next 'Si erreur, passer à la commande suivante.
Dim FileName As String
'Déclaration de la variable contenant le nom du fichier
Form1.cd.Filename = "" 'Boite de dialogue commune : remise à zéro du nom de fichier
Form1.cd.ShowOpen 'Affichage d'une boîte "Ouvrir"

If
Err <> 32755 Then
' L'utilisateur a cliqué sur Annuler. Donc :
    Exit Sub
'Terminer la procédure
End If


FileName = cd.Filename 'Enregistrement de la variable Filename

' Si le fichier dépasse 65 Ko, il est trop gros. Annuler l'opération.

If FileLen(FileName) > 65000 Then
    MsgBox " Le fichier est trop grand pour être ouvert."
    Exit Sub
'Sortir de la procédure
End If


Open Filename For Input As #1 'Ouvre le fichier
    If Err Then
        MsgBox "Impossible d'ouvrir le fichier: " + Filename
        Exit Sub
    End If

    Screen.MousePointer = 11
'Pointeur de la souris en sablier.
    Text1.Text = Input(LOF(1), 1) 'Chargement du contenu du fichier
Close #1 'Fermeture du fichier.
'Réinitialise le pointeur de la souris. Le Chargement est terminé...
Screen.MousePointer = 0

RichText :
Beaucoup plus simple d'enregistrer un fichier avec un tel contrôle puisq'une commande est disponible pour cela. C'est pourquoi je le préconise même pour les petits programmes (qui peut le plus peut le moins) sauf si vous visez la taille minimale. Voici la commande d'un contrôle RichTextBox nommé rtb, pour ouvrir :

CommonDialog.filename = ""
CommonDialog.ShowOpen
rtb.filename = CommonDialog.filename

Attention, à partir de Windows 2000, la commande est différente : il faut utiliser LoadFile :

rtb.LoadFile = CommonDialog.filename, rtfText

Voici la procédure d'enregistrement du document : on utilise SaveFile :

On Error Resume Next 'Pour gérer l'erreur en cas de clic sur Annuler
fMainForm.dlgCommonDialog.CancelError = True 'Génère une erreur si on clique sur annuler
fMainForm.dlgCommonDialog.Flags = &H208002 'Propriétés de la boîte de dialogue :
' nom long = &H200000
' style de l'explorateur = &H80000
' message pour ecraser un fichier existant = &H2
' On additionne les propriétés si on en veut plusieurs...


fMainForm.dlgCommonDialog.Filter = "Document texte riche (*.rtf)|*.rtf"
'Filtre de document, n'affiche que ceux d'extension .rtf

fMainForm.dlgCommonDialog.filename = "Fichier.rtf" 'nom par défaut
'
fMainForm.dlgCommonDialog.ShowSave 'affiche la boîte de dialogue enregistrer sous
sFile = fMainForm.dlgCommonDialog.filename
'enregistre le nom de fichier
complet dans sFile (ex : "C:\doc.rtf")

frmMain.ActiveForm.rtb.SaveFile (sFile) 'Enregistre le fichier grâce à SaveFile.

Cette procédure est beaucoup plus simple que celle du contrôle textbox. De plus, la taille des fichiers n'est pas limitée à 65 Ko.

Fichiers images :

Vous pouvez faire du traitement d'image dans un contrôle PictureBox. Il possède des fonctions permettant l'ouverture et l'enregistrement de fichiers. Ainsi, utilisez la commande LoadPicture :

Picture1.Picture = LoadPicture([stringexpression])

Cet exemple charge dans le contrôle picture1 l'image dont le chemin est spécifié entre parenthèses :

Picture1.Picture = LoadPicture("C:\Windows\Clouds.bmp")

Vous pouvez ensuite utiliser le contrôle PictureBox, pour modifier l'image, ceci sera étudié plus tard, dans une leçon spéciale.

Pour enregistrer l'image du contrôle PictureBox, procédez comme suit :

SavePicture Picture1.Picture, "C:\Windows\Clouds.bmp"

Ainsi j'enregistre dans le fichier clouds.bmp l'image contenue dans le contrôle picture1, à l'aide d'une commande de visual basic.