Bonjour,
J'ai table sous Access, et j'aurais voulu savoir s'il y avait
moyen, et comment (outre le simple copier / coller) d'exporter les données
de ce table en csv.
Merci
Bonjour,
J'ai table sous Access, et j'aurais voulu savoir s'il y avait
moyen, et comment (outre le simple copier / coller) d'exporter les données
de ce table en csv.
Merci
Bonsoir
Fonction que j'utilise.
Et après tu apelles ta fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45 ' exportation d'une requête SQL ou table vers un fichier ' format csv avec séparateur optionnel Public Function ExportCsv(SQL As String, File_name As String, Optional ByVal sep As _ String = ",", Optional ByVal Quote As String = "", Optional ByVal WithFields As Boolean = False) As Boolean Dim line As String, I As Long Dim rst As Recordset, fld As Field On Error GoTo ExportCsv_Error ' connection pour un projet access ADP : 'Set rst = CurrentProject.Connection.Execute(SQL) ' connection pour un projet access MDB : Set rst = CurrentDb.OpenRecordset(SQL) Open File_name For Output As #1 If WithFields Then ' les noms de champ si demandé line = "" For Each fld In rst.Fields line = line & sep & Quote & fld.Name & Quote Next Print #1, Mid(line, Len(sep) + 1) End If Do Until rst.EOF line = "" For I = 0 To rst.Fields.Count - 1 line = line & sep & Quote & Nz(rst(I).Value) & Quote Next I Print #1, Mid(line, Len(sep) + 1) rst.MoveNext Loop rst.Close Close #1 ExportCsv = True Exit Function ExportCsv_Error: MsgBox "Error " & err.Number & " (" & err.Description & _ ") in Function ExportCsv of Module mdFunctions", vbCritical End Function
A adapter en fonction de ta requête et de ton fichier de destination.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Call ExportCsv("SELECT * From Matable", CurrentProject.Path & "\NomFichier.csv", , , True)
Bon Courage
Dernière modification par Invité ; 05/12/2012 à 10h42.
Un grand merci GAYOT , je vais la tester
Bonjour GAYOT,
J'ai un souci avec la fonction.
En effet , lors de l'exécution j'ai une message d'erreur : ERROR 3141 dans lintruction SELECT , un mot réservé ou un argument est mal orthographié ou absent !
je ne comprends , connais -tu ce problème ?
merci d'avance
Bonjour
Peux tu indiquer ta ligne de commande?
Bonjour,
Sub extraction()
Call ExportCsv("SELECT *,From load", CurrentProject.Path &
"\alex.csv", , , True)
End Sub
N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.
Je ne réponds pas aux messages privés s'ils sont liés à une question technique
OK la procédure me donne exactement le même résultat que le enregistrer sous.
Je souhaiterai ne pas passer à la ligne à chaque fois et avoir des points virgule entre les lignes du fichier.
Pourriez-vous me dire quoi changer la procédure pour avoir ce résultat ?
merci bcp pour votre aide.
Zoom61 a raison, mais même le séparateur ";" pose problème quand il y a des champs avec des commentaires ou désignations longues. Il m'arrive régulièrement dans ce cas de mettre en séparateur le trait vertical "|". Celui là on a peu de chance de le retrouver dans un texte.
Si vous voulez j'ai maintenant un fichier qui ressemble à ça :
sex; age ; nom
F.23;alex
et je souhaite avoir un fichier :
sex; age ; nom;F.23;alex
Tu peux procéder de la même façon qu'avec ton autre discussion, cela fonctionne avec une table ou une requête.
@+.
N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.
Je ne réponds pas aux messages privés s'ils sont liés à une question technique
@zoom61
Honnêtement je n'ai pas pu faire tourner ta méthode , du coup je suis resté sur le premier code.
Il me reste un souci , je souhaiterai avoir un fichier csv qui ne saute pas ligne , je avoir toutes les données du fichier concaténées et séparées avec un ;
peux-tu me dire ce qu'il faut changer dans le code suivant pour abtenir ce résultat ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 If WithFields Then ' les noms de champ si demandé line = "" For Each fld In rst.Fields line = line & sep & Quote & fld.Name & Quote Next Print #1, Mid(line, Len(sep) + 1) End If Do Until rst.EOF line = "" For I = 0 To rst.Fields.Count - 1 line = line & sep & Quote & Nz(rst(I).Value) & Quote Next I Print #1, Mid(line, Len(sep) + 1) rst.MoveNext Loop rst.Close Close #1
Vu que je n'ai pas tout le code, peut-être ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Print #1, Mid(line, Len(sep) + 1) & ";"
N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.
Je ne réponds pas aux messages privés s'ils sont liés à une question technique
oui oui , ça c'est déja fait , ça permet effectivement de mettre un ; à la fin de la ligne mais ne permet pas de rester sur la même ligne .
ce qui me dérange c'est le saut de ligne à chaque fois.
Remplace :
Par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Do Until rst.EOF line = "" For I = 0 To rst.Fields.Count - 1 line = line & sep & Quote & Nz(rst(I).Value) & Quote Next I Print #1, Mid(line, Len(sep) + 1) rst.MoveNext Loop
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 line = "" Do Until rst.EOF For I = 0 To rst.Fields.Count - 1 line = line & sep & Quote & Nz(rst(I).Value) & Quote Next I rst.MoveNext Loop Print #1, Mid(line, Len(sep) + 1)
N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.
Je ne réponds pas aux messages privés s'ils sont liés à une question technique
euuu ça ne marche pas trop , ça fait une boucle infinie .....
Ce que j'ai changé n'a rien à voir avec la boucle... j'ai juste sorti l'initialisation de la variable avant la boucle et l'écriture du résultat après la boucle...
N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.
Je ne réponds pas aux messages privés s'ils sont liés à une question technique
ok , bon ça ne marche toujours pas malheureusement ! merci qd même
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager