Il était un peu tard hier soir et j'ai oublié de vérifier les données renvoyées …
Démonstration bis suivie d'une explication de texte pour GoFio :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Sub DemoBis()
Open "D:\Tests\GoFio exemple .txt" For Input As #1
TL = Split(Input(LOF(1), #1), vbNewLine): Close
ReDim LC#(UBound(TL), UBound(Split(TL(0), " ")))
For L& = 0 To UBound(TL)
SP = Split(TL(L), " ")
For C& = 0 To UBound(SP): LC(L, C) = Val(SP(C)): Next
Next
[A1].Resize(UBound(LC) + 1, UBound(LC, 2) + 1).Value = LC
MsgBox "Tableau LC de " & UBound(LC) + 1 & " lignes de " & UBound(LC, 2) + 1 & " colonnes
"
End
End Sub |
• Lignes n°2 & 3 : l'importation globale en une lecture unique des lignes du fichier texte ne change pas …
• Ligne n°4 : l'objet de cette version bis, le type de données de la variable tableau LC !
En fait c'est suite à la lecture du code de GoFio que j'ai déclaré dans la démo initiale le tableau en Single.
Mais ce type de variable altère trop les décimales des données du fichier; afin d'en conserver l'exactitude,
il faut évidemment déclarer le tableau en Double …
De plus, contrairement à la version initiale dont le premier indice commence à 1, dans celle-ci il débute à zéro
comme le tableau renvoyée par la fonction Split, cela peut être plus simple à gérer, bref les goûts et les couleurs,
il y a donc les deux manières entre chaque démo …
Dans la démo initiale, la ligne n°8 vérifiait le nombre de colonnes du tableau vis à vis de celui de la ligne,
utile pour un fichier texte à colonnes variables selon les lignes.
Dans cette seconde version, vu que le fichier joint comporte toujours le même nombre de colonnes,
cette ligne n°4 déclare une fois pour toute le tableau, plus besoin de vérifier ensuite, plus rapide pour les gros fichiers …
• Ligne n°7 : à cause du nombre d'espaces variant entre les données du fichier (4 la première fois, 3 ensuite),
j'ai utilisé dans la précédente version la fonction de feuille de calcul SUPPRESPACE n'en conservant
qu'un seul entre les données, séparateur par défaut de la fonction
Split …
Choisir comme séparateur le nombre d'espaces minimum pouvant laisser un espace en début de chaîne
ne gêne pas pour la conversion numérique et c'est peut être plus rapide pour les gros fichiers, bien vu Patrick !
Comme l'indice du tableau commence à zéro - initialisation en ligne n°6 - comme le tableau renvoyé par
Split,
il n'y a plus besoin de retirer un à la variable
L …
• Ligne n°8 : la conversion explicite du type de données n'est pas obligatoire comme dans la fonction CSng
de la ligne n°9 de la version initiale, peut-être une fois encore serait-ce plus rapide sans …
• Lignes n°11-12 : il est nécessaire d'ajouter 1 aux dimensions du tableau pour obtenir le nombre de lignes et de colonnes …
@ l'ami canadien Docmarti :
pas étonnant que ce soit plus lent via FSO !
Récemment une recherche de fichiers sur un disque dur avait besoin de 2 minutes 15 secondes et moins de 20 secondes sans !
Mais as-tu déjà essayé comme les lignes n°2 & 3 de mon code ? Tabernacle !
Partager