diminution du temps d'execution [VBA EXCEL] (RESOLU) - VB/VBA/VBS - Programmation
Marsh Posté le 06-06-2007 à 09:03:46
Bonjour à tous
Pas facile sans voir le code, mais
- supprimes tous les "select"
- au lieu d'ouvrir les classeurs tu peux peut être récupérer les données dans les fichiers fermés
- combien as tu de cellules à récupérer ?
- les données sont à disposer sur 1 feuille ou plusieurs ?
il nous faudrait un peu plus de matière pour que l'on puisse t'aider efficacement
Eric
Marsh Posté le 06-06-2007 à 09:43:31
voir et adapter
http://forum.hardware.fr/hfr/Progr [...] 0232_1.htm
http://forum.hardware.fr/hfr/Progr [...] 2780_1.htm
sans oublier http://silkyroad.developpez.com/VBA/ClasseursFermes/
Marsh Posté le 06-06-2007 à 17:14:26
cijoint le fichier à renommer en acceuil.xls
http://cjoint.com/?ggrmf2XEVl
kiki29 je regarde tes liens et je te tiens au courant
eric455 comment fais tu pour recuperer des donnees dans un fichier fermé ?
merci a vous
Marsh Posté le 07-06-2007 à 08:47:13
Accèder à une cellule sans ouvrir le fichier
Function GetValueWithADO(Classeur$, Feuille$, Cell As Range)
'renvoie la valeur de la cellule Cell de la feuille Feuille du classeur fermé Classeur
Dim RcdSet As Object
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range
'prépare une "base de données" bidon pour la clause SELECT
'(une entête fictive et une ligne de données)
Set dummyBase = Cell.Resize(2)
'prépare les commandes ADO et SQL
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Classeur & ";" & _
"Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"";"
strCmd = "SELECT * FROM [" & Feuille & "$" & dummyBase.Address(0, 0) & "]"
'crée l'objet Recordset
Set RcdSet = CreateObject("ADODB.Recordset" )
'va chercher l'info
RcdSet.Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText
'et la renvoie
GetValueWithADO = Application.Clean(RcdSet(0))
'autre syntaxe possible
' GetValueWithADO =Application.Clean(RcdSet.GetString(NumRows:=1))
'nettoyage
Set RcdSet = Nothing
End Function
Marsh Posté le 09-06-2007 à 17:02:04
salut
j'ai simplement enlevé les select et ca va beaucoup plus vite. je vous remerci pour votre aide .
Marsh Posté le 06-06-2007 à 07:08:39
bonjour à tous,
voila j'ai fait quelque petits code qui en gros ouvrent des classeurs, copient des données et les mettent dans une feuille du classeur suivismachinesresultats.xls
mon probleme est le suivant:
le temps d'execution est long ( pour 2 classeurs ) et je ne veux meme pas imaginer pour une centaine de classeurs.
--> connaissez vous des fonctions qui peuvent diminuer le temps d'execution ?
j'ai deja utilise application.screenupdating=false
je ne pourrais vous repondre quà partir de 17h00
merci et bonne journee
Message édité par ingenieurcesi le 09-06-2007 à 17:03:23