adaptation format d'un export fichier texte

  • Initiateur de la discussion Initiateur de la discussion tlecoeur
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

tlecoeur

XLDnaute Nouveau
bonjour à tous,
j'ai cherché sur le forum comme d'habitude mais cette fois sans trouver mon bonheur.
Mon problème:
je fais un export texte d'une feuille de calcul mise en forme sans souci.
Par contre ma valeur de remise, à savoir 12,3 par exemple dans ma feuille excel se transforme en 12.3 dans mon fichier texte. Quelqu'un peut il m'aiguiller ?
je joint mon code et mon fichier texte à l'arrivée.

merci à vous.

mon code :
Sub Export_super_quote()
'
' Macro Export du tarif vers Super Quote
' Macro développée le 10/06/2008 par T.lecoeur
'
Dim mem_ref As Variant
Dim mem_qty As Variant
Dim mem_remise As Variant
Dim ligne As Integer
Dim ligne_export As Integer
Dim mem_section As String
Dim position As Integer
Dim num_ligne As Integer


Range("d5").Select

ligne = 0
ligne_export = 1
position = 0
num_ligne = 1
mem_ref = ActiveCell.Offset(0, 0).Value


If mem_ref = "" Then
Exit Sub
End If


Sheets("export_tarif_pour_SuperQuote").Select
Range("A1").Select
Sheets("calcul_prix").Select


Do While mem_ref <> ""

mem_ref = ActiveCell.Offset(0, 0).Value
mem_qty = ActiveCell.Offset(0, 11).Value
mem_remise = ActiveCell.Offset(0, 9).Value
mem_remise = mem_remise * 100
mem_section = ActiveCell.Offset(0, -2).Value
ActiveCell.Offset(1, 0).Select

Sheets("export_tarif_pour_SuperQuote").Select

ActiveCell.Offset(0, 0).Value = num_ligne
ActiveCell.Offset(0, 1).Value = mem_ref
ActiveCell.Offset(0, 2).Value = mem_qty
ActiveCell.Offset(0, 3).Value = mem_remise
ActiveCell.Offset(0, 4).Value = mem_section
ActiveCell.Offset(1, 0).Select

Sheets("calcul_prix").Select
num_ligne = num_ligne + 1

Loop

Sheets("export_tarif_pour_SuperQuote").Select
ActiveCell.Offset(-1, 0).Delete
ActiveCell.Offset(-1, 2).Delete

Application.DisplayAlerts = False


ChDir "C:\Documents and Settings\All Users\Bureau"
ActiveSheet.SaveAs Filename:= _
"C:\Documents and Settings\All Users\Bureau\export_tarif_pour_SuperQuote.txt", _
FileFormat:=xlUnicodeText, CreateBackup:=False


Sheets("export_tarif_pour_SuperQuote").Select
Cells.Select
Selection.ClearContents
Sheets("Calcul_Prix").Select

Application.DisplayAlerts = True

End Sub
 

Pièces jointes

Re : adaptation format d'un export fichier texte

Bonsoir tlecoeur, kiki29,

Un peu laconique kiki29...

Code:
ActiveSheet.SaveAs Filename:= _
"C:\Documents and Settings\All Users\Bureau\export_tarif_pour_SuperQuote.txt", _
FileFormat:=xlUnicodeText, CreateBackup:=False[COLOR="Red"], Local:=True[/COLOR]

Edit : bonsoir Catrice

Bonne nuit.
 
Re : adaptation format d'un export fichier texte

Rebonsoir,

En testant, je constate que l'argument Local:=True ne change rien.

De fait le classeur qui reste ouvert après SaveAs, c'est bien export_tarif_pour_SuperQuote.txt.

Il faut fermer ce classeur en cliquant sur "Oui" ou "OK" ou "Enregistrer" sur toutes les invites.

De plus, je pense qu'il faut modifier la fin de la macro :

Code:
Application.DisplayAlerts = False

ChDir "C:\Documents and Settings\All Users\Bureau"
ActiveSheet.SaveAs Filename:= _
"C:\Documents and Settings\All Users\Bureau\export_tarif_pour_SuperQuote.txt", _
FileFormat:=xlUnicodeText, CreateBackup:=False

Application.DisplayAlerts = True
End Sub

Rebonne nuit.
 
Re : adaptation format d'un export fichier texte

Bonjour à tous,

désolé pour ma réponse tardive mais déplacement oblige ...

J'ai préparé un fichier exemple sans données confidentielles et le résultat de l'export. Tout me va bien sauf pour le remise qui sont avec une virgule dans excel et avec un point dans le fichier texte.
J'ai essayé de mettre un formet texte dans les cellules, de mettre un format string pour ma variable mem_remise mais à l'arrivée , rien de ne me sort le bon format, à savoir : 2,3 pour une remise saisie dans excel à 2,3 %

Merci pour votre aide, là je sèche !!
 

Pièces jointes

Re : adaptation format d'un export fichier texte

bonjour tlecoeur, kiki29, Catrice, job75,

je te propose ce code :
Code:
Public Sub Export()
Dim myFso As Object, csvFile As Object
Dim i As Integer, j As Integer
Dim csvFileName As String, csvLine As String
Dim sheetExport As Worksheet

Set sheetExport = ThisWorkbook.Sheets("Calcul_Prix")

csvFileName = ThisWorkbook.Path & "\export.txt"

' créer le fichier
Set myFso = CreateObject("Scripting.FileSystemObject")
Set csvFile = myFso.CreateTextFile(Filename:=csvFileName, overwrite:=True)
j = 1

With sheetExport
    ' boucler sur toutes les lignes
    For i = 5 To .Cells(.Rows.Count, 4).End(xlUp).Row
        ' initialiser la ligne CSV
        csvLine = j & vbTab & .Range("D" & i).Text & vbTab & .Range("O" & i).Text & vbTab & Replace(.Range("M" & i).Value, ",", ".") & vbTab & .Range("B" & i).Text
        j = j + 1
        ' écrire la ligne dans le fichier
        csvFile.WriteLine csvLine
    Next i
End With

' fermer le fichier
csvFile.Close
Set csvFile = Nothing: Set myFso = Nothing
End Sub

a+
 
Re : adaptation format d'un export fichier texte

re,

autant pour moi, je croyais que le fichier texte était au format souhaité. voici le code pour écrire les chiffres avec des virgules :
Code:
Public Sub Export()
Dim myFso As Object, csvFile As Object
Dim i As Integer, j As Integer
Dim csvFileName As String, csvLine As String
Dim sheetExport As Worksheet

Set sheetExport = ThisWorkbook.Sheets("Calcul_Prix")

csvFileName = ThisWorkbook.Path & "\export.txt"

' créer le fichier
Set myFso = CreateObject("Scripting.FileSystemObject")
Set csvFile = myFso.CreateTextFile(Filename:=csvFileName, overwrite:=True)
j = 1

With sheetExport
    ' boucler sur toutes les lignes
    For i = 5 To .Cells(.Rows.Count, 4).End(xlUp).Row
        ' initialiser la ligne CSV
        csvLine = j & vbTab & .Range("D" & i).Text & vbTab & .Range("O" & i).Text & vbTab & CStr(.Range("M" & i).Value) & vbTab & .Range("B" & i).Text
        j = j + 1
        ' écrire la ligne dans le fichier
        csvFile.WriteLine csvLine
    Next i
End With

' fermer le fichier
csvFile.Close
Set csvFile = Nothing: Set myFso = Nothing
End Sub
a+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
265
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
806
Retour