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
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
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$
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
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