bizarre
tu utilises des fonctions obsoletes
faut utiliser les objets FileSystemObjet
je ferais plutôt comme çà
Public Sub Lecture_WW(Fichier As String)
Dim liste_champs As New Collection
Dim tab_champs() As String
Dim car, ligne As String
Dim champ As Variant
Dim nb_ligne As Integer
Dim nb_separateur As Integer
Dim taille_fichier, car_lu As Double
Dim separateur As String
'declaration de l'objet FileSystemObject
'je te laisse trouver la syntaxe exacte
'set FSO = ...
Set Liste_MAJ_WW = New Collection
separateur = conf.separateurWW
'Exit Sub ' modifier le 27 juin 2006 par Calderon Nicolas stagiaire BTS IRIS
On Error GoTo fermeture
taille_fichier = FileLen(Fichier): car_lu = 0
'Open Fichier For Input As #2
'remplacez la ligne précédente par
'création objet correpondant à ton fichier
'set ofichier = FSO.file(fichier)
'ouverture du fichier
'ofichier.open
FrmXl.status = "extraction de World Writer"
FrmXl.status.Refresh
'on dirait que tu cherches les lignes chr(10)+chr(13)
'pour çà utilisez :
'finligne=""
'while not(ofichier.endofstream)
'ofchier.lineinput
'ligne=ligne+finligne
'puis recherchez si separateur est dedans par position InStr()
'while Instr(ligne, separateur<>0)
'tu obtiens lignesanssep et finligne
'tu traites lignesanssep par un sous prog
'dans un 1er temps tu ne fais que afficher les lignessanssep
'par msgbox, pour vérifier
'dans un 2eme temps tu créé sous prog qui traite lignesanssep
'debligne
'tu cherches si ligne suivante
'si not EOF debligne=finligne+ligne suivante
'fin de lecture
While Not (EOF(2))
car = "": ligne = ""
nb_separateur = 0
car = Input(1, #2)
While car <> Chr(10) And Not (EOF(2))
car_lu = car_lu + 1
ligne = ligne + car
car = Input(1, #2)
If car = separateur Then nb_separateur = nb_separateur + 1
Wend
FrmXl.ProgressBar1.Value = car_lu / taille_fichier * 100
FrmXl.Frame1.Caption = Int(FrmXl.ProgressBar1.Value) & "%"
If nb_ligne Mod 40 = 0 Then FrmXl.Frame1.Refresh
If nb_separateur > 2 Then
tab_champs = VBA.Split(ligne, separateur)
Set liste_champs = New Collection
For Each champ In tab_champs
liste_champs.Add Trim(champ)
Next
Liste_MAJ_WW.Add liste_champs, liste_champs.item(3) & liste_champs.item(1)
End If
Wend
Close #2
Exit Sub
fermeture:
Close #2
MsgBox "Erreur de lecture du fichier :" & vbCrLf & err.Description, vbInformation, "Erreur"
Exit Sub
End Sub
si résolu, marquez le
[ Lien ]
[ Lien ]