mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 24 oct. 2006 à 20:30
Salut,
essaie ceci :
Option Explicit
Private Sub Exemple_Procedure()
Dim strFile As String
Dim strText As String
Dim strParseText() As String
Dim strMyCollection() As String
Dim ff As Integer
Dim i As Long
Dim lNb As Long
Dim lCounter As Long
For i = 0 To lNb
If Not strParseText(i) = "" Then _
strMyCollection(lCounter) = strParseText(i): lCounter = lCounter + 1
Next i
Open strFile For Output As #ff
For i = 0 To lCounter - 1
Print #ff, strMyCollection(i)
Next i
Close #ff
Erase strParseText: Erase strMyCollection
End Sub
--Mortalino--
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 24 oct. 2006 à 20:35
kakenette, ta fonction est plus courte, certe, mais je suis navré de dire que si plusieurs lignes blanches (3) se trouvent à la suite, il en restera une. (testé)
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 24 oct. 2006 à 20:48
dsl de venir foutre la merde, mais pourquoi un sub n'est pas bien? pourquoi une fonction serait mieux ????
Le code de kakenette ne retourne absolument aucune valeur, ça pourrait très bien etre un sub, et je dirais même ça serait mieux.
Pourquoi faire une focntion si on ne retourne pas de valeur ???
La seule qui me va pas dans le sub de mortalino, c'est le nom du fichier, passé en argument ça aurait été mieux (même en conservant le sub)
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 24 oct. 2006 à 20:53
Salut Casy,
et je rajouterai que dans mon code il manque une chose tout aussi essentielle : la gestion des espaces.
Si la ligne vide est en fait un (ou plusieurs) espace(s), cette "ligne vide" réapparaitra après traitement.
Il faudra donc y penser
Sinon, je suis absolument d'accord pour le nom du fichier en argument !
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 24 oct. 2006 à 20:59
On recommence, avec le nom du fichier en argument, et la gestion des espaces :
Option Explicit
' pour l'appeler :
' Call
Exemple_Procedure("C:\chemin\NomFichier.txt")
Private Sub Exemple_Procedure(ByVal strFile As String)
Dim strText As String
Dim strParseText() As String
Dim strMyCollection() As String
Dim ff As Integer
Dim i As Long
Dim lNb As Long
Dim lCounter As Long
ff = FreeFile
Open strFile For Input As #ff
strText = Input(LOF(ff), #ff)
Close #ff
For i = 0 To lNb
If Not strParseText(i) = "" Then
' *** rajout de la gestion des espaces
ici
If Not strParseText(i) = Space(Len(strParseText(i))) Then _
strMyCollection(lCounter) = strParseText(i): lCounter = lCounter + 1
End If
Next i
Open strFile For Output As #ff
For i = 0 To lCounter - 1
Print #ff, strMyCollection(i)
Next i
Close #ff
Erase strParseText: Erase strMyCollection
End Sub
--Mortalino--
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
kakenette
Messages postés218Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention15 novembre 20091 24 oct. 2006 à 21:10
Désolée, voici la fonction modifiée qui efface toutes les lignes vides même si il y a des espaces.
Function EffacerLignesBlanches(CheminFichier As String)
Dim A$
Dim T() As String
Dim TxTFichier As String
' Ouverture du fichier pour y extraire le texte
Open CheminFichier For Input As #1
Do Until EOF(1)
Input #1, A$
TxTFichier = TxTFichier & A$ & vbCrLf
Loop
Close #1
' Supprime les espaces contenue dans "TxTFichier"
T() = Split(TxTFichier, vbCrLf)
For i = LBound(T) To UBound(T)
If Trim(T(i)) <> "" Then
A$ = A$ & T(i) & vbCrLf
'MsgBox Asc(T(i))
End If
Next
' Enregistre les nouvelle modifications
Open CheminFichier For Output As #1
Print #1, A$
Close #1
'Envoie un petit message de confirmation
MsgBox "Fichier traité avec succès!", vbInformation
End Function
Ps: car ton Private Sub va deja encombrer les Sub des composants sur la
form et serra accéssible que sur la forme ou il y a ton Sub. Et puis
pour "casy" Vas sur l'amis google afin de chercher la difference entre
appelé un Sub ou une fonction ;)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 24 oct. 2006 à 21:26
c'est clair que ça sert à rien de chippoter.
Mais j'ai un peu cherché sur le net, je ne trouve aucune diff. entre les deux (sauf le retour de valeur pour la fonction).
De plus, quant on sais qu'au niveau compilation c'est la même chose, tout est fonction.......
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #