Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/10/2011, 09h54   #1
 
Homme max
Étudiant
Inscription : juin 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme max
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 40
Points : -13
Points : -13
Par défaut Importer des données d'un fichier CSV fermé

Bojnour,

J'utilise en VBA Excel la méthode ADO pour importer des données d'un fichier excel fermé, cependant je trouve des difficultés pour fair la même chose pour un fichier (.CSV).

La code utilisé est le suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
 
Sub import()
 
Dim Cn As ADODB.Connection
Dim oCat As ADOX.Catalog
Dim Fichier As Variant
Dim Feuille As ADOX.Table
 
Dim Rst As ADODB.Recordset
Dim texte_SQL As String
Dim Ar() As String, i As Long
 
    Fichier = Application.GetOpenFilename("Fichier Excel, *.csv;*.xlsx")
    If Fichier = False Then Exit Sub
 
    Set Cn = New ADODB.Connection
    Set oCat = New ADOX.Catalog
 
 With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With
 
    Set oCat.ActiveConnection = Cn
    For Each Feuille In oCat.Tables
        i = i + 1
        ReDim Preserve Ar(i)
        Ar(i) = Feuille.Name
    Next Feuille
 
    texte_SQL = "SELECT Annee,Semaine FROM [" & Ar(1) & "]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
   Feuil3.Range("C4").CopyFromRecordset Rst
 
    Set Feuille = Nothing
    Set oCat = Nothing
    Cn.Close
    Set Cn = Nothing

Je cherche comment adapter les ligne suivant pour un fichier (.CSV).

Code :
1
2
3
4
5
6
7
 
 With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With

Merci d'avance pour vos aides.
Cordialement,
Max
Maxim0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 11h59   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,

Regardes sur ce FAQ de Silkyroad
http://excel.developpez.com/faq/inde...tFichierTXTado
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 12h18   #3
 
Homme max
Étudiant
Inscription : juin 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme max
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 40
Points : -13
Points : -13
Merci pour votre aide.Je n'arrive pas à trouver une solution pour importer les données d'un fichier CQSV, voila la modification qui j'ai fait sur le code :

Code :
1
2
3
 
cn = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
        "Dbq=" & Fichier & ";Extensions=asc,csv,tab,txt"

Ca marche pas !!

Cdt,
MAx
Maxim0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h22   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Le code bloque ou?

Ca marche pas ne nous aide pas. quel message d'erreur?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 15h33   #5
 
Homme max
Étudiant
Inscription : juin 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme max
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 40
Points : -13
Points : -13
Le code est bloqué à ligne suivant :
Code :
Set oCat.ActiveConnection = Cn
Le message d'erreur :
Citation:
the connection cannot used to perform this operation. It is ether closed or invalid in this context
Je n'arrive pas à addapter mon code pour un fichier CSV, les exemples que j'ai trouvé dans lien que vous m'avez donné nécessité de mentionner le chemin et le om du fichier ce qui n'est pas le cas dans mon code. Pour mon je cherge directement le fichier à importer
Code :
Fichier = Application.GetOpenFilename("Fichier Excel, *.csv;*.xlsx")
Cdt,
Maxim0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h04.


 
 
 
 
Partenaires

Hébergement Web