Les fichiers de données aléatoires
Le sommaire :
Les fichiers aléatoires sont des fichiers dont le mode d’accès est appelé « à accès direct ».
Lorsque le fichier est ouvert, l’accès aux différentes lignes de ce fichier est réalisable à partir d’un numéro de ligne. Voici pourquoi le mode d’accès est « Accès direct ».
Dans ce cas de figure, la ligne est dite « Enregistrement ».
Il conviendra alors d’utiliser des lignes de même taille, c’est pourquoi nous allons utiliser un type personnalisé pour déclarer une variable qui servira d’accès au fichier.
Voici un exemple qui va permettre d’écrire le prénom, le nom et la ville pour 3 clients.
Public Type Personne
‘ déclaration des 3 variables contenues dans le type Personne
Prénom As String * 25
Nom As String * 25
Ville As String * 25
End Type
Sub Création()
‘ déclaration de la variable Client de type Personne
Dim Client
As Personne
‘Ouverture du fichier MesClients en mode accès direct
‘ Le mode d’accès est donc Random
Open
"c:\MesClients.txt" For Random As #1 Len = Len(Client)
‘ Ici, nous avons utilisé Len = Len(Client » pour définir la taille d’un enregistrement
‘Affectation des valeurs pour la ligne numéro 1
Client.Prénom
= "Georges"
Client.Nom
= "MARTIN"
Client.Ville = "ROCHEFORT"
‘ écriture de la ligne numéro 1
Put #1, 1, Client
‘Affectation des valeurs pour la ligne numéro 2
Client.Prénom = "Pascal"
Client.Nom = "DURAN"
Client.Ville = "LA ROCHELLE"
‘ écriture de la ligne numéro 2
Put #1, 2, Client
‘Affectation des valeurs pour la ligne numéro 3
Client.Prénom = "Jean-Paul"
Client.Nom = "DUPOND"
Client.Ville = "BORDEAUX"
‘ écriture de la ligne numéro 3
Put #1, 3,
Client
‘ Fermeture du fichier
Close #1
End Sub
Pour écrire un enregistrement, nous avons utilisé l’instruction Put.
La syntaxe :
Put NuméroCanal, NuméroEnregistrement, LigneAÉcrire
Voici maintenant comment lire dans un fichier aléatoire.
Dans l’exemple qui suit, nous allons ouvrir le fichier MesClients en mode « Accès direct », et nous allons lire l’enregistrement numéro 2 que nous afficherons dans une boîte de message.
Public Type Personne
‘ Déclaration des 3 variables contenues dans le type Personne
Prénom As String * 25
Nom As
String * 25
Ville As
String * 25
End Type
Sub Lecture()
‘ Déclaration de la variable Client de type Personne
Dim Client As Personne
‘ Ouverture du fichier MesClients en mode accès direct
Open
"c:\MesClients.txt" For Random As #1 Len = Len(Client)
‘ Lecture de l’enregistrement numéro 2
Get #1, 2, Client
‘ Fermeture du fichier
Close #1
‘ Affichage du contenu de la variable Client contenant l’enregistrement numéro 2
MsgBox (Client.Prénom + " " + Client.Nom + " " + Client.Ville)
End Sub
Pour lire un enregistrement de fichier ouvert en accès direct, nous avons utilisé l’instruction Get.
La syntaxe :
Get NuméroCanal, NuméroEnregistrement, VariableRéceptionEnregistrement
Dans cet exemple, nous allons gérer les coordonnées et les identifiants de clients.
Vous avez un classeur dont la principale feuille s’intitule LesClients, et 3 titres de colonnes, Identifiants, Noms et Prénoms.
La première macro s’intitule NouveauClient, elle est assignée au raccourci clavier CTRL +Y, elle permet d’insérer l’identifiant du nouveau client, son nom et son prénom dans une nouvel ligne de la feuille. Elle enregistre également ces informations dans un fichier de données intitulé clients.txt, mais dans ce fichier de données, on enregistre également le téléphone et l’adresse de messagerie du client…
Conclusion, dans le fichier de données, nous enregistrons 2 informations supplémentaires, le téléphone et l’E-Mail.
Le numéro d’enregistrement du client dans le fichier clients.txt correspond à son identifiant.
Dans la deuxième macro qui s’intitule Voir Client, assignée au raccourci clavier CTRL +T, nous affichons la totalité des informations du client correspondant à la position du curseur. Par conséquent, avant de lancer cette macro, vous devez d’abord positionner le curseur sur l’un des identifiants du tableau de la feuille LesClients.
Le code de la macro NouveauClient :
Public Type TypeClient
Identifiant As Integer
Nom As String * 25
Prénom As String * 25
Téléphone As String * 14
EMail As String * 25
End Type
Sub NouveauClient()
'
' NouveauClient Macro
' Macro enregistrée le 21/03/2008 par BOULANGER
'
' Touche de raccourci du clavier: Ctrl+y
' Déclaration d'une variable de type TypeClient
Dim Client As TypeClient
' Atteindre la première cellule de la feuille LesClients
Application.Goto Reference:="LesClients!RC"
' atteindre la nouvelle ligne du tableau client
' Donc, aller d'abord à la dernière cellule de la feuille
Range("a65536").Select
' Atteindre la dernière ligne de la région de données supérieure
Selection.End(xlUp).Select
' Passage à la ligne suivante
ActiveCell.Offset(1, 0).Select
' Enregistrement des données du nouveau client dans la variable Client
Client.Identifiant = InputBox("Veuillez saisir l'identifiant du client", "Identifiant")
Client.Nom = InputBox("Veuillez saisir le nom du nouveau client", "Nom du client")
Client.Prénom = InputBox("Veuillez saisir le prénom du nouveau client", "Prénom du client")
Client.Téléphone = InputBox("Veuillez saisir le téléphone du nouveau cleint", "Téléphone du client")
Client.EMail = InputBox("Veuillez saisir l'adresse de messagerie du nouveau client", "E-Mail")
' insertion des données dans la nouvelle ligne du tableau de la feuille
ActiveCell.Value = Client.Identifiant
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Client.Nom
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Client.Prénom
' Revenir à la première cellule de la nouvelle ligne
ActiveCell.Offset(0, -2).Select
' Ouverture du fichier de données clients.txt
Open "c:\clients.txt" For Random As #1 Len = Len(Client)
' écriture du nouvel enregistrement
Put #1, CInt(Client.Identifiant), Client
' Fermeture du fichier de données Clients.txt
Close #1
' Message de fin d'enregistrement
MsgBox ("L'enregistrement du nouveau client a été réalisé avec succès")
End Sub
Le code de la macro VoirClient :
Public Type TypeClient
Identifiant As Integer
Nom As String * 25
Prénom As String * 25
Téléphone As String * 14
EMail As String * 25
End Type
Sub VoirClient()
'
' VoirClient Macro
' Macro enregistrée le 21/03/2008 par BOULANGER
'
' Touche de raccourci du clavier: Ctrl+t
'
' déclaration d'une variable de type TypeClient
Dim Client As TypeClient
' récupération et conversion de l'identifiant 'identifiant en un entier
Dim Identifiant As Integer
Identifiant = ActiveCell.Value
' ouverture du fichier Clients.txt
Open "c:\clients.txt" For Random As #1 Len = Len(Client)
' Sélection de l'enregistrement correspondant au client du tableau dans la feuille
Get #1, Identifiant, Client
' Fermeture du fichier Clients.txt
Close #1
' Affichage de l'enregistrement
MsgBox ("Le client " + Client.Nom + " " + Client.Prénom + " Téléphone : " + Client.Téléphone + " E-Mail : " + Client.EMail)
End Sub
Philippe BOULANGER