DoDwDn_
Messages postés12Date d'inscriptionsamedi 18 août 2007StatutMembreDernière intervention 2 mars 2009
-
20 févr. 2009 à 09:47
DoDwDn_
Messages postés12Date d'inscriptionsamedi 18 août 2007StatutMembreDernière intervention 2 mars 2009
-
2 mars 2009 à 10:30
Bonjour à tous,
Je chercher à optimiser la rapidité de mon application Excel, et je me suis rendu compte d'une bizarrerie que je ne parviens pas à comprendre.
En effet, j'extrait des données d'une base Excel, et me laisse la possibilité d'une récupération à une date antérieure.
Quand j'extrait les données sans récupération, je donne à VBA le chemin d'accès direct.
Quand je fais une récupération, il doit interpréter la date demandée, pour l'ajouter au chemin d'accès.
La première procédure prend 3,375s, la seconde 0,406s !
J'aimerais comprendre cette logique, pour pouvoir l'appliquer à toute mon application, afin que les extractions parviennent à une degré de rapidité similaire (sachant que ça fait quelques jours de boulot supplémentaires, et je ne voudrais pas me rendre compte que ça n'a servit à rien !).
Voici le code différentiel :
Sub Affiche_ModMat()
Dim bd1 As Worksheet
Dim bd2 As Worksheet
Dim bre As Worksheet
Dim mat As Worksheet
Dim lig As Long
Dim li2 As Long
Dim li3 As Long
Application.ScreenUpdating = False
Set mat = Workbooks("Interface.xls").Worksheets("Mod_Mat")
If mat.Range("G5") <> 0 Then
On Error Resume Next
Workbooks.Open Filename:="M:\APHP\BD_Spare" & Format(mat.Range("G5"), "yyyymmdd") & "_" & _
"Base De Données 1.xls", ReadOnly:=True
If Err.Number = 1004 Then
mat.Range("G5").ClearContents
MsgBox "Aucune Base de Données n'est référencée à cette date." & vbLf & _
"Veuillez entrer une autre date.", , "Récupération :"
Exit Sub
End If
Set bd1 = Workbooks(Format(mat.Range("G5"), "yyyymmdd") & "_" & "Base De Données 1.xls") _
.Worksheets("Base De Données 1")
Set bd2 = Workbooks(Format(mat.Range("G5"), "yyyymmdd") & "_" & "Base De Données 1.xls") _
.Worksheets("Base De Données 2")
Set bre = Workbooks(Format(mat.Range("G5"), "yyyymmdd") & "_" & "Base De Données 1.xls") _
.Worksheets("Base Relevé")
Else
Workbooks.Open Filename:="M:\APHP\User\Base De Données 1.xls", ReadOnly:=True
Set bd1 = Workbooks("Base De Données 1.xls").Worksheets("Base De Données 1")
Set bd2 = Workbooks("Base De Données 1.xls").Worksheets("Base De Données 2")
Set bre = Workbooks("Base De Données 1.xls").Worksheets("Base Relevé")
End If
[Code...]
If mat.Range("G5") <> 0 Then
Workbooks(Format(mat.Range("G5"), "yyyymmdd") & "_" & "Base De Données 1.xls").Close _
SaveChanges:=False
Else
Workbooks("Base De Données 1.xls").Close SaveChanges:=False
End If