Création de deux fichiers txt via une macro

Bonjour,

Je reviens vers vous pour solliciter une nouvelle fois votre aide. Je vous explique mon cas. Je souhaite créer une macro d'extraction de données contenu dans différents onglets dans deux fichiers txt. Dont un que j'aurais besoin d'envoyer sur un serveur FTP.

J'ai donc un fichier Excel avec 4 onglets. Je souhaiterai extraire toutes les valeurs de l'onglet 1 et 2 et les insérer dans un fichier mensuel.txt. Qui aurait donc dans mon cas présent cette forme là :

"10/14";"010101";"4323.55";"4323.55"
"10/14";"010103";"2126.09";"2126.09"
"10/14";"010104";"3901.97";"3901.97"
"10/14";"010105";"1578.46";"1578.46"
"10/14";"010131";"903.17";"903.17"
"10/14";"010132";"734.64";"734.64"
"10/14";"010133";"574.80";"574.80"
"10/14";"010134";"461.88";"461.88"
"10/14";"010201";"519.23";"519.23"
"10/14";"010202";"1902.56";"1902.56"
"10/14";"010203";"3037.69";"3037.69"
"10/14";"010204";"2948.92";"2948.92"
"10/14";"010205";"5197.07";"5197.07"
"10/14";"010209";"636.42";"636.42"
"10/14";"010210";"2668.70";"2668.70"
"10/14";"010211";"5131.11";"5131.11"
"10/14";"010212";"4174.22";"4174.22"
"10/14";"010213";"0.00";"0.00"
"10/14";"010215";"1192.19";"1192.19"
"10/14";"010216";"2245.11";"2245.11"
"10/14";"010217";"0.00";"0.00"
"10/14";"010219";"815.05";"815.05"
"10/14";"010230";"406.17";"406.17"
"10/14";"010231";"281.70";"281.70"
"10/14";"010232";"165.44";"165.44"
"10/14";"010233";"668.68";"668.68"
"10/14";"010234";"0.00";"0.00"
"10/14";"010235";"608.05";"608.05"
"10/14";"010236";"337.30";"337.30"
"10/14";"010237";"693.82";"693.82"
"10/14";"010238";"0.00";"0.00"
"10/14";"010239";"347.61";"347.61"
"11/14";"404987";"-240.00";"
"12/14";"404987";"-260.00";"
"01/15";"404987";"-260.00";"
"02/15";"404987";"-300.00";"
"03/15";"404987";"-500.00";"
"04/15";"404987";"-500.00";"
"05/15";"404987";"-520.00";"
"06/15";"404987";"-480.00";"
"07/15";"404987";"-520.00";"
"08/15";"404987";"-500.00";"
"09/15";"404987";"-480.00";"
"11/14";"300987";"0.00";"
"12/14";"300987";"0.00";"
"01/15";"300987";"0.00";"
"02/15";"300987";"0.00";"
"03/15";"300987";"-420.00";"
"04/15";"300987";"-924.00";"
"05/15";"300987";"-1008.00";"
"06/15";"300987";"-1260.00";"
"07/15";"300987";"-1008.00";"
"08/15";"300987";"-1260.00";"
"09/15";"300987";"-1008.00";"
"11/14";"080220";"0.00";"
"12/14";"080220";"0.00";"
"01/15";"080220";"0.00";"
"02/15";"080220";"0.00";"
"03/15";"080220";"0.00";"
"04/15";"080220";"-56.00";"
"05/15";"080220";"-112.00";"
"06/15";"080220";"-140.00";"
"07/15";"080220";"-112.00";"
"08/15";"080220";"-140.00";"
"09/15";"080220";"-112.00";"
"11/14";"080703";"0.00";"
"12/14";"080703";"0.00";"
"01/15";"080703";"0.00";"
"02/15";"080703";"0.00";"
"03/15";"080703";"-140.00";"
"04/15";"080703";"-280.00";"

Puis un deuxième fichier mensuel_fc.txt qui aurait toutes les données de l'onglet 3 :

"10/14";"010101";"FC2015_1";"4323.55";"201501"
"10/14";"010103";"FC2015_1";"2126.09";"201501"
"10/14";"010104";"FC2015_1";"3901.97";"201501"
"10/14";"010105";"FC2015_1";"1578.46";"201501"
"10/14";"010131";"FC2015_1";"903.17";"201501"
"10/14";"010132";"FC2015_1";"734.64";"201501"
"10/14";"010133";"FC2015_1";"574.80";"201501"
"10/14";"010134";"FC2015_1";"461.88";"201501"
"10/14";"010201";"FC2015_1";"519.23";"201501"
"10/14";"010202";"FC2015_1";"1902.56";"201501"
"10/14";"010203";"FC2015_1";"3037.69";"201501"
"10/14";"010204";"FC2015_1";"2948.92";"201501"
"10/14";"010205";"FC2015_1";"5197.07";"201501"
"10/14";"010209";"FC2015_1";"636.42";"201501"
"10/14";"010210";"FC2015_1";"2668.70";"201501"
"10/14";"010211";"FC2015_1";"5131.11";"201501"
"10/14";"010212";"FC2015_1";"4174.22";"201501"
"10/14";"010213";"FC2015_1";"0.00";"201501"
"10/14";"010215";"FC2015_1";"1192.19";"201501"
"10/14";"010216";"FC2015_1";"2245.11";"201501"
"10/14";"010217";"FC2015_1";"0.00";"201501"
"10/14";"010219";"FC2015_1";"815.05";"201501"
"10/14";"010230";"FC2015_1";"406.17";"201501"
"10/14";"010231";"FC2015_1";"281.70";"201501"
"10/14";"010232";"FC2015_1";"165.44";"201501"
"10/14";"010233";"FC2015_1";"668.68";"201501"
"10/14";"010234";"FC2015_1";"0.00";"201501"
"10/14";"010235";"FC2015_1";"608.05";"201501"
"10/14";"010236";"FC2015_1";"337.30";"201501"
"10/14";"010237";"FC2015_1";"693.82";"201501"
"10/14";"010238";"FC2015_1";"0.00";"201501"
"10/14";"010239";"FC2015_1";"347.61";"201501"
"10/14";"010240";"FC2015_1";"0.00";"201501"
"10/14";"010241";"FC2015_1";"0.00";"201501"
"10/14";"010242";"FC2015_1";"0.00";"201501

A travers un bouton (ou un menu add-ins) je souhaiterais donc pouvoir extraire ces données. Idéalement il faudrait que ce processus puisse tourner sur les versions d'Office 2003 à 2010.

Dans un soucis d'envoi du fichier mensuel sur un serveur FTP, j'ai cru comprendre qu'il fallait utiliser l'attribut PRINT#. Mais je n'ai aucune idée de son fonctionnement !!

Merci beaucoup pour votre aide qui sera de toute façon très précieuse pour moi.

9extraction.xlsx (38.89 Ko)

Bonsoir,

proposition de solution pour la création des fichiers txt

Sub exportmensuel()
    Path = ""
    q = """"
    sep = ";"

    Set wsn = Worksheets.Add

    For i = 1 To 3
        Set ws = Sheets("onglet " & i)
        If i <> 2 Then pl = 1: wsn.Cells.Clear
        dl = ws.Cells(Rows.Count, 1).End(xlUp).Row
        ws.Rows("1:" & dl).Copy wsn.Cells(pl, 1)
        pl = dl + 1
        If i > 1 Then
            If i = 2 Then fn = "mensuel.txt" Else fn = "mensuel_fc.txt"
            fn=path & fn
            dc = wsn.Cells(1, Columns.Count).End(xlToLeft).Column
            Open fn For Output As 1
            For k = 1 To dl
                For j = 1 To dc
                    Print #1, q & Trim(wsn.Cells(k, j)) & q;
                    If j <> dc Then Print #1, sep;
                Next j
                Print #1, ""
            Next k
            Close 1
        End If
    Next i
    Application.DisplayAlerts = False
    wsn.Delete
    Application.DisplayAlerts = True
    MsgBox "extraction terminée"
End Sub
10exportmensuel.xlsm (46.61 Ko)

Oh punaise merciiiiiiiiiiiiiiiiiiiiii h2so4 !!

Est-ce que tu pourrais me dire comment changer le chemin des deux fichiers ? Parce que là ça vient dans mes documents. Mais j'aimerai bien savoir comment je peux modifier ça. C'est bon merci

En tout cas merci je pense que ça va beaucoup m'aider. Il ne me reste qu'à l'inclure dans ma routine d'extraction via un envoi ftp.

En tout cas mille merci !! J'en pouvais plus !!!

Bonsoir,

tu adaptes la variable Path

exemple :

path="F:\documents\" ' ne pas oublier le dernier "\"

Bonsoir h2so4,

Oui merci j'ai compris qu'après. Je n'ai pas ma macro pour l'envoi de mon fichier via FTP. Mais si ça ne te dérange pas je t'embêterai peut-être demain si j'ai un soucis pour ajouter ça à ma macro.

En tout cas merci bonne soirée à toi !

Bonjour h2so4,

Pourrais-tu me dire comment je peux découper ton programme en deux partie distincte? Je t'explique, j'ai besoin que le fichier mensuel.txt soit envoyer sur un serveur FTP. Alors que le fichier mensuel_fc.txt lui doit être dans un dossier sur le réseau à part.

Je te remercie pour ton aide.

Bonne journée

bonjour,

tu adaptes fn dans cette ligne-ci pour y mettre le chemin adéquat (par exemple)

 If i = 2 Then fn = "f:\pourFTP\mensuel.txt" Else fn = "k:\pourserveurreseau\mensuel_fc.txt"

et tu supprimes cette ligne-ci

      fn=path & fn

Merci beaucoup pour ton aide !!

Rechercher des sujets similaires à "creation deux fichiers txt via macro"