Fichiers et dossiers

Lorsqu'on ouvre un fichier en Output :

Entrée/sortie dans un fichier

Fonction

Explication

Exemples

CurDir[$] Permet de récupérer le répertoire courant avec le chemin complet x = CurDir

x = CurDir ("D")

Dir[$] Permet de lister les fichiers d'un répertoire 1 par 1. Voir l'exemple plus bas.  
EOF , BOF End Of File , Begin Of File. Complexes, s'occupent de databases et RecordSet  
FileAttr Code de gestion et mode d'un fichier ouvert.  
FreeFile Détermine un numéro de fichier libre lors de l'ouverture NumFichier = FreeFile

Open "FICHTEST" For Output As NumFichier

Close NumFichier

Input Ouvre un fichier en lecture. Voir l'exemple plus bas.

Il existe également l'instruction Input, qui petmet de stocker souplement les données d'un fichier dans une variable. Voir également l'exemple plus bas et les détails dans l'aide

 
Loc Est sensé retourner la position actuelle du pointeur dans un fichier. Ca ne marche pas comme je veux.  
LOF Retourne la longueur en octets d'un fichier spécifié x = LOF(NuméroFichier)
Seek Permet de connaître ou de déterminer l'emplacement de la prochaine lecture ou écriture dans un fichier. L'exemple de l'aide est complexe mais contient beaucoup d'informations intéressantes.  
Line Input Permet de lire une ligne complète dans un fichier texte. Dans cet exemple, si le pointeur de fichier était par exemple au début de la 5ème ligne du fichier, cette ligne complète sera transférée dans la variable String TextLine.
Si on fait répète cette simple ligne, c'est chaque fois la ligne suivante qui est lue.
Line Input #1, TextLine
Tab Permet d'écrire dans un fichier (ou à l'écran) des tabulations)  

CHDIR : Identique à la commande CD du DOS

CHDIR "C:/REPERTOIRE"

Lorsqu'on désire faire référence à d'autres fichiers qui se trouvent dans le même dossier que la base de données, par exemple, une liaison automatique d'objet dans un champ, il est nécessaire de déterminer le dossier dans lequel est installé la base de données avec cette instruction, sinon, la référence au seul nom de fichier ne sera pas suffisante, car il n'est peut être pas placé dans le dossier de démarrage par défaut d'Access.

CHDRIVE change le lecteur courant

CURDIR$ renvoie le répertoire actuel

DIR$ comme la commande DIR, mais un seul fichier à la fois.

Exemple de Dir[$]

Sub Directory_Click ()
UnFichier = Dir("C:\*.*")
' Envoi du premier fichier existant
While Len(UnFichier) > 0
MsgBox UnFichier '
Tant que la longueur du fichier suivant est > 0
UnFichier = Dir 'C'est qu'il y en a d'autres, et donc on continue
Wend
MsgBox "Fin des fichiers spécifiés"
End Sub

La même chose, mais en remplissant une liste déroulante simple :

Me![LISListe].RowSource = ""
Fichier = Dir("c:\*.*") '
Trouve le premier fichier correspondant.dans c:\
If Len(Fichier) > 0 Then ' S'il existe au moins un fichier
Do
Me![LISListe].RowSource = Me![LISImport].RowSource & Fichier & ";"
Fichier = Dir '
Stocke le fichier suivant dans Fichier
Loop Until Len(Fichier) = 0 ' Continue.jusqu'a la fin des fichiers
End If

CHDIR : Se place dans un répertoire

MKDIR : Crée un répertoire

RMDIR : Supprime un répertoire

KILL : Efface un fichier

Exemple :

Kill "c:\atelier\sys2.mdb"

Ensuite, pour attraper un fichier, il suffit, sur l'événement Click de la liste LISListe de faire par exemple

Variable = LISListe

Name : Renomme un fichier

Name "C:\atelier\text.txt" As "C:\atelier\truc.bak"

Lecture dans un fichier-texte caractère par caractère jusqu'à la fin du fichier

Sub LectureFichier_Click ()
NumFichier = FreeFile
Open "c:\atelier\FTEST.TXT" For Input As #NumFichier
Do While Not EOF(NumFichier)
   Carac = Input(1, NumFichier)
   If Carac <> Chr(10) Then
      DonnéesTexte = DonnéesTexte & Carac
   Else
      MsgBox DonnéesTexte
      DonnéesTexte = ""
      Carac = Input(1, NumFichier)'
Une lecture bidon à cause des 2 caractères de fin de ligne
   End If
Loop
Close NumFichier
End Sub

Lecture des éléments d'un fichier dans une variable : Input

Sub Bouton0_Click ()
Dim Données As Variant
Open "c:\atelier\ftest.txt" For Input As #1 ' On aurait pu utiliser FreeFile
Do While Not EOF(1)
Input #1, Données
MsgBox Données
Loop
Close #1
End Sub

Ecriture dans un fichier avec Write

La principale différence entre Wite et Print, c'est que Write ajoute des guillemets autour de ce qu'il écrit dans le fichier. Print n'ajoute rien du tout.

Sub EssaiWrite ()
Open "c:\atelier\FTEST2.txt" For Output As 1
UNom = InputBox("Entrez votre nom.")
UAge = InputBox("Entrez votre âge.")
Write #1, UNom, UAge ' Va écrire "Defawes","30"
Close #1
End Sub

Ecriture dans un fichier avec Print

Sub EssaiPrint ()
Open "c:\atelier\FTest2.txt" For Output As #1
Print #1, "Texte"
Print #1, ' Insère une ligne vide
Print #1, "Texte 1", "Texte 2 un peu plus loin grâce à la virgule"
Print #1, "Texte 3 collé à"; "Texte 4 à cause du point-virgule"
Close #1
End Sub