Positionner des données sur la prochaine colonne vide

Bonjour,

Nous devons importer le contenu de plusieurs CSV dans un fichier Excel.

Nous avons trouvé une macro qui fait ça assez bien, mais le problème est que le contenu de chaque CSV est mis l'un en-dessous de l'autre.

Nous aimerions en fait que dès qu'il prend un autre CSV, le contenu soit mis sur la colonne libre suivante.

Voici le code actuel de la macro :

Sub ImportCSVsWithReference()
'UpdatebyKutoolsforExcel20151214
    Dim xSht  As Worksheet
    Dim xWb As Workbook
    Dim xStrPath As String
    Dim xFileDialog As FileDialog
    Dim xFile As String

    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a folder [Kutools for Excel]"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    Set xSht = ThisWorkbook.ActiveSheet
    If MsgBox("Clear the existing sheet before importing?", vbYesNo, "Kutools for Excel") = vbYes Then xSht.UsedRange.Clear
    Application.ScreenUpdating = False
    xFile = Dir(xStrPath & "\" & "*.csv")
    Do While xFile <> ""
        Set xWb = Workbooks.Open(xStrPath & "\" & xFile)
        Columns(1).Insert xlShiftToRight
        Columns(1).SpecialCells(xlBlanks).Value = ActiveSheet.Name
        ActiveSheet.UsedRange.Copy xSht.Range("A" & Rows.Count).End(xlUp).Offset(1)
        xWb.Close False
        xFile = Dir
    Loop
    Application.ScreenUpdating = True
    Exit Sub
ErrHandler:
    MsgBox "no files csv", , "Kutools for Excel"
End Sub

Je joins un dossier avec des csv que nous devons importer.

Je vous remercie mille fois pour votre aide.

Bonne journée.

dadub

Essaye avec ça

Dim CL% 'déclare la variable CL pour identifier la dernière colonne

range("a:a").copy

With Sheets("Feuille1") 'on fait la boule

CL = Columns(256).End(xlToLeft).Column + 1 'on recherche la dernière colonne active, puis on ajoute une colonne

.Paste .Cells(CL) 'on colle la colonne

End With

Ppplll a écrit :

Essaye avec ça

Dim CL% 'déclare la variable CL pour identifier la dernière colonne

range("a:a").copy

With Sheets("Feuille1") 'on fait la boule

CL = Columns(256).End(xlToLeft).Column + 1 'on recherche la dernière colonne active, puis on ajoute une colonne

.Paste .Cells(CL) 'on colle la colonne

End With

Salut,

Un grand merci pour ta réponse.

Je le mets où ton code ? au début ou la fin de ma boucle ?

Encore merci.

David

C'est difficile à dire sans fichier, mais c'est cette ligne qui fait que ton code colle à la ligne en dessous:

"ActiveSheet.UsedRange.Copy xSht.Range("A" & Rows.Count).End(xlUp).Offset(1)"

En fait ça va jusqu’à la fin de ta colonne A, ça décale d'une cellule en dessous (la première vide du coup), et ça colle.

Avec le code que je t'ai mis, ça va chercher la dernière colonne non vide et ça décale d'une colonne sur la droite, donc la première vide.

En gros supprime la ligne qui ne va pas dans ton code (celle que je t'ai indiqué), met mon code, et personnalise le avec tes besoins.

Essaye et dis moi si ça fonctionne

Rechercher des sujets similaires à "positionner donnees prochaine colonne vide"