(RESOLU) diminution du temps d'execution [VBA EXCEL]

diminution du temps d'execution [VBA EXCEL] (RESOLU) - VB/VBA/VBS - Programmation

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
Reply

Marsh Posté le 06-06-2007 à 07:08:39   

Reply

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

Reply

Marsh Posté le 06-06-2007 à 09:43:31    

Reply

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

Reply

Marsh Posté le 06-06-2007 à 17:18:05    

module 2
 
dsl

Reply

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

Reply

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 .

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed