Supprimer Retour Chariot

munity

XLDnaute Junior
bonjour à tous

j'ai 2 petits problèmes avec l'instructions suivante :
problème 1:
sur certains fichiers texte il ne considère qu'une seule ligne alors qu'il y en a plusieurs (il ne prend pas en compte le retour chariot ???)

'Open Chemin + Fichier For Input As #1
' Do While Not EOF(1)
' Line Input #1, texte
' NbLignes = NbLignes + 1
' Loop
' Close #1

problème 2 :
Je souhaiterai qu'en plus du comptage de ligne, il me supprime le retour chariot de la dernière ligne si présent

merci à tous de votre aide

munity
 

munity

XLDnaute Junior
Re : Supprimer Retour Chariot

salut renauder

non je ne pense pas qu'il vienne d'unix
par contre une personne ouvre ces fichiers avec Ultra Edit pour controler ceux ci avant intégration dans outil Informatique
moi je ne fais que lister les fichiers et prendre quelque informations afin d'éviter d'ouvrir tous les fichiers présent sur le serveur (gain de temps important)
la solution semblait idéal et rapide moins de 2 sec pour une 20éne de fichiers
malheureusement je me suis rendu compte (par hasard) du problème énoncé dans le fil et je ne parviens pas à le résoudre avec ces instructions
la parade c d'ouvrir les fichiers par macro
compter les lignes non vides et le fermer sans enregistrer
plus long mais pas plus de problème
enfin si tu as la soluce avec la méthode EOF je suis preneur (plus propre et plus rapide)

merci

munity
 

RENAUDER

Nous a quitté
Repose en paix
Re : Supprimer Retour Chariot

Bonjour,
Moi aussi j'ouvrais ce fichier avec Ultra Edit et pourtant !!!
Pour résoudre ce problème, j'ai utilisé un exécutable UNIX2DOS.EXE qui me permettait de mettre un retour chariot pour chaque ligne.
J'utilise la syntaxe :
CmdConvert = "C:\Excel\5-2-3E~1\Unix\UNIX2DOS.EXE C:\Excel\5-2-3E~1\Unix\ZSD_ST~1.txt"
Set oShell = CreateObject("WSCript.shell")
Tmp = oShell.Run(CmdConvert, 1, True)
Le tmp ..., permet d'attendre la fin de l'exécution de conversion avant de continuer le programme.
Il faut utiliser des noms DOS (8.3)
L'utiliaire Clipname permet de trouver la syntaxe exacte pour le nom DOS

Envoies ton fichier si tu veux que je regarde

erenaud@orange.fr
 

munity

XLDnaute Junior
Re : Supprimer Retour Chariot

salut renauder et le phorum

ci dessous le code que j'utilise
PETITE précision il s'agit en fait de fichier texte et csv
mais jusqu'à présent je n'avais pas eu ce problème
peut être s'agit il d'un problème lors de la génération du ou des fichiers??
enfin si tu as le temps de jeter un oeil n'hésite pas :):)

Sub ListeFichier()
Dim Chemin As String
Dim Fichier As String
Dim Ligne As Integer
Dim Ext
Dim ColonneFin, LigneSup
Dim i As Integer
Application.ScreenUpdating = False
With Sheets("ImpressionListe")
.Range("a2:r65536").ClearContents
End With

Ligne = Sheets("Rel Réabo Paymt").Range("a65536").End(xlUp).Row + 1
Chemin = "C:\Documents and Settings\"
Fichier = Dir(Chemin & "*.*")
FichierBase = ActiveWorkbook.Name
Sheets("Rel Réabo Paymt").Select
While Fichier <> ""
'CODE UTILISE POUR PALIER LE NON PASSAGE A LA LIGNE
Cells(Ligne, 5) = Fichier
Workbooks.Open Filename:=Chemin + Fichier, ReadOnly:=True, local:=True
LigneSup = Cells(65536, 1).End(xlUp).Row
Workbooks(FichierBase).Activate
Sheets("Rel Réabo Paymt").Select
Cells(Ligne, 5) = Fichier
Cells(Ligne, 6) = LigneSup
Cells(Ligne, 7) = CDate(Date)
'Ligne = Ligne + 1
Workbooks(Fichier).Activate: Application.CutCopyMode = False: ActiveWindow.Close (False)
ANCIEN CODE QUI NE FONCTIONNE PLUS COMME ATTENDU
'Open Chemin + Fichier For Input As #1
' Do While Not EOF(1)
' Line Input #1, texte
' NbLignes = NbLignes + 1
' Loop
' Close #1
CODE OK POUR IDENTIFIER LA PREMIERE LIGNE DU FICHIER TXT ET UTILISE CERTAINES INFORMATIONS
Open Chemin + Fichier For Input As #1
Line Input #1, texte
VarLigne = Split(texte, ";")
For i = 1 To UBound(VarLigne)
ValLi = VarLigne(0)
ValSoc = VarLigne(2)
ValVag = VarLigne(3)
Next i
Close #1
'Workbooks(FichierBase).Activate
COPIE DANS LE FICHIER SOURCE
With Sheets("Paramètres").Range("e2:e" & Range("e65536").End(xlUp).Row)
Set c = .Find(ValSoc, LookIn:=xlValues)
If Not c Is Nothing Then
NomSoc = c.Offset(0, 1)
End If
End With
Cells(Ligne, 1) = ValVag
Cells(Ligne, 3) = NomSoc
Cells(Ligne, 4) = ValLi
Cells(Ligne, 5) = Cells(Ligne, 4) & " " & Cells(Ligne, 3) & " - " & Fichier
NomFic = Cells(Ligne, 5)
Ligne = Ligne + 1
SUPPRESSION DE FICHIER GENERE LORS OUVERTURE PAR ULTRAEDIT
If Right(Fichier, 3) = "bak" Then
Rows(Ligne - 1).Delete
Ligne = Ligne - 1
End If
RENOMME NOM FICHIER SANS OUVRIR CELUI CI (TRES PRATIQUE)
Name Chemin + Fichier As Chemin + NomFic
NbLignes = 0
Fichier = Dir
Wend
SUITE PROCESSUS
DISPATCH
End Sub

munity
 

Discussions similaires

Réponses
4
Affichages
563

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet