Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel > macro et lenteur
Vous inscrire
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus


Réponse
 
LinkBack Outils de la discussion
Vieux 11/05/2008, 21h41   #1 (permalink)
jopont
XLDnaute Occasionel
 
Date d'inscription: septembre 2005
Messages: 145
Par défaut macro et lenteur

Bonsoir
J'utilise la macro ci-dessous dans excel 2007.
Lorsque je l'ai utilisée la première fois elle était hyper rapide.
Aujourd'hui après plusieurs essai, elle est devenu hyper lente ( plus de 2 heure pour 30 fichier txt, et encore ça plante)
y-a-t-il une explication ?
une solution ?
merci

le code :
Sub import()
Dim Directory As String, File As String, Temp As String
Dim NumRow As Long, NumCol As Integer
Dim FF As Integer, I As Integer
Dim LigFic As Long

Directory = ThisWorkbook.Path & "\" & "fevrier08\" ' "E:\fevrier08\"
File = Dir(Directory & "*.txt")
NumRow = ActiveCell.Row
NumCol = ActiveCell.Column
With ActiveSheet
FF = FreeFile
LigFic = 0
Do While File <> ""
Open Directory & File For Input As #FF
Do While Not EOF(FF)
Line Input #FF, Temp
If LigFic > 4 Then
Table = Split(Temp, vbTab)
For I = 0 To UBound(Table)
If IsDate(Table(I)) Then
.Cells(NumRow, NumCol + I) = CDate(Table(I))
Else
.Cells(NumRow, NumCol + I) = Table(I)
End If
Next
NumRow = NumRow + 1
End If
LigFic = LigFic + 1
Loop
LigFic = 0
Close #FF
File = Dir
Loop
End With
End Sub
jopont est déconnecté   Réponse avec citation
ANNONCES
Vieux 11/05/2008, 23h01   #2 (permalink)
jopont
XLDnaute Occasionel
 
Date d'inscription: septembre 2005
Messages: 145
Par défaut Re : macro et lenteur

personne ne peut m'aider
jopont est déconnecté   Réponse avec citation
Vieux 11/05/2008, 23h55   #3 (permalink)
BrunoM45
XLDnaute Accro
 
Avatar de BrunoM45
 
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 1 935
Question Re : macro et lenteur

Salut Jopont,

Tu fais la recherche de fichier dans 2 directory !?

Directory = ThisWorkbook.Path & "\" & "fevrier08\" ' "E:\fevrier08\"

Ton lecteur "E:\" c'est quoi !?
Lecteur réseau, disque amovible, partition DD, etc ...

A+
__________________
Cordi@lement.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.

VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro !
Menu -> Outils -> Macro -> Nouvelle macro

Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI

Petite citation : C'est en XLDant que l'on devient XLDnaute Accro ...
BrunoM45 est déconnecté   Réponse avec citation
Vieux 12/05/2008, 00h05   #4 (permalink)
jopont
XLDnaute Occasionel
 
Date d'inscription: septembre 2005
Messages: 145
Par défaut Re : macro et lenteur

il s'agit du dossier "mes documents"
jopont est déconnecté   Réponse avec citation
Vieux 12/05/2008, 12h48   #5 (permalink)
jopont
XLDnaute Occasionel
 
Date d'inscription: septembre 2005
Messages: 145
Par défaut Re : macro et lenteur

il ne s'agit pas de deux dossier '"E\:fevrier08" est uncommentaire dans la macro

pourquoi est-elle lente ?
jopont est déconnecté   Réponse avec citation
Vieux 12/05/2008, 12h58   #6 (permalink)
cbea
XLDnaute Impliqué
 
Avatar de cbea
 
Date d'inscription: mars 2008
Version Excel : Excel 2003 (PC)
Messages: 745
Par défaut Re : macro et lenteur

Bonjour jopont,

Quelle est la taille maxi des fichiers "*.txt" ?

Merci
__________________
@+
cbea
cbea est déconnecté   Réponse avec citation
Vieux 12/05/2008, 13h52   #7 (permalink)
MJ13
XLDnaute Accro
 
Date d'inscription: mars 2005
Messages: 1 097
Par défaut Re : macro et lenteur

Bonjour à tous.

Et ThisWorkbooks.path est-il différent du premier essai qui était plus rapide?
__________________
Salutations
Michel

Pour faire facilement vos comptes personnels
http://www.excel-downloads.com/remos...s-MJ-2007.html

Trouvez les couleurs Le JEU

http://www.excel-downloads.com/forum...-couleurs.html
MJ13 est déconnecté   Réponse avec citation
Vieux 12/05/2008, 17h07   #8 (permalink)
Roland_M
XLDnaute Occasionel
 
Date d'inscription: avril 2007
Messages: 383
Par défaut Re : macro et lenteur

bonjour

tu dis que ça plante !?

quand ça plante, si tu fais "débogage" ça doit d'indiquer sur quel ligne !?
si oui laquelle ?

ça vient peut-être des fichiers sources et lors des "Line Input #FF, Temp" !?

Roland
Roland_M est déconnecté   Réponse avec citation
Vieux 12/05/2008, 19h14   #9 (permalink)
jopont
XLDnaute Occasionel
 
Date d'inscription: septembre 2005
Messages: 145
Par défaut Re : macro et lenteur

il y a 31 fichier de 2 à 4 ko chacun.
Quand je dis que ça plante, en fait la macro se lance, inscrit les données, puis continue de tourner sans indiquer d'erreur dans vba.
il s'agit d'un dossier différent du premier essai.
merci de m'aider

Dernière modification par jopont 12/05/2008 à 19h18.
jopont est déconnecté   Réponse avec citation
Vieux 12/05/2008, 20h21   #10 (permalink)
MJ13
XLDnaute Accro
 
Date d'inscription: mars 2005
Messages: 1 097
Par défaut Re : macro et lenteur

Bonjour,

Non ce n'est pas normal.

Comme le dit Roland, il faut faire du débogage. Tu mets un stop dans ton code puis tu tapes F8 pour aller en pas à pas et ctrl+shift+F8 pour continuer.
__________________
Salutations
Michel

Pour faire facilement vos comptes personnels
http://www.excel-downloads.com/remos...s-MJ-2007.html

Trouvez les couleurs Le JEU

http://www.excel-downloads.com/forum...-couleurs.html
MJ13 est déconnecté   Réponse avec citation
Vieux 12/05/2008, 21h11   #11 (permalink)
Roland_M
XLDnaute Occasionel
 
Date d'inscription: avril 2007
Messages: 383
Par défaut Re : macro et lenteur

bonsoir

je pense que l'erreur vient de >>> Line Input
car si on load une ligne qui n'a pas de retour fin de ligne chr$(10)chr$(13)
le Line Input reste bloqué sans erreur et sans effet avec le fin du fichier EOF()
et il reste bloqué là !

donc ça vient très certainement de la dernière ligne d'un fichier !

pour cela faire un essai avec >>> Input <<< simplement
soit Input #FF, Temp

Roland

Dernière modification par Roland_M 12/05/2008 à 21h24.
Roland_M est déconnecté   Réponse avec citation
Vieux 12/05/2008, 21h26   #12 (permalink)
GIBI
XLDnaute Occasionel
 
Date d'inscription: octobre 2005
Messages: 166
Par défaut Re : macro et lenteur

Bonsoir,


Déjà

1. supprimer la mise à jour excel ==> Application.ScreenUpdating = False
2. Supprimer le calcul auto (ici ?) ==> Application.Calculation= False
3. les variables I et NumCol en Long
4. évite de lire un fichier via un réseau (les recopier en local avant exploitation)

Ceci dit la fonction SPLIT est très gourmande puisqu'elle alloue et désaloue une table à chaque appel.

Mais comme disent les autres il faut tracer pour localiser le moment ou cela bloque (un fichier particulier, au delà d'un certain nombre de ligne....)

Vérifie effectivement ce que dit Roland_M

pour dégrossir,Tu peut mettre des points d'arrêt en ajoutant un test bidon dans la boucle de traitement : du style "si compteur>100 alors compteur = 0 sinon compteur=compteur +1" faire F9 sur la ligne compteur=0


Désolé mais difficile de t'aider plus sans les fichiers et un contexte plus précis

GIBI

Dernière modification par GIBI 12/05/2008 à 21h42.
GIBI est déconnecté   Réponse avec citation
Vieux 13/05/2008, 21h57   #13 (permalink)
jopont
XLDnaute Occasionel
 
Date d'inscription: septembre 2005
Messages: 145
Par défaut Re : macro et lenteur

j'ai essayé d'enlever le line dans input, sans résultat.
Le débogage ne donne pas d'erreur.
Je ne comprend pas pourquoi est-ce lent.

Dernière modification par jopont 13/05/2008 à 22h06.
jopont est déconnecté   Réponse avec citation
Vieux 13/05/2008, 22h11   #14 (permalink)
BrunoM45
XLDnaute Accro
 
Avatar de BrunoM45
 
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 1 935
Lightbulb Re : macro et lenteur

Salut Jopont,

As-tu essayé de désactiver ton anti-virus le temps de faire le test et sans être connecté à Internet

A+
__________________
Cordi@lement.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.

VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro !
Menu -> Outils -> Macro -> Nouvelle macro

Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI

Petite citation : C'est en XLDant que l'on devient XLDnaute Accro ...
BrunoM45 est déconnecté   Réponse avec citation
Vieux 13/05/2008, 22h48   #15 (permalink)
Roland_M
XLDnaute Occasionel
 
Date d'inscription: avril 2007
Messages: 383
Par défaut Re : macro et lenteur

bonsoir

je viens d'essayer ce même code en créant 30 fichiers de 500 lignes chacun
ça prend à peine 1 seconde pour les créer !
et environ 1 seconde pour loader le tout !?
ceci sous Excel 2003 et Excel 2007 !
je précise que j'ai l'antivirus qui tourne et j'étais connecté sur le net(sur le forum)

donc ce n'est pas le code !? mais probablement les fichiers sources !?
ça doit boucler quelque part !?

Code:
Sub exporte()
Directory = ThisWorkbook.Path & "\" & "essai\"
For I = 1 To 30
fich$ = Directory & "fich" & I & ".txt"
Open fich$ For Output As #1
For L = 1 To 500
Print #1, "line" & L
Next
Close #1
Next
End Sub

Sub import()
Dim Directory As String, File As String, Temp As String
Dim NumRow As Long, NumCol As Integer
Dim FF As Integer, I As Integer
Dim LigFic As Long

Directory = ThisWorkbook.Path & "\" & "essai\"
File = Dir(Directory & "*.txt")
NumRow = ActiveCell.Row
NumCol = ActiveCell.Column
With ActiveSheet
FF = FreeFile
LigFic = 0
Do While File <> ""
Open Directory & File For Input As #FF
Do While Not EOF(FF)
Line Input #FF, Temp
If LigFic > 4 Then
Table = Split(Temp, vbTab)
For I = 0 To UBound(Table)
If IsDate(Table(I)) Then
.Cells(NumRow, NumCol + I) = CDate(Table(I))
Else
.Cells(NumRow, NumCol + I) = Table(I)
End If
Next
NumRow = NumRow + 1
End If
LigFic = LigFic + 1
Loop
LigFic = 0
Close #FF
File = Dir
Loop
End With
End Sub
Roland
Roland_M est déconnecté   Réponse avec citation
ANNONCES
Réponse



Outils de la discussion

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Probleme de lenteur dans macro lenag99 Forum Excel 10 10/02/2008 10h01
Lenteur d'execution de macro dans xls2007 Seb77 Forum spécial EXCEL 2007 4 03/12/2007 21h36
lenteur d'une macro kevinch Forum Excel 5 08/09/2006 07h03
lenteur macro michel33 Forum Excel 20 15/05/2005 11h22
fichier trop gros? trop de macro? énorme lenteur pour ouvrir le fichier sam Forum Excel Downloads - Archives 1 18/12/2002 08h10


Fuseau horaire GMT +2. Il est actuellement 23h14.


(C) 2006 Excel Downloads