MANIPULATION DE FICHIER TEXTES À "DEUX COLONNES"

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 4 déc. 2007 à 20:16
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 4 déc. 2007 à 21:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44913-manipulation-de-fichier-textes-a-deux-colonnes

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 déc. 2007 à 21:45
ton code est une usine à gaz! qui plus est truffé d'erreurs

heureusement qu'il est ponctué de noms de variables intuitifs :

# If IsExist(file) Then
# Kill file
# Else
# sjgdhjsdslmgkjdfcgd = MsgBox("Fichier Introuvable", vbExclamation, "Erreur")
# End If

bien aussi, la fonction qui ne retourne rien mais avec une variable publique...

excuse le ton de ma critique, le tout se fait en moins de 20 lignes.
le premier réflexe à avoir est de mettre "option explicit"
ensuite de structurer les méthodes que tu utilises.
en l'occurrence pas la peine de mettre un module vrac qui est à peine utile

en reprenant sur ces 2 snippets :
http://www.codyx.org/snippet_extraction-chaine-caracteres-partir-occurence-separator_131.aspx#373
http://www.codyx.org/snippet_lire-toutes-lignes-fichier-texte_22.aspx#67
voici une idée de ce que çà pourrait donner

Function GetColumnsFromFile(sPath As String, Optional sSepar As String = ";") As String()
Dim FF As Integer, sBuffer As String, aLines() As String, aCols() As String, i As Long, j As Long, aRes() As String FF FreeFile: i 0: j = 0

On Error Resume Next
Open sPath For Input As #FF
sBuffer = Input(LOF(FF), #FF)
Close #FF
If Not (Err.Number = 0) Then Exit Function

aLines = Split(sBuffer, vbNewLine)
For i = 0 To UBound(aLines)
aCols = Split(aLines(i), sSepar)
If i = 0 Then ReDim aRes(UBound(aLines), UBound(aCols))
For j = 0 To UBound(aCols)
aRes(i, j) = aCols(j)
Next j
Next i

GetColumnsFromFile = aRes
Erase aLines: Erase aCols: Erase aRes
End Function

++
Utilisateur anonyme
4 déc. 2007 à 20:17
T'as raison dsl je met tout de suite à jours !
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 déc. 2007 à 20:16
il manque 2 modules
Rejoignez-nous