XL 2019 Importer fichier csv sans consatener les colonnes

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour,
Cette macro ci dessous, me permet d'importer le contenu de plusieurs fichiers ".csv".
Ces fichiers ont plusieurs colonne et lignes avec des valeurs bien séparées.
Ce quie je ne comprends pas c'est qu'il me concatène toutes les colonnes entre elles.
Est il possible de faire une copie des cellule sans cioncatenage?
Merci et bonne soirée

VB:
Sub Bouton2_Cliquer()

Dim wbDest As Workbook, wbSource As Workbook
Dim wsDest As Worksheet, wsSource As Worksheet
Dim myFile As String, myPath As String

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set wbDest = ThisWorkbook
    Set wsDest = wbDest.Worksheets(1)
    myPath = "D:\Dossier Dest\"
    myFile = Dir(myPath & "*.csv")

    Do While myFile <> ""
        Set wbSource = Workbooks.Open(myPath & myFile)
        Set wsSource = wbSource.Worksheets(Split(myFile, ".")(0))
            wsSource.Unprotect
            wsSource.Cells(1).CurrentRegion.Copy

        wsSource.Range(Cells(1, 1), Cells(24, 24)).Copy
        With wbDest
            .Worksheets.Add After:=Worksheets(Worksheets.Count)
           If IsError(Evaluate("=" & wsSource.Name & "!A1")) Then
                ' si la feuille n'existe pas
               .ActiveSheet.Name = wsSource.Name
            Else
                .ActiveSheet.Name = wsSource.Name
            End If
            .Activate
            .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
        End With
        wbSource.Close
        myFile = Dir

    Loop

    Set wsDest = Nothing: Set wsSource = Nothing
    Set wbDest = Nothing: Set wbSource = Nothing
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub
 
Dernière modification par un modérateur:
Solution
Voici une 3ème méthode, très rapide aussi, par requête QueryTables :
VB:
Private Sub CommandButton3_Click()
Dim t, wbDest As Workbook, myPath$, myFile$, cn As Object, mySheetName$
t = Timer
Set wbDest = ThisWorkbook
'myPath = "D:\Lycée Stéphane Hessel\OneDrive - Lycée Stéphane Hessel\Karl EPS\Protocoles BGT BCP CAP 23\Import Fichiers Santorin\"
myPath = wbDest.Path & "\"
myFile = Dir(myPath & "*.csv")
Application.ScreenUpdating = False
For Each cn In wbDest.Connections: cn.Delete: Next 'supprime les connexions existantes
Do While myFile <> ""
    mySheetName = Left(myFile, Len(myFile) - 4)
    With wbDest
        .Activate
        On Error Resume Next
        .Sheets(mySheetName).Activate
        On Error GoTo 0
        If...

Cousinhub

XLDnaute Barbatruc
Bonsoir @Cousinhub

j'ai pas vu de fichier csv dans la discussion, juste des fichier xlsx ?
Ben, oui....
C'est bien là, la question...
Pourquoi demander à traiter un fichier csv, (qui n'a strictement rien à voir avec un fichier Excel, même si par malheur, µSoft a cru bon d'y ajouter une icône type "xls*" et de permettre son ouverture par Excel...)?
Et, à mon avis personnel, quelle utilité de mettre 144 fichiers "csv" dans UN fichier Excel de 144 ONGLETS?
Bref, je pense que carlos n'a vraiment pas donné la finalité...
Bonne soirée
 

laurent950

XLDnaute Barbatruc
Bonsoir @Cousinhub

Mon code fonctionne très bien avec un fichier au format dont l'extension est .csv
Il faudrait enregistrer le fichier .xls au format .csv, mais c'est pas le but ici, vous avez raison.

Pour faire le test avec mon code en poste #24 : https://excel-downloads.com/threads...onsatener-les-colonnes.20083086/post-20645407

Alors les le fichier xlsx
Poste #5 : https://excel-downloads.com/threads...onsatener-les-colonnes.20083086/post-20645147
ou
Poste #8 : https://excel-downloads.com/threads...onsatener-les-colonnes.20083086/post-20645194

Pour transformer les fichier .xlsx en .csv
1) Ouvrir le fichier .xlsx puis copier, les cellules (A1 et A2) de l'onglet Apres Import
2) Ouvrir le bloc Note puis coller (ce qui a était copier dans le fichier Excel)
3) Enregistrer le fichier au format .txt avec l'option d'encodage : UTF-8

Maintenant le fichier avec l'extension .txt (Fonctionne avec la macro en poste #24)

Puis en remplaçant l'extension du "fichier.txt" par "fichier.csv")

Maintenant le fichier avec l'extension .csv (Fonctionne avec la macro en poste #24)

 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Bonsoir @Cousinhub

Mon code fonctionne très bien avec un fichier au format dont l'extension est .csv
Il faudrait enregistrer le fichier .xls au format .csv, mais c'est pas le but ici, vous avez raison.

Pour faire le test avec mon code en poste #24 : https://excel-downloads.com/threads...onsatener-les-colonnes.20083086/post-20645407

Alors les le fichier xlsx
Poste #5 : https://excel-downloads.com/threads...onsatener-les-colonnes.20083086/post-20645147
ou
Poste #8 : https://excel-downloads.com/threads...onsatener-les-colonnes.20083086/post-20645194

Pour transformer les fichier .xlsx en .csv
1) Ouvrir le fichier .xlsx puis copier, les cellules (A1 et A2) de l'onglet Apres Import
2) Ouvrir le bloc Note puis coller (ce qui a était copier dans le fichier Excel)
3) Enregistrer le fichier au format .txt avec l'option d'encodage : UTF-8

Maintenant le fichier avec l'extension .txt (Fonctionne avec la macro en poste #24)

Puis en remplaçant l'extension du "fichier.txt" par "fichier.csv")

Maintenant le fichier avec l'extension .csv (Fonctionne avec la macro en poste #24)

Bonjour,
Un fichier csv peut avoir plusieurs sources, dont les plus nombreuses sont des applications "tierces", où nous pouvons "Exporter" les données dans plusieurs formats, dont ce fameux "csv"
Donc ta procédure ne respecte peut-être (sans doute?) pas la structure initiale...
Et pour info, personnellement, je n'utilise pas de code VBA pour importer des données "csv" dans un fichier Excel, mais Power Query, spécialement conçu pour cela (et bien d'autres fonctions).
Bonne journée
 

Discussions similaires

Réponses
9
Affichages
144

Membres actuellement en ligne

Statistiques des forums

Discussions
313 271
Messages
2 096 724
Membres
106 720
dernier inscrit
Alain EDZOA