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

Vba: enregistrer sous... Texte (séparateur: tabulation)(*.txt)

4 réponses
Avatar
Jac
Bonjour à tous,

je veux enregistrer mon fichier actif au format
Texte (séparateur: tabulation)(*.txt)
que je trouve dans la liste des types de fichiers lors d'un
"Enregistrer sous...", mais que je ne retrouve ni via l'enregistreur de
macros ni dans la liste 43 formats possibles tels que décrits dans
l'aide sous "FileFormat, propriété".

J'ai essayé (je pense) tous les formats qui me semblent enregistrer en
txt. En vain. Problème : les séparateurs de milliers sont remplacés par
des virgules et les nombres sont placés entre double cottes.

Exemple : 12 000 devient "12,000"
Et certains formats txt, souvent les "Dos", remplacent les caractères
accentués par d'autres signes.

Merci d'avance à qui pourrait m'orienter vers la solution qui doit être
devant mes yeux, mais que je ne vois pas...

Jac

4 réponses

Avatar
michdenis
Bonjour Jac,

Quand tu fais enregistrer sous, tu sélectionnes dans la liste
déroulante - type de fichier- Texte unicode(*.txt) et cela
fonctionne bien !

Si tu désires, tu peux utiliser ceci : une petite macro :
Si tu veux sauvegarder tes données avec un format particulier,
tu peux utiliser la fonction "Format()" pour formater chacune des
données de la plage dans la procédure.

'-----------------------------------------
Sub SaveAsTextFile()
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String
Dim Separateur As String

'Tu choisis le séparateur de ton choix
Separateur = vbTab
'Plage à copier
With Worksheets("Feuil1")
C = Range("A1:C6")
End With

fFilename = _
Application.GetSaveAsFilename(InitialFileName:="nom_par_defaut", _
fileFilter:="Text Files (*.txt), *.txt")

Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Separateur & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
Erase C
End Sub
'-----------------------------------------



"Jac" a écrit dans le message de groupe de discussion :

Bonjour à tous,

je veux enregistrer mon fichier actif au format
Texte (séparateur: tabulation)(*.txt)
que je trouve dans la liste des types de fichiers lors d'un
"Enregistrer sous...", mais que je ne retrouve ni via l'enregistreur de
macros ni dans la liste 43 formats possibles tels que décrits dans
l'aide sous "FileFormat, propriété".

J'ai essayé (je pense) tous les formats qui me semblent enregistrer en
txt. En vain. Problème : les séparateurs de milliers sont remplacés par
des virgules et les nombres sont placés entre double cottes.

Exemple : 12 000 devient "12,000"
Et certains formats txt, souvent les "Dos", remplacent les caractères
accentués par d'autres signes.

Merci d'avance à qui pourrait m'orienter vers la solution qui doit être
devant mes yeux, mais que je ne vois pas...

Jac
Avatar
Jac
Bonjour michdenis,

ok pour ta solution, mais ce qui m'embête, c'est que je voulais faire
un "truc" généraliste, sans formatage particulier, c'est pour celà que
je cours après l'équivalence vba de
"Texte (séparateur: tabulation)(*.txt)".
Les autres trafiquent les formats de nombre (je peux résoudre en
enlevant le séparateur de milliers... mais j'aimerais mieux m'en
passer) ou suppriment les caractères accentués.


michdenis vient de nous annoncer :
Bonjour Jac,

Quand tu fais enregistrer sous, tu sélectionnes dans la liste
déroulante - type de fichier- Texte unicode(*.txt) et cela
fonctionne bien !

Si tu désires, tu peux utiliser ceci : une petite macro :
Si tu veux sauvegarder tes données avec un format particulier,
tu peux utiliser la fonction "Format()" pour formater chacune des
données de la plage dans la procédure.

'-----------------------------------------
Sub SaveAsTextFile()
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String
Dim Separateur As String

'Tu choisis le séparateur de ton choix
Separateur = vbTab
'Plage à copier
With Worksheets("Feuil1")
C = Range("A1:C6")
End With

fFilename = _
Application.GetSaveAsFilename(InitialFileName:="nom_par_defaut", _
fileFilter:="Text Files (*.txt), *.txt")

Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Separateur & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
Erase C
End Sub
'-----------------------------------------



"Jac" a écrit dans le message de groupe de discussion :

Bonjour à tous,

je veux enregistrer mon fichier actif au format
Texte (séparateur: tabulation)(*.txt)
que je trouve dans la liste des types de fichiers lors d'un
"Enregistrer sous...", mais que je ne retrouve ni via l'enregistreur de
macros ni dans la liste 43 formats possibles tels que décrits dans
l'aide sous "FileFormat, propriété".

J'ai essayé (je pense) tous les formats qui me semblent enregistrer en
txt. En vain. Problème : les séparateurs de milliers sont remplacés par
des virgules et les nombres sont placés entre double cottes.

Exemple : 12 000 devient "12,000"
Et certains formats txt, souvent les "Dos", remplacent les caractères
accentués par d'autres signes.

Merci d'avance à qui pourrait m'orienter vers la solution qui doit être
devant mes yeux, mais que je ne vois pas...

Jac


Avatar
michdenis
La solution à partir du menu Fichier qui existe dans
excel (windows7 et office 2007), je n'ai rien à retoucher
et il respecte le format et la tabulation !

Par macro, ça donne ceci :

ActiveWorkbook.SaveAs Filename:="C:Classeur3.txt", FileFormat:=xlText




"Jac" a écrit dans le message de groupe de discussion :
#
Bonjour michdenis,

ok pour ta solution, mais ce qui m'embête, c'est que je voulais faire
un "truc" généraliste, sans formatage particulier, c'est pour celà que
je cours après l'équivalence vba de
"Texte (séparateur: tabulation)(*.txt)".
Les autres trafiquent les formats de nombre (je peux résoudre en
enlevant le séparateur de milliers... mais j'aimerais mieux m'en
passer) ou suppriment les caractères accentués.


michdenis vient de nous annoncer :
Bonjour Jac,

Quand tu fais enregistrer sous, tu sélectionnes dans la liste
déroulante - type de fichier- Texte unicode(*.txt) et cela
fonctionne bien !

Si tu désires, tu peux utiliser ceci : une petite macro :
Si tu veux sauvegarder tes données avec un format particulier,
tu peux utiliser la fonction "Format()" pour formater chacune des
données de la plage dans la procédure.

'-----------------------------------------
Sub SaveAsTextFile()
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String
Dim Separateur As String

'Tu choisis le séparateur de ton choix
Separateur = vbTab
'Plage à copier
With Worksheets("Feuil1")
C = Range("A1:C6")
End With

fFilename = _
Application.GetSaveAsFilename(InitialFileName:="nom_par_defaut", _
fileFilter:="Text Files (*.txt), *.txt")

Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Separateur & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
Erase C
End Sub
'-----------------------------------------



"Jac" a écrit dans le message de groupe de discussion :

Bonjour à tous,

je veux enregistrer mon fichier actif au format
Texte (séparateur: tabulation)(*.txt)
que je trouve dans la liste des types de fichiers lors d'un
"Enregistrer sous...", mais que je ne retrouve ni via l'enregistreur de
macros ni dans la liste 43 formats possibles tels que décrits dans
l'aide sous "FileFormat, propriété".

J'ai essayé (je pense) tous les formats qui me semblent enregistrer en
txt. En vain. Problème : les séparateurs de milliers sont remplacés par
des virgules et les nombres sont placés entre double cottes.

Exemple : 12 000 devient "12,000"
Et certains formats txt, souvent les "Dos", remplacent les caractères
accentués par d'autres signes.

Merci d'avance à qui pourrait m'orienter vers la solution qui doit être
devant mes yeux, mais que je ne vois pas...

Jac


Avatar
Jac
... ok. J'ai supprimé le formatage sur les nombres (séparateur de
milliers qui me donnait quand même avec xlText des "12,000") et
j'enregistre en xlText. Les caractères accentués sont conservés.
Donc ça me convient.

Merci encore de t'être penché sur mon problème

Jac

michdenis a formulé ce jeudi :
La solution à partir du menu Fichier qui existe dans
excel (windows7 et office 2007), je n'ai rien à retoucher
et il respecte le format et la tabulation !

Par macro, ça donne ceci :

ActiveWorkbook.SaveAs Filename:="C:Classeur3.txt", FileFormat:=xlText




"Jac" a écrit dans le message de groupe de discussion :
#
Bonjour michdenis,

ok pour ta solution, mais ce qui m'embête, c'est que je voulais faire
un "truc" généraliste, sans formatage particulier, c'est pour celà que
je cours après l'équivalence vba de
"Texte (séparateur: tabulation)(*.txt)".
Les autres trafiquent les formats de nombre (je peux résoudre en
enlevant le séparateur de milliers... mais j'aimerais mieux m'en
passer) ou suppriment les caractères accentués.


michdenis vient de nous annoncer :
Bonjour Jac,

Quand tu fais enregistrer sous, tu sélectionnes dans la liste
déroulante - type de fichier- Texte unicode(*.txt) et cela
fonctionne bien !

Si tu désires, tu peux utiliser ceci : une petite macro :
Si tu veux sauvegarder tes données avec un format particulier,
tu peux utiliser la fonction "Format()" pour formater chacune des
données de la plage dans la procédure.

'-----------------------------------------
Sub SaveAsTextFile()
Dim C As Variant
Dim fFilename As String
Dim a As Integer, b As Integer
Dim tmP As String
Dim Separateur As String

'Tu choisis le séparateur de ton choix
Separateur = vbTab
'Plage à copier
With Worksheets("Feuil1")
C = Range("A1:C6")
End With

fFilename = _
Application.GetSaveAsFilename(InitialFileName:="nom_par_defaut", _
fileFilter:="Text Files (*.txt), *.txt")

Open fFilename For Output As #1

For a = 1 To UBound(C, 1)
tmP = ""
For b = 1 To UBound(C, 2)
If tmP > "" Then
tmP = tmP & Separateur & C(a, b)
Else
tmP = C(a, b)
End If
Next
Print #1, tmP
Next
Close #1
Erase C
End Sub
'-----------------------------------------



"Jac" a écrit dans le message de groupe de discussion :

Bonjour à tous,

je veux enregistrer mon fichier actif au format
Texte (séparateur: tabulation)(*.txt)
que je trouve dans la liste des types de fichiers lors d'un
"Enregistrer sous...", mais que je ne retrouve ni via l'enregistreur de
macros ni dans la liste 43 formats possibles tels que décrits dans
l'aide sous "FileFormat, propriété".

J'ai essayé (je pense) tous les formats qui me semblent enregistrer en
txt. En vain. Problème : les séparateurs de milliers sont remplacés par
des virgules et les nombres sont placés entre double cottes.

Exemple : 12 000 devient "12,000"
Et certains formats txt, souvent les "Dos", remplacent les caractères
accentués par d'autres signes.

Merci d'avance à qui pourrait m'orienter vers la solution qui doit être
devant mes yeux, mais que je ne vois pas...

Jac