Importer des données depuis un fichier texte, Excel VBA

Importer des données depuis un fichier texte, Excel VBA

Voici un code VBA détaillé pour importer des données depuis un fichier texte dans Excel, avec des explications.
Code VBA pour importer des données depuis un fichier texte

Sub ImporterDonneesDepuisFichierTexte()
    ' Déclaration des variables
    Dim CheminFichier As String
    Dim DerniereLigne As Long
    Dim FichierTexte As Integer
    Dim Ligne As String
    Dim IndexLigne As Long
    Dim TableauDonnees() As String
    Dim Separateur As String
    ' Initialisation du chemin du fichier
    CheminFichier = "C:\chemin_vers_votre_fichier\votre_fichier.txt" ' Spécifiez le chemin complet du fichier texte ici
    ' Initialisation du séparateur (Tabulation, Virgule, Espace, etc.)
    Separateur = vbTab ' Pour les fichiers texte séparés par tabulation. Pour les fichiers CSV, utilisez "," ou ";" pour d'autres séparateurs.
    ' Ouvrir le fichier texte en mode lecture
    FichierTexte = FreeFile ' Renvoie le prochain numéro de fichier disponible
    Open CheminFichier For Input As FichierTexte ' Ouvre le fichier en mode Lecture
    ' Commence l'importation des données dans Excel
    IndexLigne = 1 ' Débute à la ligne 1 dans Excel (vous pouvez changer cette valeur pour commencer à une autre ligne)
    ' Boucle pour lire chaque ligne du fichier texte
    Do While Not EOF(FichierTexte) ' Boucle jusqu'à la fin du fichier
        Line Input #FichierTexte, Ligne ' Lire la ligne actuelle du fichier
        ' Séparer la ligne en utilisant le séparateur spécifié (par exemple, Tabulation, Virgule)
        TableauDonnees = Split(Ligne, Separateur)
        ' Boucle pour insérer chaque élément du tableau dans la cellule correspondante
        For i = LBound(TableauDonnees) To UBound(TableauDonnees)
            ' Placer les données dans Excel, à partir de la ligne IndexLigne et de la colonne i+1
            Cells(IndexLigne, i + 1).Value = TableauDonnees(i)
        Next i
        ' Passer à la ligne suivante dans Excel
        IndexLigne = IndexLigne + 1
    Loop
    ' Fermer le fichier après avoir lu toutes les données
    Close FichierTexte
    ' Alerte pour informer l'utilisateur que l'importation est terminée
    MsgBox "L'importation des données est terminée !", vbInformation
End Sub

Explication du Code :
1. Déclaration des Variables :

  • CheminFichier : Cette variable contient le chemin complet du fichier texte à importer.
  • DerniereLigne : Elle est utilisée pour stocker la dernière ligne utilisée dans Excel (bien qu’elle ne soit pas directement utilisée dans ce code, elle peut être utile pour d’autres manipulations ou pour ajouter des données à la fin d’une feuille).
  • FichierTexte : Elle stocke le numéro de fichier utilisé pour ouvrir le fichier texte.
  • Ligne : Elle sert à stocker temporairement chaque ligne lue du fichier.
  • IndexLigne : Cette variable représente le numéro de ligne dans Excel où les données seront placées. Elle commence à 1 (première ligne).
  • TableauDonnees : Ce tableau contient les données extraites de chaque ligne après séparation.
  • Separateur : Le caractère délimitant utilisé pour séparer les valeurs dans le fichier texte (par exemple, Tabulation, Virgule, etc.).

2. Définition du Chemin du Fichier :

  • La variable CheminFichier est initialisée avec le chemin du fichier texte. Vous devez remplacer « C:\chemin_vers_votre_fichier\votre_fichier.txt » par le chemin réel de votre fichier texte.

3. Ouverture du Fichier Texte :

  • La commande FichierTexte = FreeFile attribue un numéro de fichier libre.
  • La commande Open CheminFichier For Input As FichierTexte ouvre le fichier en mode Lecture (Input), ce qui permet de lire les données du fichier.

4. Lecture et Séparation des Données :

  • La boucle Do While Not EOF(FichierTexte) continue à lire les lignes du fichier jusqu’à la fin.
  • Line Input #FichierTexte, Ligne : Cette commande lit une ligne du fichier texte et la place dans la variable Ligne.
  • TableauDonnees = Split(Ligne, Separateur) : La fonction Split divise la ligne lue en un tableau de données (TableauDonnees), en utilisant le séparateur spécifié (par exemple, vbTab pour une tabulation ou « , » pour une virgule).

5. Insertion des Données dans Excel :

  • For i = LBound(TableauDonnees) To UBound(TableauDonnees) : Cette boucle parcourt tous les éléments du tableau TableauDonnees.
  • Cells(IndexLigne, i + 1).Value = TableauDonnees(i) : Les valeurs du tableau sont insérées dans les cellules d’Excel. IndexLigne détermine la ligne, et i + 1 spécifie la colonne où les données seront placées.
  • Après chaque ligne, IndexLigne est incrémentée (IndexLigne = IndexLigne + 1) pour passer à la ligne suivante dans Excel.

6. Fermeture du Fichier :

  • La commande Close FichierTexte ferme le fichier après avoir terminé la lecture.

7. Message de Confirmation :

  • MsgBox "L'importation des données est terminée !" affiche un message pour informer l’utilisateur que l’importation des données est terminée avec succès.

Ajustements pour Différents Séparateurs :

  • Fichier délimité par Tabulation (TSV) : Utilisez vbTab comme séparateur.
  • Fichier CSV (Comma-separated values) : Utilisez « , » comme séparateur.
  • Fichier délimité par des espaces : Utilisez  »  » comme séparateur.

Conseils :

  • Assurez-vous que le chemin du fichier est correct et que vous avez les permissions nécessaires pour y accéder.
  • Ce code suppose que chaque ligne du fichier texte correspond à une ligne dans Excel. Si la structure du fichier est différente (par exemple, plusieurs lignes dans un même enregistrement), vous devrez peut-être ajuster la façon dont les données sont lues et insérées dans Excel.
  • Si votre fichier est volumineux, vous pouvez envisager des optimisations de performance ou des traitements par blocs pour éviter les ralentissements.

Conclusion :
Ce script VBA est un excellent moyen d’importer des données structurées depuis un fichier texte dans Excel. Il peut être personnalisé pour gérer différents types de fichiers texte, avec des séparateurs variés.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x