XL 2016 [RESOLU] Ne pas créer une dernière ligne vide lors de la création d'un fichier séquentiel

ivan27

XLDnaute Occasionnel
Bonjour à tous,

J'utilise le code ci-dessous (fournit par JB) pour transformer mes listes excel en fichiers séquentiels.
Comment supprimer le dernier ''Next lig'' qui ajoute systématiquement une ligne vide en fin de fichier.

Code:
Sub ExportTxtChamp()
  repertoire = ThisWorkbook.Path
  Open repertoire & "\x.txt" For Output As #1
  Set champ = [C1].CurrentRegion
  For lig = 1 To champ.Rows.Count
    ligne = ""
    For col = 1 To champ.Columns.Count
      ligne = ligne & champ.Cells(lig, col) & ";"
    Next col
    Print #1, Left(ligne, Len(ligne) - 1)
  Next lig
  Close #1
End Sub

Merci d'avance pour votre aide et bonne fin de journée
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Ivan, bonjour le forum,

Peut être en remplaçant la ligne :

Code:
ligne = ligne & champ.Cells(lig, col) & ";"
par :
VB:
ligne = IIf(ligne = "", champ.Cells(lig, col), ligne & ";" & champ.Cells(lig, col))
 

eriiic

XLDnaute Barbatruc
Pas tout à fait.
C'est juste pour la dernière ligne envoyée en impression qu'il faut laisser le ; final qui bloque l'envoi du CRLF.
Il faut continuer à le supprimer pour les autres lignes sinon tu auras tout à la suite sur une ligne unique.

Tu testes :
VB:
If lig =  champ.Rows.Count then
   Print #1, ligne
else
   Print #1, Left(ligne, Len(ligne) - 1)
endif
eric
 

ivan27

XLDnaute Occasionnel
Toujours pas bon, désolé !
J'ai systématiquement une ligne vide en fin de fichier
Lorsque j'importe ce fichier dans une application métier, la ligne vide est détectés et cela pose problèmes.

1028569
 

eriiic

XLDnaute Barbatruc
Heu oui, désolé.
Il faut bien un ; à la fin, mais pas dans la chaine puisqu'il doit faire partie de la syntaxe de Print # :
VB:
        If lig = champ.Rows.Count Then
            Print #1, Left(ligne, Len(ligne) - 1);
        Else
            Print #1, Left(ligne, Len(ligne) - 1)
        End If
eric
 

ivan27

XLDnaute Occasionnel
On se rapproche de la solution.
La ligne vide est bien supprimée.
cependant, il me manque les valeurs de la colonne de droite après le dernier '';''
J'ai ça
TEST;00461L;;FR;14050;;;
TEST;304;;ES;8150;;;
TEST;00172P;;IT;41012;;;

au lieu de ça
TEST;00461L;;FR;14050;;;5
TEST;304;;ES;8150;;;15
TEST;00172P;;IT;41012;;;3
 

Discussions similaires

Statistiques des forums

Discussions
311 716
Messages
2 081 848
Membres
101 826
dernier inscrit
dododu89