[VB.NET -> VBA]Copier/coller Excel vers .txt - Problème de ligne vide

speedou92 Messages postés 7 Date d'inscription mercredi 24 juillet 2013 Statut Membre Dernière intervention 29 juillet 2013 - 24 juil. 2013 à 11:30
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 29 juil. 2013 à 23:25
Bonjour à tous,

Je réalise le code suivant pour copier coller une plage de données vers un nouveau fichier txt.

Dim ws As Worksheet
User_code = Environ("Username")
Dim FileNum As Integer, cl As Range, z As Integer, y As Integer
Dim myStr As String
FileNum = FreeFile

logfile = "C:\Documents and Settings" & User_code & "\Mes documents\mandats_" & Format(Date, "yyyymmdd") & "_" & Format(Time, "hhmmss") & ".txt"
Set ws = ActiveWorkbook.Worksheets("Données globales")


Open logfile For Append As #FileNum

Do While Application.Worksheets("Données globales").Range(Cells(2, 1), Cells(derlig, 53)).Value <> ""



z = 14000
For Each cl In Range(Cells(2, 1), Cells(derlig, 53))

       y = cl.Row
   If y = z Then
      myStr = myStr & cl

    Else: Print #FileNum, myStr
       z = cl.Row
       myStr "": myStr myStr & cl

    End If
Next

Print #FileNum, myStr
Close #FileNum


Le problème est que la première ligne du fichier txt est vide...

Auriez vous une idée de la façon dont cette ligne apparaît? Comment puis-je la supprimer?

Merci par avance de vos réponses.

7 réponses

Profil bloqué
24 juil. 2013 à 18:17
Tu programmes en VB Net là ?
VBA plutôt !

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
speedou92 Messages postés 7 Date d'inscription mercredi 24 juillet 2013 Statut Membre Dernière intervention 29 juillet 2013
24 juil. 2013 à 22:19
Honte à moi... je me suis trompée de forum
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 juil. 2013 à 16:05
Bonjour,

Si tu cliques droit sur l'onglet et que tu utilises Déplacer ou Copier..., tu choisis Créer une copie dans un nouveau classeur et ça va te créer un nouveau classeur que tu peux enregistrer sous... un nom au format TXT.

Tu peux exécuter tout ça avec l'enregistreur de macro et tu auras tout ce que tu as besoin. Juste quelques modifications selon tes besoins.

C'est simple et efficace.


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
speedou92 Messages postés 7 Date d'inscription mercredi 24 juillet 2013 Statut Membre Dernière intervention 29 juillet 2013
25 juil. 2013 à 16:14
Merci de ta réponse.

J'ai essayé, mais le problème est que ça me copie toutes les lignes, et je n'ai besoin que jusqu'à la dernière non vide...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
speedou92 Messages postés 7 Date d'inscription mercredi 24 juillet 2013 Statut Membre Dernière intervention 29 juillet 2013
25 juil. 2013 à 16:20
Et la première, avec les intitulés de colonnes qu'il ne me faut pas
0
speedou92 Messages postés 7 Date d'inscription mercredi 24 juillet 2013 Statut Membre Dernière intervention 29 juillet 2013
29 juil. 2013 à 17:02
Je n'ai toujours pas trouvé de solution.

Mes lignes de données ont un format bien précis qu eje dois respecter dans le texte.

Le copier coller de mon code lors de mon premier post fonctionne très bien, c'est juste la première ligne qui est bloquante.

Avez vous des idées?
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
29 juil. 2013 à 23:25
Essaie comme ceci en adaptant à tes besoins

Sub CopieFichier()
    Dim I As Long, J As Long
    Dim nbLignes As Long, nbColonnes As Long
    Dim strTemp As String
    Dim FF As Integer
    
    nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
    nbColonnes = Cells(1, Columns.Count).End(xlToLeft).Column
    
    FF = FreeFile
    Open "C:\Test.txt" For Output As #FF
    
    For I = 2 To nbLignes
        strTemp = ""
        For J = 1 To nbColonnes
            strTemp = strTemp & Cells(I, J) & vbTab
        Next
        Print #FF, Left(strTemp, Len(strTemp) - 1)
    Next
    
    Close #FF
End Sub 

0
Rejoignez-nous