Export données onglet en txt avec condition

  • Initiateur de la discussion Initiateur de la discussion Sandrine123
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sandrine123

XLDnaute Nouveau
Bonjour,

J'aimerais de l'aide pour une macro excel .

Je possède un fichier qui se nomme classeur_exporter.xls

à l'intérieur j'ai des données sur le 1er onglet.

Je souhaiterais exporter cette onglet en format txt (avec séparateur virgule pour les colonnes ) tant que les données dans la colonne H sont supérieures à 0.

Dans cet exemple, il faudrait que l'export s'arrête à la ligne excel 66.

Cela donnerait pour le fichier texte final :
Code:
,;42144,,,,,,
2015.R,,,,,,,
1,D,?,1,,,0,0.045,0.000,0.000,0.000,0,0,1
2,D,?,2,,,0,0.042,0.000,0.000,0.000,0,0,1
3,D,?,3,,,0,1.176,0.000,0.000,0.000,0,0,1
4,D,?,4,,,1,1.192,0.000,0.000,0.000,0,0,8388609
5,D,?,5,,,1,0.84,0.000,0.000,0.000,69.83779044,0,8388609
6,D,?,6,,,1,0.125,0.000,0.000,0.000,7.145988601,-,8388609
7,D,?,7,,,1,0.136,0.000,0.000,0.000,8.110477861,-,8388609
8,D,?,8,,,1,0.114,0.000,0.000,0.000,6.181499342,-,8388609
9,D,?,9,,,1,0.103,0.000,0.000,0.000,5.217010083,-,8388609
...
64,D,?,0,,,1,1.018,0.000,0.000,0.000,85.44498027,-,8388609


Merci d'avance de votre aide.

Bon mercredi à tous.
 

Pièces jointes

Re : Export données onglet en txt avec condition


Bonjour,

bizarrerie de déjà voir des virgules dans les deux premières lignes de la feuille de calculs !

Comment cette feuille est-elle alimentée ?
Un fichier texte importé ? Alors l'idéal serait de remonter à la source …

_______________________________________________________________________________
Je suis Charlie - Je suis Bardo

 
P'tite démonstration !

VB:
Sub Demo()
    With Feuil1
        With .Cells(1).CurrentRegion.Resize(, .Cells(3, .Columns.Count).End(xlToLeft).Column).Rows
            For R& = 1 To .Count
                With .Item(R)
                    If R < 3 Or .Cells(8).Value > 0 Then S$ = S$ & Join(Application.Index(.Resize(2).Value, 1), ",") & vbNewLine
                End With
            Next
        End With
    End With
                                                          FF% = FreeFile
    Open ThisWorkbook.Path & "\Export.txt" For Output As #FF
                                                   Print #FF, S;
                                                   Close #FF
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post pour chaque message ayant aidé …

_______________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
 
Re : Export données onglet en txt avec condition

Bonjour Sandrine123, Marc L,

Il paraît judicieux de remplacer les virgules du fichier source par des points, pour éviter de les confondre avec le séparateur (virgule) :

Code:
Sub FichierTexte()
Dim tablo, ub&, i&, j%, t$, S$, FF%
tablo = ActiveSheet.UsedRange
ub = UBound(tablo, 2)
For i = 1 To UBound(tablo)
  If CStr(tablo(i, 8)) <> "0" Then
    t = ""
    For j = 1 To ub
      t = t & "," & Replace(tablo(i, j), ",", ".")
    Next
    S = S & Mid(t, 2) & vbNewLine
  End If
Next
FF = FreeFile
Open ThisWorkbook.Path & "\Export.txt" For Output As #FF
Print #FF, S;
Close #FF
End Sub
A+
 
Re : Export données onglet en txt avec condition

Re,

On peut aussi ajouter 2 Replace sur la macro de Marc L :

Code:
Sub Demo()
    With Feuil1
        With .Cells(1).CurrentRegion.Resize(, .Cells(3, .Columns.Count).End(xlToLeft).Column).Rows
            For R& = 1 To .Count
                With .Item(R)
                    If R < 3 Or .Cells(8).Value > 0 Then S$ = S$ & Replace(Replace(Join(Application.Index(.Resize(2).Value, 1), "µ"), ",", "."), "µ", ",") & vbNewLine
                End With
            Next
        End With
    End With
                                                          FF% = FreeFile
    Open ThisWorkbook.Path & "\Export.txt" For Output As #FF
                                                   Print #FF, S;
                                                   Close #FF
End Sub
Mais cette macro travaille sur des Rows, c'est peut-être moins rapide qu'un tableau VBA, à voir.

Edit : le tableau VBA est en effet plus rapide.

Le calcul de S prend 3 millisecondes contre 7 millisecondes avec les Rows.

A+
 
Dernière édition:
Re : Export données onglet en txt avec condition


Heu …

Vu le post #3, il n'y a pas de virgule dans la source !

_______________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
 
Re : Export données onglet en txt avec condition

Re,

Sauf si Sandrine est sur une version anglaise, il y a des virgules pour les nombres en colonnes H et L.

Qui se répercutent sur le fichier texte si on ne les modifie pas.

A+
 
Re : Export données onglet en txt avec condition

Bonjour le fil, le forum,

Autre solution si les nombres avec virgule sont uniquement en colonnes H (8) et L (12) :

Code:
Sub FichierTexte()
Dim tablo, ub&, i&, j%, t$, S$, FF%
tablo = ActiveSheet.UsedRange
ub = UBound(tablo, 2)
For i = 1 To UBound(tablo)
  If i < 3 Or tablo(i, 8) > 0 Then
    t = ""
    For j = 1 To ub
      If i < 3 Or j = 8 Or j = 12 Then
        t = t & "," & Replace(tablo(i, j), ",", ".")
      Else
        t = t & "," & tablo(i, j)
      End If
    Next
    S = S & vbNewLine & Mid(t, 2)
  End If
Next
S = Mid(S, 2)
FF = FreeFile
Open ThisWorkbook.Path & "\Export.txt" For Output As #FF
Print #FF, S;
Close #FF
End Sub
C'est plus rapide => 1,8 milliseconde.

Bonne journée.
 
Re : Export données onglet en txt avec condition


Oui, vaut mieux uniformiser les formats des nombres avant !
J'étais resté sur les virgules dans les deux premières lignes au lieu des colonnes des nombres.

J'aurais dû utiliser par exemple International ou encore Replace

_______________________________________________________________________________
Si déboguer est l’art de corriger les bogues, alors programmer est l’art d’en faire !
 
Dernière édition:
Re : Export données onglet en txt avec condition

Re,

Heu …

Aucun souci (...)

Bah voyez ci-joint le fichier Export que j'obtiens sur Excel 2013 avec votre macro Demo.

Les virgules des colonnes H et L sont conservées.

Ce n'est pas ce que souhaite Sandrine au post #1.

Lancez ma macro FichierTexte pour obtenir ce qu'elle veut.

Edit : bon vous avez édité votre dernier message...

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
792
Réponses
5
Affichages
625
Réponses
7
Affichages
845
Retour