Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Export d'une table en fichier texte

4 réponses
Avatar
JMH
Bonjour

J'exporte une table en fichier texte en définissant "inclure le nom des
champs sur la 1ère ligne", c'est OK.
Mais j'aimerai avoir comme nom de champs(1ère ligne) les légendes et nom pas
le Nom du champ de la table, car c'est une traduction des nom de champs.

Est-ce possible?
Si oui, une piste?
Si non, comment pourrais arriver à ce résultat par un chemin détourné?

Merci d'avance pour vos réponses.

Jean-Michel H.

4 réponses

Avatar
Eric
Bonjour JMH

Je ne sais pas s'il est possible directement d'exporter les légendes au
lieu des noms de champs avec la commande. Toutefois comme tu acceptes
une réponse via un chemin détourné, je te propose la solution suivante
qui consiste à créer soi-même le fichier .txt (ou .csv).

Sub zz()
' Charger la référence Microsoft DAo 3.x Object Library
' Si absence de légende, on prend le nom du champ
On Error GoTo Trait_Err
Dim rst As DAO.Recordset, t As DAO.TableDef
Dim bd As DAO.Database, fld As Object
Dim strChaine As String, i As Integer
Dim f As Integer
f = FreeFile
' Adapter le chemin et le nom du fichier.
' Ouverture du fichier en mode Ajout.
' S'il n'existe pas il est créé.
Open "c:EssaiExport.txt" For Append As #f
Set bd = CurrentDb
' Adapter le nom de la table
Set t = bd.TableDefs("NomTable")
' Récupération des légendes
For Each fld In t.Fields
strChaine = strChaine & fld.Properties("Caption") & ";"
Next fld
strChaine = Left(strChaine, Len(strChaine) - 1)
' Ecriture des légendes sur la 1ere ligne
Print #f, strChaine
' Adapter là encore le nom de la table
Set rst = bd.OpenRecordset("NomTable")
' On parcourt le jeu d'enregistrements
While Not rst.EOF
strChaine = vbNullString
For i = 0 To rst.Fields.Count - 1
strChaine = strChaine & rst.Fields(i) & ";"
Next i
strChaine = Left(strChaine, Len(strChaine) - 1)
' Ecriture de l'enregistrement
Print #f, strChaine
rst.MoveNext
Wend
rst.Close: bd.Close
Set rst = Nothing: Set t = Nothing: Set bd = Nothing
Close #f
Exit Sub
Trait_Err:
If Err.Number = 3270 Then
strChaine = strChaine & fld.Name & ";"
Resume Next
End If
End Sub

Bonjour

J'exporte une table en fichier texte en définissant "inclure le nom des
champs sur la 1ère ligne", c'est OK.
Mais j'aimerai avoir comme nom de champs(1ère ligne) les légendes et nom pas
le Nom du champ de la table, car c'est une traduction des nom de champs.

Est-ce possible?
Si oui, une piste?
Si non, comment pourrais arriver à ce résultat par un chemin détourné?

Merci d'avance pour vos réponses.

Jean-Michel H.





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
JMH
Bonjour Eric

Ca marche et c'est exactement ce que je recherchais
Merci beaucoup.





"Eric" a écrit dans le message de news:

Bonjour JMH

Je ne sais pas s'il est possible directement d'exporter les légendes au
lieu des noms de champs avec la commande. Toutefois comme tu acceptes une
réponse via un chemin détourné, je te propose la solution suivante qui
consiste à créer soi-même le fichier .txt (ou .csv).

Sub zz()
' Charger la référence Microsoft DAo 3.x Object Library
' Si absence de légende, on prend le nom du champ
On Error GoTo Trait_Err
Dim rst As DAO.Recordset, t As DAO.TableDef
Dim bd As DAO.Database, fld As Object
Dim strChaine As String, i As Integer
Dim f As Integer
f = FreeFile
' Adapter le chemin et le nom du fichier.
' Ouverture du fichier en mode Ajout.
' S'il n'existe pas il est créé.
Open "c:EssaiExport.txt" For Append As #f
Set bd = CurrentDb
' Adapter le nom de la table
Set t = bd.TableDefs("NomTable")
' Récupération des légendes
For Each fld In t.Fields
strChaine = strChaine & fld.Properties("Caption") & ";"
Next fld
strChaine = Left(strChaine, Len(strChaine) - 1)
' Ecriture des légendes sur la 1ere ligne
Print #f, strChaine
' Adapter là encore le nom de la table
Set rst = bd.OpenRecordset("NomTable")
' On parcourt le jeu d'enregistrements
While Not rst.EOF
strChaine = vbNullString
For i = 0 To rst.Fields.Count - 1
strChaine = strChaine & rst.Fields(i) & ";"
Next i
strChaine = Left(strChaine, Len(strChaine) - 1)
' Ecriture de l'enregistrement
Print #f, strChaine
rst.MoveNext
Wend
rst.Close: bd.Close
Set rst = Nothing: Set t = Nothing: Set bd = Nothing
Close #f
Exit Sub
Trait_Err:
If Err.Number = 3270 Then
strChaine = strChaine & fld.Name & ";"
Resume Next
End If
End Sub

Bonjour

J'exporte une table en fichier texte en définissant "inclure le nom des
champs sur la 1ère ligne", c'est OK.
Mais j'aimerai avoir comme nom de champs(1ère ligne) les légendes et nom
pas le Nom du champ de la table, car c'est une traduction des nom de
champs.

Est-ce possible?
Si oui, une piste?
Si non, comment pourrais arriver à ce résultat par un chemin détourné?

Merci d'avance pour vos réponses.

Jean-Michel H.





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
re JMH,

Il faudrait la transformer en procédure générique pour ne plus avoir à
écrire 'en dur' dans le code le nom de la table si tu souhaites
l'utiliser pour d'autres tables, car j'imagine que ce traitement ne se
fait pas que pour une seule table.

;-)

Bonjour Eric

Ca marche et c'est exactement ce que je recherchais
Merci beaucoup.







--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
JMH
Oui.
Je mets ça en paramètre dans une fonction.
Encore merci

"Eric" a écrit dans le message de news:

re JMH,

Il faudrait la transformer en procédure générique pour ne plus avoir à
écrire 'en dur' dans le code le nom de la table si tu souhaites l'utiliser
pour d'autres tables, car j'imagine que ce traitement ne se fait pas que
pour une seule table.

;-)

Bonjour Eric

Ca marche et c'est exactement ce que je recherchais
Merci beaucoup.







--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr