Export au format ".txt" différent d'un PC a un autre

iStarOSX

XLDnaute Junior
Bonjour à tous.

Je suis devant un problème et je ne sais pas ou trouver la réponse. J'ai cherché des solutions mais Google ne me donne pas les réponses que j’attends.

Donc voila j'ai une macro dans un fichier XL qui me permet de générer des fichiers d'échanges de données avec un autre logiciel. Ces fichiers doivent être formatés au format comme un CSV avec séparateur ";" et séparateur de décimal "," dans un fichier texte ".txt".

Pour cela j'utilise cette macro :
Code:
Sub EXPORT_CATALOGUE()

Chem = ThisWorkbook.Path & "\"
Nom = ActiveWorkbook.Name
 T = Len(Nom)
 Nom = Mid(Nom, 1, T - 4)
Application.ScreenUpdating = False
    Sheets("Listing Radiateurs").Copy
    
      
 'Sauvegarde avec le même nom dans le même repertoires que le fichier XL d'origine
 Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=Chem & Nom & ".txt" _
        , FileFormat:=xlCSV, local:=True, CreateBackup:=False
    ActiveWorkbook.Save
    
 
 
 'Application.DisplayAlerts = False
    ActiveWindow.Close
    Application.ScreenUpdating = True
Application.DisplayAlerts = True
    
End Sub

Ma macro fonctionne très bien sur mon PC personnel qui est sous Win7 et excel 2003 (pour être sur de faire de fichiers compatible avec la version du boulo), mais a mon bureau (sous WinXP et Excel 2003) les fichiers ".txt" se retrouve formatés avec pour séparateur "," et séparateur de décimal "." .

J'ai bien regardé dans les options d'excel, onglet "international" Gestion des nombres, j'ai bien l'option "Utiliser les séparateurs système" de cochés et dans les options "Régionales et linguistique" de WinXP, je suis bien en Français avec avec dans "Personnaliser les options régionales" comme symbole décimal "," et séparateur de liste ";".

Je ne vois vraiment pas d’où peut venir ce problème ? :confused:

Si un pro de VBA pouvait m'aider, merci.
 

MJ13

XLDnaute Barbatruc
Re : Export au format ".txt" différent d'un PC a un autre

Re

Je ne connaîs pas les spécificités de Mac.

Mais maintenant, pour éviter ce genre de problème, tu peux essayer de faire des fichiers avec:
Code:
'Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

Exemple d'un code avec des fichiers de température nommé JJ MM AAA.txt qui sont sous forme d'une liste en colonne 1 (1 jour = 1 date) sous Win 7 et Xl 2007 (A adapté à ta problèmatique).
Ici, j'ai pris le tab comme séparateur.

Code:
Public NFDeb
Sub Batch_OuvreTXT()
Close
'reprise ici
NFDeb = ActiveSheet.Name
'Stop
Cells(2, 1).Select
'Cells(,1).select:goto suite2
OuvreTXT
'Stop
For i = 2 To 13
'Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]
CHambre = Right(Cells(1, i).Value, 1)
Open ThisWorkbook.Path & "\" & "CH " & CHambre & "An2011.txt" For Output As #i
Print #i, "Date", vbTab, "CH" & CHambre
Next
'Stop
'copy les données du premier fichier vers chaque fichier capteur colonne 2 à 13
NLignes = Cells(65536, 1).End(xlUp).Row
For i = 2 To NLignes
For j = 2 To 13
Print #j, Cells(i, 1).Value, vbTab, Cells(i, j).Value
Next
Next
'Stop
ActiveWorkbook.Close 0
'suite2
'NLignes = Cells(, 1).End(xldown).Row
For Each cell In Range("a3:a" & Cells(65536, 1).End(xlUp).Row)
'For Each cell In Range("a" & ActiveCell.Row & ":a" & Cells(65536, 1).End(xlUp).Row)
cell.Select
OuvreTXT
If ActiveSheet.Name = NFDeb Then GoTo suite
NLignes = Cells(65536, 1).End(xlUp).Row
For i = 2 To NLignes
For j = 2 To 13
Print #j, Cells(i, 1).Value, vbTab, Cells(i, j).Value
Next
Next
'Stop
ActiveWorkbook.Close 0
suite:
Next
'Stop
Close
End Sub
Sub OuvreTXT()
'nao = "01 02 2011"
NAO = Cells(1, 2) & "\" & ActiveCell.Text
NAODate = Left(ActiveCell, 10)
    Workbooks.OpenText Filename:=NAO, Origin:= _
        xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
        , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:= _
        False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1) _
        , Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
        Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1)), DecimalSeparator _
        :=".", TrailingMinusNumbers:=True
        derl = Cells(65536, 1).End(xlUp).Row: If derl = 1 Then ActiveWorkbook.Close False: Exit Sub
 
   For Each cell In Range("a2:a" & Cells(65536, 1).End(xlUp).Row)
'Stop
   Valdate = Format(Left(NAODate, 2) & "/" & Mid(NAODate, 4, 2) & "/" & Right(NAODate, 4), "0")
   ValHeure = Format(cell.Value, "0.000000000000000")
   cell.Value = Val(Valdate) + CDbl(ValHeure)
    Next
 End Sub
 
G

Guest

Guest
Re : Export au format ".txt" différent d'un PC a un autre

Bonjour,

Hello Michel:)

Une proposition. Pour le point virgule se sera bon. Pour la virgule, à tester.
La macor ci-dessous change provisoirement le séparateur décimal pour la virgule et rétablit le séparateur d'origine à la fin.

Code:
Sub EXPORT_CATALOGUE()
    Dim appSep As String
    Dim strLigne, Chem As String, Nom As String
    Dim f As Integer, t As Integer
    Dim r As Range, PlageToExport As Range
    Set plage = ThisWorkbook.Sheets("Listing Radiateurs").Range("A1").CurrentRegion
    appSep = Application.DecimalSeparator
    Application.DecimalSeparator = ","
    
    Chem = ThisWorkbook.Path & "\"
    Nom = ActiveWorkbook.Name
    t = Len(Nom)
    Nom = Mid(Nom, 1, t - 4)
    f = FreeFile()
    Open ThisWorkbook.Path & "\historique.txt" For Output As #f
    For Each r In plage.Rows
        strLigne = Application.Transpose(Application.Transpose(r.Value))
        Print #f, Join(strLigne, ";")
    Next r
    Application.DecimalSeparator = appSep
    Close #f
End Sub

A+
 

iStarOSX

XLDnaute Junior
Re : Export au format ".txt" différent d'un PC a un autre

Merci à tous pour vos réponses.

Entre temps je suis parti sur une autre solution.

J'ai créer une feuille qui reprend les valeur de mon tableau avec des formule "=Concatener(A1;",";A2;...)", puis copie ma feuille dans un nouveau classeur et l'enregistre en ".txt".
Comme cela mon fichier est formater comme il faut.

Je vais tout de même regarder si vos solutions sont pas plus simple.

Merci à tous et à bientôt.
 

Discussions similaires

Réponses
6
Affichages
307
Réponses
2
Affichages
457

Statistiques des forums

Discussions
312 300
Messages
2 087 000
Membres
103 429
dernier inscrit
PhilippeH