M
Mikaëlkaël
Guest
Bonjour a tous,
Tout d'abord Bravo pour toutes les réponses et la base de connaissances que l'on trouve sur ce site. Jusqu'à il y a 2 mois, je savais à peine ce que signifiait VBA, et aujourd'hui à force de recherches sur ce site j'ai pu créer un ensemble de macros qui vont me faciliter la vie quand j'aurais fini mes développements. (J'ai tout de même fait pas mal de programmation C pendant mes études, mais ça date!!)
Ne réussissant pas à trouver une réponse à mon dernier problème, je me permets d'interroger les experts :
Exposé du problème:
Je souhaite optimiser le temps d'importation des données d'un fichier texte.
Les lignes de mon fichier se présentent sous la forme 'A;B;1;2;3;4;5', le nombre de champs est fixe, mais la longueur de chaque champ est variable, les deux premiers sont des strings et les autres des nombres.
Actuellement j'utilise le code suivant dans une boucle :
Line Input #F_file, str
ligne = Split(str, ';', 7)
Sheets(sh).Cells(Tmp_line, 1).Value = ligne(0)
Sheets(sh).Cells(Tmp_line, 2).Value = ligne(1)
Sheets(sh).Cells(Tmp_line, 3).Value = ligne(2)
...
Ce code marche bien, mais il est sacrément lent. A terme, il devra traiter autour de 500 lignes à la fois, soit 3500 cellules.
Connaissez-vous des moyens d'accélérer l'affectation de valeurs à des cellules ?
Ne peut-on pas traiter une ligne entière à la fois ?
PS : Si le séparateur de champs cause problème, je peux le modifier en amont en traitant le fichier texte soit en VBA, soit au prompt avec les commandes unix portés sous dos.
Merci de votre aide.
Tout d'abord Bravo pour toutes les réponses et la base de connaissances que l'on trouve sur ce site. Jusqu'à il y a 2 mois, je savais à peine ce que signifiait VBA, et aujourd'hui à force de recherches sur ce site j'ai pu créer un ensemble de macros qui vont me faciliter la vie quand j'aurais fini mes développements. (J'ai tout de même fait pas mal de programmation C pendant mes études, mais ça date!!)
Ne réussissant pas à trouver une réponse à mon dernier problème, je me permets d'interroger les experts :
Exposé du problème:
Je souhaite optimiser le temps d'importation des données d'un fichier texte.
Les lignes de mon fichier se présentent sous la forme 'A;B;1;2;3;4;5', le nombre de champs est fixe, mais la longueur de chaque champ est variable, les deux premiers sont des strings et les autres des nombres.
Actuellement j'utilise le code suivant dans une boucle :
Line Input #F_file, str
ligne = Split(str, ';', 7)
Sheets(sh).Cells(Tmp_line, 1).Value = ligne(0)
Sheets(sh).Cells(Tmp_line, 2).Value = ligne(1)
Sheets(sh).Cells(Tmp_line, 3).Value = ligne(2)
...
Ce code marche bien, mais il est sacrément lent. A terme, il devra traiter autour de 500 lignes à la fois, soit 3500 cellules.
Connaissez-vous des moyens d'accélérer l'affectation de valeurs à des cellules ?
Ne peut-on pas traiter une ligne entière à la fois ?
PS : Si le séparateur de champs cause problème, je peux le modifier en amont en traitant le fichier texte soit en VBA, soit au prompt avec les commandes unix portés sous dos.
Merci de votre aide.