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

12exemple.xlsm (8.63 Ko)

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

30exemple-madjer.xlsm (17.12 Ko)

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 !

Les dates de fin qui apparaissent plusieurs fois, c'est normal, pas de soucis

Ah mais je n'ai pas dit que ce n'était pas normal c'est juste que ça rendait caduque ma première proposition !

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)

Rechercher des sujets similaires à "export txt plages selectionnes"