Importation de fichier CSV, la première colonne vide n'est pas importée

Bonjour à tous,

Après 30 minutes de recherche, je n'arrive pas à trouver la réponse à mon problème... peut-être sauriez-vous m'aider?

La macro suivante me permet d'ouvrir un ou plusieurs fichier CSV et de l'ajouter à la dernière ligne d'une feuille de travail :

Private Sub ImportCSV()

    Set monWB = ActiveWorkbook
    Set maWS = Worksheets("Ma feuille de travail")

    csv = Application.GetOpenFilename(, , , , True)
    maWS.Activate
    For i = 1 To UBound(csv)
        Workbooks.OpenText Filename:=csv(i), Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True
            Set csvWB = ActiveWorkbook
            For Each f In csvWB.Worksheets
                csvWB.Sheets(1).UsedRange.Copy maWS.Cells(maWS.Range("A" & Rows.Count).End(xlUp).Row + 1, 1)
            Next f
        Application.CutCopyMode = False
        csvWB.Close False
    Next i
End Sub

Lorsque j'essaie d'importer le fichier csv suivant, la première colonne vide (avant le délimiteur, le fichier csv commence par le délimiteur) n'est pas prise en compte :

;dzadazd;liouiou;;jhgj54;qsdqsdq;;;;;dsqd12;qsdaa879;

Or, vous l'avez compris, j'ai besoin d'ajouter cette colonne vide à mon fichier.

Bien sûr je pourrais bidouiller et rajouter un espace au début de mon fichier, ou encore rajouter une colonne après l'import de mon CSV (avant de le recopier) mais j'aimerais avoir la solution la plus propre et évolutive (si j'ai un fichier CSV qui ne commence par ce délimiteur par exemple).

J'espère avoir été clair, si besoin je rajouterai un fichier d'exemple.

Merci d'avance pour votre aide

Bonjour

Dans VBA, la propriété UsedRange représente la plage dans une feuille de calcul qui contient des données. La plage utilisée commence à partir de la première cellule de la feuille de calcul où vous avez une valeur jusqu'à la dernière cellule où vous avez une valeur.

Si la première colonne est vide elle n'est pas prise en compte.

Merci pour ta réponse yal_excel. Néanmoins je ne vois pas comment cette propriété peut être appliquée à l’instruction OpenText.
J’ai l’impression que ça ne répond pas à mon problème

Bonjour,

Personne n’aurait la réponse à ce problème ?

Merci par avance

"csvWB.Sheets(1).UsedRange.Copy maWS.Cells(maWS.Range("A" & Rows.Count).End(xlUp).Row + 1, 1)"

Cette ligne copie "UsedRange" donc mon post précédent répond bien à la question. tu peux d'ailleurs ajouter :

csvWB.Sheets(1).UsedRange.Select

juste avant la ligne citée plus haut pour t'en convaincre.

Voici un code qui me semble répondre à ton besoin. J'ai juste défini autrement la plage à copier.

Private Sub ImportCSV()
  Dim monWB As Workbook, csvWB As Workbook, maWS As Worksheet, f As Worksheet
  Dim dl%, dc%, i%
  Dim csv As Variant

    Set monWB = ActiveWorkbook
    Set maWS = Worksheets("Ma feuille de travail")

    csv = Application.GetOpenFilename(, , , , True)
    maWS.Activate
    For i = 1 To UBound(csv)
        Workbooks.OpenText Filename:=csv(i), Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True
            Set csvWB = ActiveWorkbook
            For Each f In csvWB.Worksheets
'              csvWB.Sheets(1).UsedRange.Copy maWS.Cells(maWS.Range("A" & Rows.Count).End(xlUp).Row + 1, 1)
              dl = Range("B" & Rows.Count).End(xlUp).Row
              dc = Cells(1, Columns.Count).End(xlToLeft).Column
              csvWB.Sheets(1).Range(Cells(1, 1), Cells(dl, dc)).Copy maWS.Cells(maWS.Range("A" & Rows.Count).End(xlUp).Row + 1, 1)
            Next f
        Application.CutCopyMode = False
        csvWB.Close False
    Next i
End Sub
Rechercher des sujets similaires à "importation fichier csv premiere colonne vide pas importee"