Importation de plusieurs fichiers .log (txt plus simplement)

yannoch

XLDnaute Junior
Bonjour à tous sur le forum,
Ca faisait longtemps que je n'étais pas venu sur le forum, en 2004 la dernière fois sous le pseudo yannick01.
Je n'ai pas reconnu le forum de suite, mais j'ai cru comprendre après une petite recherche, qu'une migration vers cette nouvelle mouture avait eu lieu (les comptes n'ont pas migré apparemment, ou peut-être qu'il y a eu un nettoyage des comptes inactifs depuis longtemps car je n'ai pas retrouvé le mien).

Bref, comme la dernière fois, je suis toujours aussi nul en vba et je bloque assez vite, le forum ayant une base de connaissances assez importante aujourd'hui, les recherches n'en deviennent que plus complexes et longues pour trouver son bonheur.
Malgrè que mes recherches continuent, je viens soliciter un peu (beaucoup) d'aide de votre part.
Pour rentrer dans le vif du sujet, je souhaite examiner des fichiers logs de serveurs exchanges, ces fichiers sont lourd, souvent plus de 65536 lignes (1er problème...), comprennent aussi bien des lettres que des chiffres et sont surtout nombreux.
J'ai repris un de mes vieux fichiers xls pour l'importation de fichier txt et création de graphe, que j'ai crée à l'époque grâce aux personnes de ce forum mais ne marchait qu'avec des chiffres et j'ai donc remplacé le code d'importation pour une macro que j'ai enregistré.
Je vous met en pièce jointe 3 fichiers, le premier "20060626.log" est un très court exemple de fichier à analiser, le deuxième "20060626.xls" est un exemple de ce que ça donne si j'importe simplement le log suivant certains paramètres. Et le troisièment "graphe-dyna_simple.xls", le fichier sur lequel je travaille ou ils vous suffira de cliquez sur "inserez valeur courbe 1", de sélectionner le log et vous verrez ce que ça donne.
Les pièces devant avoir une taille limité, voici un lien pour le zip:
import_log.zip
Voici donc mon avalanche de problème/question:
1- lorsque j'importe ce fichier log, il me l'importe sur un nouveau classeur, serait-il alors possible de l'importer dans le classeur en cours, à partir d'une ligne précise et pas de la première?
2-Serait-il alors possible d'importer plusieurs fichiers d'un même répertoire, sur le même classeur (peu importe si c'est sur des feuillets différents ou pas) et de récuperer le noms des fichiers dans une plages de cellules précise?
j'ai vu 2-3 exemples sur le forum pour le nom des fichiers, mais je n'ai pas vraiment compris comment ça marchait et surtout comment l'adapter à mon cas.
3-Comment contourner la limitation des 65536 lignes? traiter les fichiers à l'aide d'une macro (en supprimant certaines lignes) avant de l'importer ou est-ce possible de l'avoir en entier?
pour le moment, lorsque j'importe le fichier, s'il fait plus de 65536 lignes, je n'aurais pas la suite, je supprime les colonnes qui ne m'intéresse pas, et les lignes aussi mais là c'est beaucoup plus long, j'ai trouvé 2 méthodes que vous verrez dans le code (1 en commentaire qui est supra longues mais qui marche bien) et l'autre plus rapide (macro traitement() donc mon fichier) mais que je dois réaliser en plusieurs fois sinon excel fini par planter. S'il n'y a pas plus rapide au moins plus stable, le plus simple est de filtrer les données, celles non souhaitées seront seulement masqués mais au moins ça sera rapide.

Voilà, c'est tout pour l'instant (beaucoup de chose en fait), n'ayant que très peu de connaissances sur le vb6 (à peine pour comprendre le code, et encore), j'espère que vous pourrez m'aidé. C'est dans le cadre de mon stage et c'est assez urgent, car si je ne trouve pas de solution, je vais devoir le faire manuellement pour chaque fichier :( .

Merci d'avance pour vos réponse
Cordialement
Yannick
 

yannoch

XLDnaute Junior
Re : Importation de plusieurs fichiers .log (txt plus simplement)

Après une nouvelle recherche, j'ai trouvé comment ouvrir plusieurs fichiers mais ils sont toujours ouvert dans des classeurs différents et à partir de la ligne 1:
Set fs = Application.FileSearch
With fs
.LookIn = "D:\log"
.Filename = "*.log"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)

Workbooks.OpenText Filename:=.FoundFiles(i) _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array( _
3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10 _
, 1)), TrailingMinusNumbers:=True
Range("A:A,C:C,D:D,E:E,F:F,G:G,I:I,J:J,K:K,L:L,M:M").Select
Selection.Delete Shift:=xlToLeft
Next i
Else
MsgBox "There were no files found."
End If
End With
 

yannoch

XLDnaute Junior
Re : Importation de plusieurs fichiers .log (txt plus simplement)

J'ai vu qu'il y avait un autre méthode d'importation de fichier via "données externe", ça résoud le problème d'intégrer mes données à partir d'une ligne précise mais je n'arrive pas à le faire pour plusieurs fichiers txt en même temps.
Bref, je continu à chercher :)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87