Export vers txt plages selectionnés
Hello,
Je dispose d'un tableau comme celui ci
Date
Date Réf A Réf B Client
21/05/2018 AA BB Alain
22/05/2018 CC DD Denise
25/05/2018 EE FF Fred
26/05/2018 GG HH Hugo
02/06/2018 II JJ Jacky
Je souhaiterais construire une macro qui m'exporte vers un fichier txt (séparateur tabulation (c'est important)), ce tableau mais uniquement sur la plage selectionné.
Par exemple :
Macro(Date1, Date2), avec
Date1 = 21/05/2018
Date2 = 25/05/2018
...ne m'exporte que les 3 premières lignes.
J'ai un bout de code qui me construit l'export sur une plage définie, mais je n'arrive pas à l'adapter :
Sub Export()
Dim Plage As Object, oL As Object, oC As Object, Sep$, Tmp$
Dim FileN As String
FileN = Sheets("Feuil1").Range("Z1") 'Nom du fichier créé
Sep = vbTab
With Worksheets(1)
Set Plage = .Range("A1:D11")
End With
FileN = ThisWorkbook.Path & "\test\" & FileN
Open FileN & ".txt" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
Close
End Sub
Merci à vous !
Bonjour,
Comme souvent, un fichier exemple aurait permis de se rendre compte de la structure des données et de tester la proposition.
En imaginant que les deux dates figurent respectivement en Y1 et Y2, essaie ce qui suit (... en admettant que j'aie compris !?)
Celle-ci pour appeler ta Sub Export, en lui passant les deux dates :
ChoixDates()
Sub Export Sheets(1).[Y1], Sheets(1).[Y2]
End Sub
Celle-ci est la tienne, adaptée :
Sub Export(dateDeb As Date, dateFin As Date)
Dim Plage As Object, oL As Object, oC As Object, Sep$, Tmp$
Dim FileN As String
FileN = Sheets("Feuil1").Range("Z1") 'Nom du fichier créé
Sep = vbTab
With Worksheets(1)
premDate = Application.Match(CDbl(dateDeb), .Columns(1), 0)
derDate = Application.Match(CDbl(dateFin), .Columns(1), 0)
Set Plage = .Cells(premDate, 1).Resize(derDate - premDate + 1, 4)
End With
FileN = ThisWorkbook.Path & "\test\" & FileN
Open FileN & ".txt" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
Close
End Sub
Effectivement.
J'y ai joint un exemple.
Agauche, mon tableau de départ, ua centre, les date1 et date2 (qui peuvent varier), à droite, el résultat attendu sous fichier txt.
@U. Milité : merci pour ton code, mais je n'arrive pas à l'adapter sur mon exemple. Je suis un peu novice en la matière
Re-bonjour,
Je présume que l'emplacement des dates ne t'aurait pas posé problème !?
Par contre, dans ton fichier, il n'y a pas de nom prévu pour le fichier en Z1 ... c'est normal et volontaire?
La grosse différence étant que les "dates de fin" apparaissent plusieurs fois ... ce qui n'était pas le cas dans la situation de départ!?
À tester soigneusement!
Je joins le fichier, pour le cas où ...
C'est presque parfait, merci !
Les dates de fin qui apparaissent plusieurs fois, c'est normal, pas de soucis.
Il ne manque que les en têtes par contre, tu saurais comment les récupérer ?
Merci encore !
Ah mais je n'ai pas dit que ce n'était pas normalLes dates de fin qui apparaissent plusieurs fois, c'est normal, pas de soucis
Par contre tu ne dis rien du nom du fichier qui ne figure pas en Z1, contrairement à ce qui était prévu dans le code que tu avais trouvé !?
Il ne manque que les en têtes par contre, tu saurais comment les récupérer ?
Essaie de modifier comme suit la dernière instruction avant le End With
:
Set Plage = Union(.[A1:D1], .Cells(premDate, 1).Resize(derDate - premDate + 1, 4))
La plage A1:D1 correspondant à celle contenant les titres dans ton exemple (et qu'il conviendra d'adapter, le cas échéant)