[VBA] Import données .csv (xlsx?)

Bonjour,

j'ai un document .csv que j'aimerais importer dans un nouveau document Excel, à la différence des .csv que j'utilisais jusqu'à présent, celui-ci n'est pas délimité (ou alors il l'est avec les ";" mais sans certitude).

J'ai une macro qui me permet de l'importer dans mon document, la voici :

Public Sub import_data()
Dim lr%, dbl2%, cib%, cib1%, cib2%, cib3%, cib4%, cib5%, cib6%, cib7%, cib8%, lbp%, compteur%
Dim dbl As Range

Application.ScreenUpdating = False

    Dim mypath As String
    Dim myfile As String

On Error GoTo Erreur

        Application.FileDialog(msoFileDialogFilePicker).Show
        myfile = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)

    With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;" & myfile, _
        Destination:=Range("$A$1"))
        .TextFileColumnDataTypes = _
                    Array(xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, _
                    xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, _
                    xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat)
        .TextFileCommaDelimiter = True
        .TextFilePlatform = 65001
        .TextFileDecimalSeparator = ";"
        .Refresh
    End With

Application.ScreenUpdating = True

Erreur:
    MsgBox "Une erreur est survenue lors de l'import des données ; vérifiez que le document source est fonctionnel"
    Application.ScreenUpdating = True
    Exit Sub
End Sub

Malheureusement, l'import se fait mal et toutes les données inscrites dans la première colonne.

Comment vous-y prendriez-vous ?

Je joins à ce post le document à importer ("HABREF_50") Téléchargeable sur le site de l'INPN MNHM (

Et mon document de travail qui illustre le résultat que j'obtiens..

L'objectif c'est d'avoir les données du document "HABREF_50" dans l'onglet "HABREF_50" de mon document.

Je précise, un copier-coller fonctionne très bien, mais j'aimerais passer par un import, pour m'assurer que la feuille est bien vierge avant l'import (surtout si je ne suis pas seul à l'utiliser).

Je profite de ce post pour savoir comment vous y prendriez s'il s'agissait d'un document xlsx ? J'ai déjà eu le problème et ne m'y suis plus penché, mais je sais que je vais prochainement avoir le même soucis avec ce format de document.

Merci de votre attention !

Bonne journée

Bonsoir Le Drosophile le forum

là plus le temps mais je regarderai demain

a+

Papou

Bonsoir,

D'accord! Merci

Bonsoir Le Drosophile

Pour ta procédure import essaie cela :

Public Sub import_data()
  Dim NomFic As String, Pos As Integer
  nf = Application.GetOpenFilename("Fichiers Csv,*.csv")
  If Not nf = False Then
    Workbooks.Open Filename:=nf, local:=True
    Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    ' Récupérer la position du dernier anti-slash
    Pos = InStrRev(nf, "\")
    ' Récupérer le nom du fichier
    NomFic = Mid(nf, Pos + 1, Len(nf) - Pos)
    ' Fermer le fichier CSV
    Workbooks(NomFic).Close SaveChanges:=False
  End If
End Sub

Bonne fin de journée

Bonjour Le Drosophile le forum

bon je ne sais pas si j'ai compris ce que tu veux, mais tu as les deux possibilités.

ou tu copies les données dans la feuille HAREF_50 ou tu copies la feuille et dans ce cas là tu as une feuille en plus

bref tu regarderas dans la macro il y a ces deux lignes

'wbks.ActiveSheet.Copy wbkc.Sheets(fe)           ' je ne savais pas ce que tu voulais alors tu as les deux possibilités
        wbks.ActiveSheet.Cells.Copy wbkc.Sheets(fe).Cells

si tu veux copier dans la feuille actuelle HAREF_50 tu laisses comme c'est là, autrement si tu veux une feuille en plus tu retires l'apostrophe devant 'wbks.ActiveSheet.Copy wbkc.Sheets(fe) et tu en mets un devant 'wbks.ActiveSheet.Cells.Copy wbkc.Sheets(fe).Cells

1) tu décompresses le zip sur ton bureau, tu ne l'ouvres surtout pas en temporaire.

2)tu ouvres ensuite le dossier

3) tu ouvres le fichier Import "habref_travail V1.xlsm" et tu importes ton fichier

voilà à toi de tester et tu me redis

a+

Papou

Bonjour,

Merci beaucoup pour votre aide !

Si j'ai bien compris, la macro proposée par Patty5046 génère une nouvelle feuille. Mais il est adaptable.

Celle proposée par paritec réalise exactement ce que je cherchait à faire, pour mes 3 sources de données.

C'est tout ce qu'il restait de ce côté là de mon projet, merci !

Bonne journée !

Rechercher des sujets similaires à "vba import donnees csv xlsx"