Bonjour,

Pour écrire dans un fichier texte j'utilise un recordset. Je souhaite que les lignes de mon fichier texte soit triées par "Style" puis par "Part" puis par "Length" en sachant que part et length sont des champs numérique. J'ai le code suivant :

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
On Error GoTo Err_Fichier_débit_Click
DoCmd.RunSQL "CREATE TABLE [TEMP_Export débit] ([Numéro de débit] COUNTER,[Name] TEXT(50),[Part] TEXT(50),[Length] TEXT(50),[Style] TEXT(50),[Stripping Type] TEXT(50),[Right Strip] TEXT(50),[Left Strip] TEXT(50),PRIMARY KEY ([Numéro de débit]));"
 
DoCmd.RunSQL "INSERT INTO [TEMP_Export débit] ( Name, Part, Length, Style, [Stripping Type], [Right Strip], [Left Strip] ) SELECT [16-P-Fichier de débit].Name, [16-P-Fichier de débit].Part, [16-P-Fichier de débit].Length, [16-P-Fichier de débit].Style, [16-P-Fichier de débit].[Stripping Type], [16-P-Fichier de débit].[Right Strip], [16-P-Fichier de débit].[Left Strip] FROM [16-P-Fichier de débit] ORDER BY [16-P-Fichier de débit].Style, [16-P-Fichier de débit].Part, [16-P-Fichier de débit].Length;"
 
Set Rs = CurrentDb.OpenRecordset("SELECT * FROM [TEMP_Export débit] [16-P-Fichier de débit].Style, [16-P-Fichier de débit].Part, [16-P-Fichier de débit].Length;", dbOpenSnapshot)
 
Open Chemin_long For Output As #1
 
Print #1, "Import" & Chr(Sep) & "ASCII"
Print #1, "Units" & Chr(Sep) & "mm"
Print #1, "Name" & Chr(Sep) & "Part" & Chr(Sep) & "Length" & Chr(Sep) & "Style" & Chr(Sep) & "Stripping type" & Chr(Sep) & "Right Strip" & Chr(Sep) & "Left Strip"
 
While Not Rs.EOF
    Print #1, Rs.Fields("Name").Value & Chr(Sep) & _
              Rs.Fields("Part").Value & Chr(Sep) & _
              Rs.Fields("Length").Value & Chr(Sep) & _
              Rs.Fields("Style").Value & Chr(Sep) & _
              Rs.Fields("Stripping type").Value & Chr(Sep) & _
              Rs.Fields("Right Strip").Value & Chr(Sep) & _
              Rs.Fields("Left Strip").Value, Chr(Sep)
    Rs.MoveNext
 
Wend
 
Rs.Close
Set Rs = Nothing
Close #1
 
DoCmd.RunSQL "DROP TABLE [TEMP_Export débit]"
Comme vous pouvez le voir je trie lors de l'ajout à la la table temporaire et lors de la création du recordset.
La table est triée comme voulu mais lors de l'écriture il semble que le recordset trie Part comme un champ texte (21 avant 3 par exemple).
En enlevant le critère de tri lors de la création du recordset l'ordre de la table n'est pas respecter et c'est l'anarchie.

Comment faire pour garder le tri de la table ou pour trier le recordset tel que Part et Length soit triés comme des nombres?

Merci d'avance aux experts.