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 , un libellé (E), un montant débit (F) et un montant crédit (G).

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

Rechercher des sujets similaires à "creation fichier txt partir feuille"