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

  • Initiateur de la discussion Initiateur de la discussion ivan27
  • 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 !

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
 
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))
 
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
 
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
 
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
 
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
 
- 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

Réponses
8
Affichages
468
Réponses
15
Affichages
785
Réponses
2
Affichages
330
Retour