Création fichier txt à partir d'une feuille Excel
Bonjour,
Je travaille actuellement sur un projet d'export automatisé d'écritures comptables.
Mon fichier excel (2007 SP3) contient une feuille : "ExportCorea" composée de toutes les écritures comptables à partir de laquelle je crée un fichier txt.
Chaque ligne de ma feuille est composée de 7 cellules : un code journal (A), une date (B), un n° de pièce (C), un n° de compte
J'ai trouvé un code fonctionnant parfaitement qui me génère un fichier txt : "ExportMensuelNV.txt"prêt à être importé dans mon logiciel comptable (CIEL)
Hélas, CIEL en refuse totalement l'import lorsqu'il trouve une ou plusieurs lignes dont le montant débit et le montant crédit sont tous 2 à zéro. (les développeurs de CIEL n'ont pas prévu une option qui permettrait d'ignorer ces lignes et de traiter celles qui sont bonnes)
Je souhaite que ces lignes restent dans ma feuille excel car elle sert de modèle d'un mois sur l'autre.
Donc, pour palier le problème, provisoirement, je supprime manuellement dans le fichier txt généré les lignes en question !!!
Si la méthode est efficace, elle n'est pas très pratique...
Malgré de nombreuses recherches sur le net, je ne suis pas parvenu à trouver la solution. Je me permets donc de faire appel à vous.
Je souhaiterais que ne soient générées dans mon fichier txt que les lignes dont le montant débit ou crédit est supérieur à 0.
(ou qu'elle ne soit pas ajoutée dans le fichier txt si débit et crédit sont tous 2 = à 0)
Voici le code que j'utilise :
Sub Test()
Chemin = ThisWorkbook.Path
Fichier = "ExportMensuelNV.txt"
Sep = ";"
'----------------------
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(Chemin & "\" & Fichier, True)
With Sheets("ExportCorea")
For Each X In .Range("A1:" & .Range("A65536").End(xlUp).Address)
For Each Y In .Range(X, .Cells(X.Row, 256).End(xlToLeft))
Var1 = Var1 & Sep & Y.Value
Next
a.WriteLine Right(Var1, Len(Var1) - 1): Var1 = ""
Next
End With
a.Close
End Sub
Merci beaucoup par avance de votre aide.
Bien à vous,
Patrick
bonjour,
Il y a plusieurs lignes à 0 ou une seule ?
Si on pouvait avoir un bout de feuille en pièce jointe, ça serait bien...
A+
Bonjour,
A tester.
Cdlt.
Public Sub DEMO()
Dim fs As Object, a As Object
Dim Chemin As String, Fichier As String
Dim X As Long, Y As Long
Dim var1 As String
Const sep As String = ";"
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path
Fichier = "ExportMensuelNV.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(Chemin & "\" & Fichier, True)
With Worksheets("ExportCorea")
For X = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(X, 6) > 0 Or .Cells(X, 7) > 0 Then
For Y = 1 To 7
var1 = var1 & sep & .Cells(X, Y)
Next Y
a.WriteLine Right(var1, Len(var1) - 1): var1 = vbNullString
End If
Next X
a.Close
End With
Set a = Nothing: Set fs = Nothing
End Sub
Bonjour Et mille merci de votre très rapide prise en charge.
Je viens de tester le code transmis par Jean Eric qui semble parfaitement fonctionner.
Encore merci et excellent week-end.
Bonjour,
Avant toute chose, je vous remercie vivement de votre rapide réponse.
Je viens de tester le code qui semble parfaitement fonctionner.
Quant à l'efficacité et la qualité de votre intervention, Bravo.
Encore mille merci
Bien à vous,
Patrick