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.
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
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 !!