Bonjour,

Je viens faire appel à votre aide concernant un problème d'exportation de fichier.

En effet j'utilise un classeur excel pour importer un fichier texte, je le retravaille automatiquement via une macro et maintenant je souhaite l'enregistrer en format texte mais en utilisant comme déliminateur les largeurs de colonne et non le séparateur ou la tabulation;

Voici le code pour l'importation :
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
Sub Import_netlist()
 
    'Variable stockant le nom du classeur
    Dim nomClasseur As String
    nomClasseur = ActiveWorkbook.Name
 
    'Variable stockant le nom de la feuille où devront se trouver les données à importer
    Dim feuilImport As String
    feuilImport = "Netlist"
 
    'Variable stockant le nom du fichier à ouvrir
    Dim fichier As String
 
'Retour possible pour choisir de nouveau un fichier
choixFichierTexte:
    'Choix d'un fichier texte
    fichier = Application.GetOpenFilename("Netlist Files (*.nod), *.nod")
 
    'Si aucun fichier est choisi
    If Left(fichier, 4) = "Faux" Then
        GoTo pasDeFichierTexte
    End If
 
 
    Range("A1").Select
 
    'Enlève l'apparition de boîte de dialogue
    Application.DisplayAlerts = False
 
    'Déclaration de variable
    Dim fichier1 As String
 
    'Ajout d'un élément texte au nom du fichier pour pouvoir exécuter la requête sur le fichier texte de données
    fichier1 = "TEXT;" & fichier & ";"
 
    'Formatage des données pour une bonne insertion des données dans les cellules
    On Error GoTo ouvrirTexte
        With ActiveSheet.QueryTables.Add(Connection:=fichier1, Destination:=Range("A1"))
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlFixedWidth
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileFixedColumnWidths = Array(22, 20, 15, 10, 8, 12, 2, 4, 4)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
 
    Resume
 
retourouvrirTexte:
    'Sélection d'une cellule
    Range("A1").Select
 
    'Rétablit l'apparition de boîte de dialogue
    Application.DisplayAlerts = True
 
    'Avertissement pour l'utilisateur
    MsgBox "Les données textes ont été importées.", vbOKOnly & vbInformation, "Importation des données"
 
    Exit Sub
 
'Récupération de l'erreur de non sélection d'un fichier texte à ouvrir
pasDeFichierTexte:
 
    'Variables de d'avertissement de la non sélection du fichier texte
    Dim messageFichier As Integer
 
    'Boite de dialogue de lancement du traitement
    messageFichier = MsgBox("Vous n'avez pas sélectionner de fichier texte à ouvrir !" & Chr(10) & Chr(10) & "Voulez-vous importer des données de la banque HYDRO ?" & Chr(10) & Chr(10) & "Pour importer ces données, appuyez sur " & Chr(34) & "OK" & Chr(34) & ", pour l'interrompre sur " & Chr(34) & "Annuler" & Chr(34) & ".", 1 + 64 + 256, "Importation de données de la banque HYDRO")
 
    'Si "Annuler a été choisi, on interromp le traitement
    If messageFichier = 2 Then
        Exit Sub
    End If
 
    'Retour à la boîte de sélection de fichier texte
    GoTo choixFichierTexte
 
ouvrirTexte:
 
    'Variable stockant le nom du fichier
    Dim nomFichier As String
 
    'Variable compteur de lettre
    Dim lettre As Integer
 
    'Récupération du nom du fichier
    Do While Left(Right(fichier, lettre), 1) <> "\"
        nomFichier = Right(fichier, lettre)
        lettre = lettre + 1
    Loop
 
    'Ouverture du fichier texte par Excel avec la mise en forme nécessaire
    Workbooks.OpenText FileName:=fichier, Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, TextQualifier _
        :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
        False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array( _
        1, 1), Array(22, 1), Array(42, 1), Array(60, 1), Array(67, 1), Array(76, 1), Array(87, 1), Array(92, _
        1), Array(97, 1), Array(102, 1))
 
    'Sélection des données et copie
    Cells.Select
    Selection.Copy
 
    'Sélection du classeur, de la feuille et collage des données
   Workbooks(nomClasseur).Activate
    Worksheets(feuilImport).Select
    Cells.Select
    ActiveSheet.Paste
    Selection.ColumnWidth = 0.25
 
    'Fermeture du classeur intermédiaire
    Workbooks(nomFichier).Close
 
    'Retour au traitement des données
    GoTo retourouvrirTexte
 
End Sub
Je vous remercie pour votre aide