Enigme VBA => ouverture/fermeture classeur

DoDwDn_ Messages postés 12 Date d'inscription samedi 18 août 2007 Statut Membre Dernière intervention 2 mars 2009 - 20 févr. 2009 à 09:47
DoDwDn_ Messages postés 12 Date d'inscription samedi 18 août 2007 Statut Membre Derniè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

Range("J5").Select
Application.ScreenUpdating = True

End Sub

Si certains d'entre vous peuvent m'éclairer, ce sera avec grand plaisir !

Merci d'avance !

1 réponse

DoDwDn_ Messages postés 12 Date d'inscription samedi 18 août 2007 Statut Membre Dernière intervention 2 mars 2009
2 mars 2009 à 10:30
Personne n'a d'idée ni ne peut m'aider ?
0
Rejoignez-nous