XL 2013 importer un fichier csv dans un tableau

jocelcs

XLDnaute Nouveau
comment importer les données d'un fichier csv dans une variable tableau?
je m'explique :

mon fichier CSV de 100000 lignes délimité par des ";" est composé d'une multitude de données textes et numériques que je souhaite intégrées dans une variable tableau. Après avoir appliqué la fonction split à chacune de ces lignes, j'aimerai pouvoir traiter ce tableau pour le modifier.
 

jocelcs

XLDnaute Nouveau
merci pour ta suggestion mais power querry ne me permet pas de faire ce que je souhaite.
En effet, je veux vraiment importer toutes les valeurs dans un tableau, mais je veux derrière, traiter ces données, les modifier, en supprimer... et pour que le temps d'acquisition ne soit pas trop lent, j'ai vraiment besoin de trouver une solution pour importer ce fichier csv dans un tableau de variables. La solution que je propose ci-dessous me permet de faire ceci mais certaines lignes sont supprimées et n'apparaissent pas dans le tableau pour des raisons que je ne trouve pas...

VB:
Sub import()

    Dim Conn As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim Fichier As String
    Dim Chemin As String
    Dim rSQL As String
    Dim tbl() As Variant
    Dim i As Integer

    Chemin = "C:"
    Fichier = "nomfichier"

    'Mise en place de la connexion avec le fichier

    Set Conn = New ADODB.Connection
    Conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Chemin & ";Extended Properties=""text;HDR=no;FMT=Delimited(;)"""
    Conn.Open

    rSQL = "SELECT * FROM [" & Fichier & ".CSV]"
    Set Rst = New ADODB.Recordset
    Set Rst = Conn.Execute(rSQL)

    tbl = Rst.GetRows

    For i = 0 To UBound(tbl, 2)

        tbl(0, i) = Split(tbl(0, i), ";")

    Next
    Conn.Close


 End Sub
 

job75

XLDnaute Barbatruc
Bonjour jocelcs, D.D,

Si l'on veut ne pas avoir de problème avec les formats il vaut mieux ouvrir le fichier CSV avec Workbooks.OpenText.

Voyez le fichier .xlsm zippé joint qui filtre le tableau source sur les dates avec cette macro :
VB:
Sub Importer()
Dim mois$, chemin$, fichier$, ncol%, tablo, i&, n&, j%
mois = LCase([C3]) 'cellule à adapter
chemin = ThisWorkbook.Path & "\" 'à adapter
fichier = "Fichier CSV.csv" 'à adapter
If Dir(chemin & fichier) = "" Then MsgBox "Fichier '" & chemin & fichier & "' introuvable...": Exit Sub
Application.ScreenUpdating = False
Workbooks.OpenText chemin & fichier, Local:=True
With ActiveWorkbook.Sheets(1).UsedRange
    ncol = .Columns.Count
    If ncol = 1 Then ncol = 2
    tablo = .Resize(, ncol) 'matrice, plus rapide, au moins 2 éléments
    .Parent.Parent.Close 'fermeture du fichier CSV
End With
'---tableau des résultats---
n = 1
For i = 2 To UBound(tablo)
    If Format(tablo(i, 3), "mmmm") = mois Then 'date en 3ème colonne
        n = n + 1
        For j = 1 To ncol: tablo(n, j) = tablo(i, j): Next j 'copie
    End If
Next i
'---restitution---
With [G3] '1ère cellule, à adapter
    .Resize(Rows.Count - .Row + 1, Columns.Count - .Column + 1).ClearContents 'RAZ
    .Resize(n, ncol) = tablo
End With
End Sub
A+
 

Pièces jointes

  • Importer(1).zip
    19.2 KB · Affichages: 12

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali