Importer des données d'un csv dans une feuille

Bonjour,

J'ai mon fichier excel qui contient plusieurs feuilles dont la feuilles "Import".

Avec quel code VBA pourrai-je importer les données d'un Csv (se trouvant sur mon ordinateur ) sur la feuille import?

je précise que mon csv contient des données qui sont chacune dans une colonne

merci pour votre aide

Bonjour Muqtadir, bonjour le forum,

Essaie comme ça (chemin d'accès CA a adapter à ton cas) :

Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (Cellule de DESTInation)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Import") 'définit l'onglet destination OD
CA = "C:\Users\User\Documents\blabla1\blabla2\" 'définit le chemin d'accès CA (ici le chemin d'accès complet du fichier csv sans oublier le dernier "\", à adapter à ton cas)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante
Set CS = Workbooks("Classeur3.csv") 'définit le classeur source CS (génère une erreur si le classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    Set CS = Workbooks.Open(CA & "Classeur3.csv") 'définit le classeur source en l'ouvrant
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Set OS = CS.Worksheets(1) 'définit l'onglet source OS
'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onlet destination OD)
Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
OS.UsedRange.Copy DEST 'copye l'ensemble des cellules éditées de l'onglet source dans DEST
End Sub

Bonjour Thauthème merci de ton aide

Je reprends ton code en personnalisant : CA = "C:\Users\"

Mais j'obtiens une erreur à ce niveau : Set OS = CS.Worksheets(1) 'définit l'onglet source OS

as tu une solution stp?

Merci

Bonjour Muqtadir, bonjour le forum,

Essaie comme ça (chemin d'accès CA a adapter à ton cas) :

Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (Cellule de DESTInation)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Import") 'définit l'onglet destination OD
CA = "C:\Users\User\Documents\blabla1\blabla2\" 'définit le chemin d'accès CA (ici le chemin d'accès complet du fichier csv sans oublier le dernier "\", à adapter à ton cas)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante
Set CS = Workbooks("Classeur3.csv") 'définit le classeur source CS (génère une erreur si le classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    Set CS = Workbooks.Open(CA & "Classeur3.csv") 'définit le classeur source en l'ouvrant
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Set OS = CS.Worksheets(1) 'définit l'onglet source OS
'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onlet destination OD)
Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
OS.UsedRange.Copy DEST 'copye l'ensemble des cellules éditées de l'onglet source dans DEST
End Sub

Re,

Ton fichier CSV n'a certainement pas été ouvert (a vérifier). Soit le chemin d'accès n'est pas bon, soit tu n'a pas actualisé le nom du fichier (j'avais oublié de le préciser). Il te faut remplacer Classeur3.CSV dans mon code par le nom de ton fichier CSV...

Des fois je me demande pourquoi je m'emm***e à commenter le code !?...

Je comprends ce que tu veux dire, oui j'y ai pensé aussi.

Vu que le nom de mon fichier peut changer, je dois mettre quoi pour que la macro prenne en compte n'importe quel fichier csv?

Merci

Re,

On peut alors demander à l'utilisateur de sélectionner un fichier :

Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (Cellule de DESTInation)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Import") 'définit l'onglet destination OD
CA = "C:\Users\" 'définit le chemin d'accès CA
With Application.FileDialog(msoFileDialogOpen) 'prend en compte la boîte de dialogue d'ouverture de fichiers
    .AllowMultiSelect = True 'n'autorise qu'un seul fichier
    .Filters.Add "Fichier CSV", "*.csv" 'définit le filtre sur le type de fichiers
    .InitialFileName = CA 'définit le dossier par défaut à l'ouverture de la boîte de dialogue
    .Show 'affiche la boîte de dialogue
    If .SelectedItems.Count = 1 Then .Execute 'si un élément est sélectionné, valide la boîte de dialogue
End With 'fin de la prise en compte de la bolîte de dialogue d'ouverture de fichiers
Set CS = ActiveWorkbook 'définit le classeur source CS
Set OS = CS.Worksheets(1) 'définit l'onglet source OS
'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onlet destination OD)
Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
OS.UsedRange.Copy DEST 'copye l'ensemble des cellules éditées de l'onglet source dans DEST
CS.Close False 'ferme le fichier sourse sans enregistrer
End Sub

Parfait, merci beaucoup. tu gères. j'ai un autre problème. Je pense que tu pourras m'aider. Je vais clôturer cette question déjà pour qu'elle serve à d'autres personnes.

merci encore

Rechercher des sujets similaires à "importer donnees csv feuille"