Ecrire dans un fichier texte

Le
R K
Bonjour,

J'utilise un fichier Excel (2000) pour concaténer des données tabulaires
(nom, prénom, adresse,) en insérant le symbole $ entre chaque champ.
Par la suite, je copie-colle les cellules obtenues dans un fichier
javascript => J'obtiens un tableau javascript pratique pour l'actualisation
de mes données sur site web, mais là n'est pas mon problème
Ma question : plutôt que de copier-coller mes cellules, seraient-t-il
possible d'imaginer un script d'export automatique (bouton EXPORTER dans
Excel) vers un fichier texte (.js) quitte à ce que ce fichier soit
entièrement ré-écrit à chaque fois ?
Et si oui, pourriez-vous me donner des pistes de création d'un tel script ?

Merci d'avance,

Régis
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
twinley
Le #1674498
Bonjour,
J'utilise cette macro que tu pourras adapter et reparametrer...

Sub enregistre_historique()

Dim nom_fichier_d As String
Dim nom_fichier As String

Dim fs, f
Dim info As String

Dim ddate As String
Dim heure As String
Dim mminute As String
Dim sscond As String
Dim ouv As String
Dim haut As String
Dim bas As String
Dim clo As String

Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0
nom_fichier_d = "C:TOTO"


nom_fichier = "mabase"

' on engregistre dans le fichier texte

If Day(Date) < 10 Then
nom_fichier_d = nom_fichier_d & "0" & Day(Date)
ddate = "0" & Day(Date)
Else
nom_fichier_d = nom_fichier_d & "-" & Day(Date)
ddate = Day(Date)
End If

If Month(Date) < 10 Then
nom_fichier_d = nom_fichier_d & "-0" & Month(Date)
ddate = ddate & "/0" & Month(Date) & "/" & Year(Date)
Else
nom_fichier_d = nom_fichier_d & "-" & Month(Date)
ddate = ddate & "/" & Month(Date) & "/" & Year(Date)
End If

' If Hour(Cells(2, 14)) < 10 Then
' nom_fichier_d = nom_fichier_d & "-0" & Hour(Cells(1, 2))
' heure = "0" & Hour(Cells(2, 14))
' Else
' nom_fichier_d = nom_fichier_d & "-" & Hour(Cells(1, 2))
' heure = Hour(Cells(2, 14))
' End If

' If Minute(Cells(2, 14)) < 10 Then
' nom_fichier_d = nom_fichier_d & "-0" & Minute(Cells(1, 2))
' mminute = "0" & Minute(Cells(2, 14))
' Else
' nom_fichier_d = nom_fichier_d & "-" & Minute(Cells(1, 2))
' mminute = Minute(Cells(2, 14))
' End If
'
' If second(Cells(2, 14)) < 10 Then
' sscond = "0" & second(Cells(1, 2))
' Else
' sscond = second(Cells(1, 2))
' End If


nom_fichier = nom_fichier_d & "-" & Year(Date) & "-" & nom_fichier &
".txt"

'déclaration de l'objet
Set fs = CreateObject("Scripting.FileSystemObject")

' déclaration de la méthode
Set f = fs.OpenTextFile(nom_fichier, ForAppending, True, TristateFalse)

ddate = DateValue(CDate(Workbooks("flux.xls").Sheets("ti").Cells(3, 1)))
hheure = TimeValue(CDate(Workbooks("flux.xls").Sheets("ti").Cells(3,
2)))
hheure = Left(hheure, 2) & Mid(hheure, 4, 2)
ouv = Sheets("ti").Cells(3, 3)
haut = Sheets("ti").Cells(3, 4)
bas = Sheets("ti").Cells(3, 5)
clo = Sheets("ti").Cells(3, 6)
' inscription
info = ddate & "," & hheure & "," & ouv & "," & haut & "," & bas & "," &
clo

f.WriteLine (info)

' fermeture du fichier
f.Close

End Sub

Salutations

à+
twinley
"R K" le message de news:ccjeub$h67$
Bonjour,

J'utilise un fichier Excel (2000) pour concaténer des données tabulaires
(nom, prénom, adresse,...) en insérant le symbole $ entre chaque champ.
Par la suite, je copie-colle les cellules obtenues dans un fichier
javascript => J'obtiens un tableau javascript pratique pour
l'actualisation

de mes données sur site web, mais là n'est pas mon problème...
Ma question : plutôt que de copier-coller mes cellules, seraient-t-il
possible d'imaginer un script d'export automatique (bouton EXPORTER dans
Excel) vers un fichier texte (.js) quitte à ce que ce fichier soit
entièrement ré-écrit à chaque fois ?
Et si oui, pourriez-vous me donner des pistes de création d'un tel script
?


Merci d'avance,

Régis




michdenis
Le #1674487
Bonjour R K,

Tu peux toujours essayé ceci, en modifiant le nom de la feuille et l'adresse de tes données, et le nom du fichier de
destination.

'------------------------------------
Sub EcrireUnFichierTexte()

Dim fso As Object, F As Object
Dim LaLigne As String
Dim Rg As Range, A As Integer
Dim B As Integer, Tblo As Variant

With Worksheets("Feuil1")
Set Rg = .Range("A1:G10")
Tblo = Rg
End With

Set fso = CreateObject("Scripting.FileSystemObject")
Set F = fso.CreateTextfile("C:excelMonFichier.js")

For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
LaLigne = LaLigne & Replace(Tblo(A, B), ".", ",") & "$"
Next
LaLigne = LaLigne & vbCrLf
Next
F.WriteLine (LaLigne)
F.Close

End Sub
'------------------------------------


Salutations!



"R K" news:ccjeub$h67$
Bonjour,

J'utilise un fichier Excel (2000) pour concaténer des données tabulaires
(nom, prénom, adresse,...) en insérant le symbole $ entre chaque champ.
Par la suite, je copie-colle les cellules obtenues dans un fichier
javascript => J'obtiens un tableau javascript pratique pour l'actualisation
de mes données sur site web, mais là n'est pas mon problème...
Ma question : plutôt que de copier-coller mes cellules, seraient-t-il
possible d'imaginer un script d'export automatique (bouton EXPORTER dans
Excel) vers un fichier texte (.js) quitte à ce que ce fichier soit
entièrement ré-écrit à chaque fois ?
Et si oui, pourriez-vous me donner des pistes de création d'un tel script ?

Merci d'avance,

Régis
R K
Le #1674478
Merci à vous deux,

J'ai testé le script de michdenis, plus simple a adapter pour moi, et bien
que je ne sois pas familier avec les macros Excel, et bien j'ai néanmoins
réussi à faire fonctionner le script.
Le script effectue la concaténation, et c'est plus que ce dont j'avais
besoin, en effet, j'effectuais déjà au préalable une concaténation des
cellules d'une ligne par la fonction CONCATENER.
Donc, je n'ai besoin que de récupérer les données des cellules d'une
colonne, que j'écrirai ligne par ligne dans le fichier texte.
J'ai essayé d'adapter le script, pourriez-vous me dire si cela est correct :
--------------------------------------
Sub EcrireUnFichierJS()

Dim fso As Object, F As Object
Dim LaLigne As String
Dim Rg As Range, A As Integer
Dim Tblo As Variant

With Worksheets("Feuil1")
Set Rg = .Range("E2:E4")
Tblo = Rg
End With

Set fso = CreateObject("Scripting.FileSystemObject")
Set F = fso.CreateTextfile("C:essai.js")

For A = 1 To UBound(Tblo, 1)
LaLigne = LaLigne & Replace(Tblo(A, 1), ".", ",") & vbCrLf
Next
F.WriteLine (LaLigne)
F.Close

End Sub

------------------------------------------------

Mais pourquoi cette ligne : Replace(Tblo(A, 1), ".", ",")
Je préférerai simplement récupérer le contenu de la cellule tel quel, points
et virgules compris.
Y a-t-il une contre-indication à cela ?

Régis
Poster une réponse
Anonyme