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
 
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
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
15
Affichages
655
Réponses
2
Affichages
281
Retour