Excel 2003 :1 ligne XLSX => 3 lignes modifiées TXT

Résolu/Fermé
NaXiLeAn Messages postés 112 Date d'inscription mercredi 27 juillet 2016 Statut Membre Dernière intervention 2 juin 2020 - 18 nov. 2016 à 11:39
NaXiLeAn Messages postés 112 Date d'inscription mercredi 27 juillet 2016 Statut Membre Dernière intervention 2 juin 2020 - 21 nov. 2016 à 13:44
Bonjour,

Je suis loin d'être experte, mais je vais essayer d'être le plus précise possible...
Et vous remercie par avance de l'aide et du temps que vous voudrez bien m'accorder.

J'aimerais créer un fichier Texte (séparateur point-virgule) à partir d'un tableau sur Excel qui comporterait un nombre de ligne non défini (variable).
Avec les particularités suivantes :
- le fichier texte portera le même nom que le fichier Excel,
- les 2 premières lignes du fichier Excel ne sont pas à prendre en compte quelque soit leurs contenus,
- le fichier Texte comportera une ligne vide en début de fichier
- la deuxième ligne du fichier Texte sera systématique renseignée par "J'aime la galette"

- la 3è ligne du fichier comportera les données de la 3è ligne du fichier Excel dans l'ordre suivant :
  • colonne A; colonne B, colonne C, colonne D, colonne E, colonne F, colonne G, colonne H

- la 4è ligne du fichier comportera les données de la 3è ligne du fichier Excel dans l'ordre suivant :
  • colonne A; le texte "Fait", colonne C, colonne D, colonne E, colonne F, colonne G=colonne F*0,2, colonne H=colonne F+colonne G (qui vient d'être calculée=colonne F*0,2)

- la 5è ligne du fichier comportera les données de la 3è ligne du fichier Excel dans l'ordre suivant :
  • colonne A; le texte "Fait", colonne C, colonne D, colonne E, colonne F, colonne G=colonne F*0,55, colonne H=colonne F+colonne G (qui vient d'être calculée=colonne F*0,55)


la 6è ligne du fichier comportera les données de la 4è ligne du fichier Excel dans l'ordre suivant :
  • colonne A; colonne B, colonne C, colonne D, colonne E, colonne F, colonne G, colonne H

- la 7è ligne du fichier comportera les données de la 4è ligne du fichier Excel dans l'ordre suivant :
  • colonne A; le texte "Fait", colonne C, colonne D, colonne E, colonne F, colonne G=colonne F*0,2, colonne H=colonne F+colonne G (qui vient d'être calculée=colonne F*0,2)

- la 8è ligne du fichier comportera les données de la 4è ligne du fichier Excel dans l'ordre suivant :
  • colonne A; le texte "Fait", colonne C, colonne D, colonne E, colonne F, colonne G=colonne F*0,55, colonne H=colonne F+colonne G (qui vient d'être calculée=colonne F*0,55)


Etc. jusqu'à atteindre la 1ere cellule vide de la colonne A

J'espère ne pas avoir été trop confuse...

Merci d'avance :D

A voir également:

1 réponse

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
18 nov. 2016 à 17:28
Bonjour,

code a mettre dans un module, adaptez le nom de la feuille et le chemin du fichier:

Sub Export_Txt()
    With Worksheets("feuil1")
        derlig = .Range("A" & Rows.Count).End(xlUp).Row
        TInfos = .Range("A3:H" & derlig).Value
    End With
    LTInf = UBound(TInfos, 1)
    Close
    Fichier = ActiveWorkbook.Name & ".TXT"
    Chemin = "D:\_Test_Txt\"
    SepT = ";"
    Open Chemin & Fichier For Output As #1
        Print #1,
        Print #1, "J'aime la galette"
        
        For N = 1 To LTInf
            For NL = 1 To 3
                If NL = 1 Then         'A;B   ;C;D;E;F;G      ;H;
                    Print #1, TInfos(N, 1); SepT; TInfos(N, 2); SepT; TInfos(N, 3); SepT; TInfos(N, 4); SepT; TInfos(N, 5); SepT; TInfos(N, 6); SepT; TInfos(N, 7); SepT; TInfos(N, 8)
                ElseIf NL = 2 Then  'A;Fait;C;D;E;F;F*0.2;F+F*.02
                    Print #1, TInfos(N, 1); SepT; "Fait"; SepT; TInfos(N, 3); SepT; TInfos(N, 4); SepT; TInfos(N, 5); SepT; TInfos(N, 6); SepT; TInfos(N, 6) * 0.2; SepT; TInfos(N, 6) + TInfos(N, 6) * 0.2
                Else                        'A;Fait;C;D;E;F;F*0.55;F+F*0.55
                    Print #1, TInfos(N, 1); SepT; "Fait"; SepT; TInfos(N, 3); SepT; TInfos(N, 4); SepT; TInfos(N, 5); SepT; TInfos(N, 6); SepT; TInfos(N, 6) * 0.55; SepT; TInfos(N, 6) + TInfos(N, 6) * 0.55
                End If
            Next NL
        Next N
    Close 1
        
End Sub


A+
0
NaXiLeAn Messages postés 112 Date d'inscription mercredi 27 juillet 2016 Statut Membre Dernière intervention 2 juin 2020 1
21 nov. 2016 à 13:44
Bonjour f894009,
Mille mercis et plus encore!!!
0