Passer au contenu

Extraire les données d’un fichier

Insérez dans une feuille de calcul des valeurs issues de fichiers texte externes.

En milieu professionnel, il est fréquent de devoir récupérer des fichiers de données au format Texte. Répartir ces données dans un tableur n’est pas évident. Tout dépend de la façon dont elles sont organisées dans le fichier texte.

Importez un fichier texte

Si vos données sont dans un fichier texte, ouvrez directement ce dernier dans Excel. Déroulez Fichier, Ouvrir. Dans la liste Types de fichiers, choisissez *.* (tous les fichiers) et sélectionnez votre fichier TXT. Excel ouvre alors l’assistant d’importation qui vous permettra de décrire l’organisation du fichier source. L’Assistant reconnaît deux types de fichiers : ceux de type Largeur fixe dans lesquels les champs (Nom, prénom, adresse) ont une longueur fixe ; et ceux de type Délimité (c’est le cas, notamment, des fichiers CSV) dans lesquels ces données sont séparées par des caractères spéciaux. Vérifiez que l’Assistant a reconnu le bon type de fichier et cliquez sur Suivant.

Créez des colonnes vides entre les champs

Si vous avez choisi le type Largeur fixe, l’Assistant tente de créer les colonnes de tableau en fonction du contenu du fichier texte. Mais le résultat est rarement satisfaisant. Ainsi, dans notre exemple, Excel propose de créer trois colonnes. Vous voyez que chaque nom sera précédé de deux espaces. Mieux vaut ajouter une colonne vide supplémentaire, facile à éliminer ultérieurement, et qui contiendra ces deux espaces. Pour cela, cliquez, dans la règle, sur le repère placé juste à gauche de la colonne de noms. Quand vous avez terminé, cliquez sur Suivant.

Importez une partie d’un fichier

Nous allons maintenant imposer une contrainte supplémentaire assez fréquente : il ne faut récupérer qu’une partie des lignes du fichier, celles dont un des champs répond à un critère précis. Mieux vaut, en effet, éviter de récupérer tout le fichier pour ne garder ensuite que certaines lignes : le procédé risque d’être lourd si le fichier source contient des dizaines de milliers de lignes ! La macro que nous vous proposons balaye entièrement le fichier texte et ne stocke dans la feuille Excel que les lignes souhaitées. Dans notre exemple, le fichier source, Laliste.txt, contient une liste de noms (un par ligne). Chaque ligne comporte un code de trois lettres, occupant les positions 7 à 9, et qui correspond à l’affectation des personnes. Nous ne voulons importer que les personnes d’affectation ABC. Dans un classeur vierge, ouvrez l’éditeur Visual Basic (Alt + F11), déroulez le menu Insertion, Module. Saisissez le listing ci-contre. Revenez à Excel et tapez Alt + F8, sélectionnez InsereTexte et cliquez sur Exécuter. Les données sont inscrites à partir de la cellule courante, sur trois colonnes (Code, Nom et prénom).

Quelques explications sur la macro

Pour pouvoir adapter la macro à vos propres besoins, il est important de saisir le rôle de quelques éléments clés. L’instruction Open “Laliste.txt” For Input As #1 ouvre le fichier Laliste.txt pour y lire (Input) des données. La boucle While Not EOF(1), qui se termine avec Wend, assure le balayage de toutes les lignes de Laliste.txt. Dans chaque ligne lue, on regarde l’affectation du client : c’est une chaîne de caractères qui commence à la position 7 et d’une longueur de 3 octets (Mid(Ligne, 7,3)). Si ce contenu est “ABC”, on extrait les différents champs de la ligne (code, nom, prénom), que l’on écrit dans des cellules successives. La propriété Offset permet de décaler chaque fois la cellule cible sans la sélectionner.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Étienne Oemichen