Import fichier CSV

40202.csv (5.70 Ko)

Bonjour à tous,

Je dispose d'un fichier CSV avec comme séparateur ";" je souhaiterais alimenter une variable de type tableau avec la totalité de ce contenue en intégrant le délimiteur.

rep==> Le chemin du répertoire parent

fic ==> le nom du fichier avec l'extension

J'ai essayé la méthode ADO:

Sub extraction(rep, fic)
    Dim CnXL As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strSQL As String

    CnXL = "Driver={Microsoft Text Driver (*.txt; *.csv)};""Dbq=" & rep & ";Extensions=asc,csv,tab,txt"
    CnXL.Open
    strSQL = "SELECT * FROM [" & fic & "]"

    Set rst = CnXL.Execute(strSQL)
    rec(0) = rst.GetRows
    rst.Close
    CnXL.Close

    Set rst = Nothing
End Sub

J'ai aussi essayé la méthode "OpenText" avec delimiteur pour faire :

rec(0)=Activesheet.range("A1").currentregion

Quand j'ouvre le fichier en double cliquant dessus, ce fichier ce convertit automatiquement mais quand je l'ouvre avec VBA peut importe la méthode utilisé celui ci s'ouvre avec la mise en forme d'origine du CSV ( sans séparation).

Mais je n'arrive pas à récupérer les informations bien délimité, je vous mets le fichier csv en pièce jointe.

Merci.

Bonjour,

De mon coté l'ouverture par vba d'un csv à point-virgule fonctionne avec cette ligne :

Sub Macro2()

    Workbooks.OpenText Filename:="C:\Users\desktop\Monfichier.csv", Origin:=xlWindows, _
                StartRow:=1, DataType:=xlDelimited, Semicolon:=True, local:=True

End Sub

Bonjour Xmenpl,

Effectivement lors de mon test j'avais plus d'argument et sa ne fonctionnait pas, mais merci à toi ta méthode fonctionne, impec

Workbooks.OpenText Filename:=NomRepertoire & NomFichier, _

Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _

xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _

Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1))

Bonjour Florian, Bonjour Xmenpl

ensuite, il suffit de mettre les données dans le tableau

Sub importCSV()

    donnees = Application.GetOpenFilename("Text Files (*.csv), *.csv")
    If donnees = False Then Exit Sub
    Workbooks.OpenText Filename:=donnees, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Semicolon:=True, local:=True
    tableau = Cells(1, 1).CurrentRegion

    Debug.Print tableau(1, 1), UBound(tableau) & " lignes", UBound(tableau, 2) & " colonnes"

End Sub

Bonjour et merci Steelson,

du coup j’ai créer une fonction import avec le code de Xmenpl et j’ai écris dans une boucle :

For i=o to nb
Rec(nb)=import(nom)
Next i
Rechercher des sujets similaires à "import fichier csv"