Bonjour et bienvenue sur cette vidéo où nous allons voir ensemble comment importer un fichier csv où texte depuis Excel vba. Ceci nous allons le faire on important des données de contact depuis un fichier CSV dans notre base de données sur Excel automatiquement.
La mise en place du tableau
Nous allons commencer à mettre en place un tableau qui comporte les informations de contact. Et nous allons aussi ajouter une forme qui va représenter notre bouton.
Une fois notre tableau mise en place nous allons sélectionné l’emplacement des données dans notre tableau et lui donner un nom, dans notre exemple le champ je l’ai nommé importRange. ce champ nommé est important car c’est ici que nous allons placer les données qui se trouvent dans le fichier CSV ou le fichier texte.
Rechercher le fichier CSV
Alors afin de recherchez le fichier CS V depuis VBA nous allons créer un module dans ce module nous allons donc lui donner un nom de supp module qui sera import CSV, dans notre sebb nous allons donc créer 2 variables une qui sera le fils de dialogue qui est en fait l’explorateur de fichiers, et une autre variable qui sera du type String qui nous permettra le sauvegarder le chemin du fichier voulu
Sub importCSV()
Dim dialogBox As fileDialog
Set dialogBox = Application.fileDialog(msoFileDialogFilePicker)
Dim selectedFile As String
End Sub
Désormais que nous avons défini les variables nous allons ouvrir la boîte de dialogue ou le navigateur de fichiers plutôt et dire qu’il faut le filtrer sourd des fichiers du type CS V et nous n’allons pas accepter de multiples fichiers mais uniquement un seul fichier. Si un fichier est sélectionné alors on va tout simplement prendre le lien du fichier et le placer dans le String qu’on a créé qui est le selededFile.
With dialogBox
.Filters.Add "CSV", "*.csv", 1
.AllowMultiSelect = False
If .Show = True Then
selectedFile = .SelectedItems(1)
End If
End With
Importer les données dans Excel
Désormais que nous savons de quel fichier no us voulons transmettre les données dans notre tableau Nous allons dire à Excel vb à d’ouvrir le fichier ou le chemin le path a été gardé dans le select files, puis nous allons dire qu’il faut ouvrir le fichier et nous allons parcourir chaque ligne du fichier.
Pour chaque ligne qu’on a capturé dans le fichier nous allons dire qu’il faut séparer chaque mot de la ligne et le placer dans une array, afin de pouvoir délimiter les colonnes nous allons dire qu’il faut séparer les mots après le signe virgule.
une fois que nous avons rempli notre array nous allons les placer dans l’emplacement prévu dans notre tableau l’emplacement prévu c’est le champ nommé qu’on a défini et voilà nous avons importé les données d’un fichier externe dans notre tableau Excel.
If selectedFile <> "" Then
Open selectedFile For Input As #1
Dim rowNumber As Long
Dim lineFromFile As String
Dim lineItems As Variant 'array of string
Dim itteration As Integer
rowNumber = 1
Do Until EOF(1) 'false till end of file is reache then it will turn true
Line Input #1, lineFromFile ' reads a single line from an open sequential file
lineItems = Split(lineFromFile, ",")
For itteration = 0 To 4
Range("ImportRange").Cells(rowNumber, itteration + 1) = lineItems(itteration)
Next
rowNumber = rowNumber + 1
Loop
Close #1
End If
Conclusion
Comme on a pu le voir ensemble importer des données externes dans notre tableau n’est pas sorcier et plutôt facile à mettre en place alors je vous conseille de créer un tableau intermédiaire où vous allez donc importez vos fichiers vérifier si tout était bon une fois que tout et bon alors uniquement on va l’incorporer à notre base de données finale.
J’espère que cela vous a plu et que cela vous aidera et on se retrouve dans une prochaine vidéo allez salut tout le monde
bonjour je voudrais importer plusieurs CVS
quelqu’un aurait il la solution
Bonjour,
Merci beaucoup pour ce tutoriel vraiment très bien expliqué. Cela m’a beaucoup aidé.
Cependant, j’ai un problème lors de l’import dû au nombre d’itération différent par ligne sur mon CSV. Pourriez-vous m’aider pour résoudre ce soucis.
Car la fonction For / Next ne peut pas être utilisée dans ce cas présent.
En vous remerciant par avance
bonjour Danier.est ce possible de generer in document comme in contrat a traver une base exel
Il y a l’erreur 1004.
Je ne l’a comprend pas !
Bonjour Daniel,
Je vous remercie pour vos explications, j’ai mis en application ce code pour 26 colonnes sur 22 lignes et lorsque je lance le code il faut plusieurs minutes avant de d’avoir tout copier les données de mon fichier .CSV
quelle peut-être la raison de cette lenteur d’exécution ?
Cordialement
Fa
Bonjour Daniel, merci bcp pour la vidéo. j’ai essayé le code et ça marche super bien. Mais en même temps je suis en train de travailler sur un projet pour importer des données txt structurées différemment. C’est dire que dans mon fichier texte, il y a des lignes sur lesquelles des virgules peuvent se suivre (ce qui signifie qu’à l’import, les cellules correspondantes seront vides dans le classeur). J’aimerais savoir comment adapter le code pour pouvoir réussir l’import de ce genre de données. Merci bien