Bonjour à tous,
Je souhaite produire un fichier TXT avec un nombre précis de caractères pour chaque colonne.
En effet, mon export devant aller être importer par un software et chaque colonne doit débuter à un endroit bien précis.
J'ai réussi à dégoter un code sur internet qui fonctionne plutôt pas mal .... mais (ça serait pas drôle sinon), j'ai l'impression qu'il rajoute des espaces vides non désirés entre chaque colonne après le nombre de caractères souhaités.
Un exemple sera beaucoup plus explicite :
Je souhaite donc délimiter mes colonnes comme suit :
Colonne A : 2
Colonne B : 20
Colonne C : 11
Colonne D : 48
Le résultat souhaité :
C10000000000000000000056041017300MONIET
On remarque donc bien que la colonne B qui reprend le code (00000000000000000000) démarre bien au 3ème caractère de ma ligne.
La colonne C démarre bien aux 23eme caractère de ma ligne.
Le résultat obtenu :
Je ne comprends pas, comment avec une délimitage précis de mes colonnes, j'obtiens des espaces non désirés.
Le message ne le montre pas clairement, mais j'obtiens :
12 espaces entre la colonne A & B
8 espaces entre la B & C
3 espaces entre la C & D
Je vous joints le code ainsi que le fichier contenant le code.
D'avance merci pour votre aide.
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 Public Sub txtproduction() Dim myFile As String, rng As Range, cellValue As Variant, I As Integer, J As Integer Dim Nomfichier As String Dim chemin As String Dim S(29) As Integer Sheets("formating").Select S(0) = 2 S(1) = 20 S(2) = 11 S(3) = 48 Nomfichier = InputBox("Nom du fichier ?") chemin = ThisWorkbook.Path myFile = chemin & "\" & Nomfichier & ".txt" Set rng = ActiveSheet.UsedRange Open myFile For Output As #1 For I = 1 To rng.Rows.Count For J = 1 To rng.Columns.Count cellValue = rng.Cells(I, J).Value cellValue = Left(cellValue, S(J - 1)) cellValue = cellValue & String(S(J - 1) - Len(cellValue), Chr(32)) If J = rng.Columns.Count Then Print #1, cellValue Else Print #1, cellValue, End If Next J Next I Close #1 End Sub
Partager