Suppression du dernier retour chariot ou retour à la ligne

Bonjour le forum,

j'ai deux boutons sur mon userform DMH2 et DMH4 qui me permettent de générer deux fichiers (csv) en automatique à partir de la base de données.

Les deux fichiers se génèrent très bien ce n'est pas ça le problème, mais ce qui me pose un souci c'est le dernier retour chariot (ou retour à la ligne) à la dernière ligne des deux fichiers générés,

Je voudrais supprimer cette dernière ligne vide due au retour chariot ou retour à la ligne (je ne vois pas la différence entre retour chariot et retour à la ligne) sur les deux fichiers générés parce qu'elle me bloque l'intégration de ces derniers dans un autre outil, du coup je suis obligé de la supprimer manuellement.

Merci d'avance pour votre aide

Ci joint le fichier


Edit dan : fichier supprimé suite à données confidentielles

à titre informatif, j'ai constaté cette ligne vide, sur les deux fichiers csv générés, suite à l'ouverture de ces derniers avec Bloc notes.

Merci d'avance

Bonjour

Merci de ne mettre que des fichiers sans données confidentielles. Je peux imaginer que les personnes mentionnées n'apprécieraient pas ce que j'ai constaté..... J'ai supprimé le fichier en question

Concernant la le retour chariot, je ne vois rien au niveau du fichier. Merci d'expliquer

Crdlt

Bonjour Dan,

En fait le retour chariot c'est sur les deux fichiers générés DMH2 et DMH4 et pas sur le fichier que j'ai joint


Vous pourriez modifié juste sur le code les chemins de sauvegarde des deux fichiers afin de les adaptés à votre pc, et vous pourriez généré les deux fichiers en cliquant sur les boutons DMH2 et DMH4, vous allez vous rendre compte qu'il y a une ligne vide à la fin des deux fichiers

Ci joint le fichier en question


c'est le retour à la ligne (la ligne vide ) à la fin des deux fichiers DMH2 et DMH4 (générés à partir des deux boutons DMH2 et DMH4 sur le userform) qui me pose problème.

Merci d'avance pour votre aide

Quelqu'un dans le forum aura la gentillesse de m'aider.

Merci d'avance

Bonjour

J'ai rencontré ces PB en important des fichiers BO

Pour éliminer ces cellules parasites j'ai recherché la dernière cellule active de la zone, récupéré le n° de ligne, puis nommé une zone "n° ligne+1: ligne de fin d'onglet" ==> Rows(vzone).select puis suppression de la zone.

Astuce de bidouilleur qui vaut ce qu'elle vaut, et que tu n'auras pas de mal à tester vu le niveau de ton VBA !

Cordialement

FINDRH

Bonjour

J'avais bricolé cette macro, mais j'hésite car en la testant elle m'avait remplacé les ; (points virgule) par des , (virgules) et je sais pas pourquoi

J'ai fait d'autres essai et pas reproduit ce problème mais ......

Pour utiliser cette macro

Il faut modifier la fin de tes 2 macros

Pour la macro CommandButton4_Click

   
    ActiveWorkbook.SaveAs Filename:="C:\Users\FPY611\Desktop\fichier DMH2.csv", _
    FileFormat:=xlCSV, CreateBackup:=False, local:=True
    ActiveWorkbook.Close savechanges:=False
    NettoyageCR "C:\Users\FPY611\Desktop\fichier DMH2.csv"
    End If
End Sub

Pour la macro CommandButton5_Click

    ActiveWorkbook.SaveAs Filename:="C:\Users\FPY611\Desktop\fichier DMH4.csv", _
    FileFormat:=xlCSV, CreateBackup:=False, local:=True
    ActiveWorkbook.Close savechanges:=False
    NettoyageCR "C:\Users\FPY611\Desktop\fichier DMH4.csv"
    End If
End Sub

Ensuite tu rajoutes cette macro dans un module

Option Explicit

Sub NettoyageCR(NomDeFichier As String)
' http://frederic.sigonneau.free.fr/code/Formats/FichiersTexte1.txt
' Modifié par Banzai64 pour enzodekouba  le 27 Février 2014
Dim NoFichier As Integer
Dim LongueurFichier As Long
Dim MaVariable As String

  NoFichier = FreeFile()
  'Ouvre le fichier en mode lecture.
  Open NomDeFichier For Input As #NoFichier
  LongueurFichier = FileLen(NomDeFichier)
  MaVariable = Input(LongueurFichier, NoFichier)
  Close NoFichier

  ' Tant que le dernier caractère est un CR
  ' On diminue la taille
  While Asc(Mid(MaVariable, LongueurFichier - 1, 1)) = 13
    LongueurFichier = LongueurFichier - 1
  Wend

  NoFichier = FreeFile()
  'Ouvre le fichier en mode ecriture.
  Open NomDeFichier For Output As #NoFichier
  Print #NoFichier, Left(MaVariable, LongueurFichier);
  Close NoFichier

End Sub

A toute fin utile

Bonjour Benzai 64, Bonjour FINDRH, Bonjour le forum,

Merci beaucoup, c'est trés gentil de votre part. ta solution fonctionne nickel chrome, merci encore une fois.

Amicalement

Merci Banzai pour le partage de ta fonction NettoyageCR()

Je l'ai intégré à la fin de mon code qui génère un fichier texte et cela à réglé mon problème de retour chariot (et d'intégration) !

Pour info : dans mon cas, j'avais un CR+LF à la fin de ma ligne, j'ai donc modifié (grossièrement) le code pour réduire de 2 la LongeurFichier au lieu de 1

Bonne journée

Rechercher des sujets similaires à "suppression dernier retour chariot ligne"