Optimisation [Résolu]

Signaler
Messages postés
135
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
2 décembre 2011
-
Messages postés
135
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
2 décembre 2011
-
Bonsoir a tous,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

 





Une âme charitable pour m’aider a optimisé ce code SVP ?




 








Private Sub Command1_Click()










'MsgBox Environ("SystemDrive")
Dim E_SystemDrive As String
E_SystemDrive = Environ("SystemDrive")
Shell E_SystemDrive & "\Programs\office2003viewers\Office11\WORDVIEW.EXE", vbMaximizedFocus




End Sub

Private Sub Command2_Click()




Dim E_SystemDrive As String
E_SystemDrive = Environ("SystemDrive")
Shell E_SystemDrive & "\




Programs\office2003viewers\Office11\XLVIEW.EXE
", vbMaximizedFocus







End Sub

Private Sub Command3_Click()




Dim E_SystemDrive As String
E_SystemDrive = Environ("SystemDrive")
Shell E_SystemDrive & "\




Programs\office2003viewers\powerpoint2003viewer\Pptview.exe
", vbMaximizedFocus









End Sub








<!--QuoteEnd-->



 









Merci d’avance












Cordialement












Léo











 

7 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Ben j'ai plus rien à faire, Julien vient de le faire 

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

à part utiliser ShellExecute au lieu de Shell, que veux tu optimiser ?
Tu utilises une variable et une fonction..
à part la commande neuronale, je vois pas mieux..

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
bah t'eh, voici ce que te propose, une correction de tes chemins (Programs par Program Files), une demonstration avec Command Button indexé, et l'utilisation de ShellExecute :

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As
Long

Private Sub Command1_Click(Index As Integer)
    Dim E_SystemDrive As String
E_SystemDrive = Environ$("SystemDrive")

Select Case Index
    Case 0: Call Launch_App(E_SystemDrive &
"\Program
Files\office2003viewers\Office11\WORDVIEW.EXE")
    Case 1: Call Launch_App(E_SystemDrive &
"\Program
Files\office2003viewers\Office11\XLVIEW.EXE")
    Case 2: Call Launch_App(E_SystemDrive &
"\Program
Files\office2003viewers\Office11\powerpoint2003viewer\Pptview.exe")
End Select

End Sub

Private Sub Launch_App(ByVal sAddresse As String)
    ShellExecute Me.hwnd, vbNullString, sAddresse, vbNullString,
vbNullString, 1
End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Ouais, mais je suis pas certain que ce soit une optimisation, bien au contraire. Ca rajoute du temp dse traitement pour les tests du select case, plus du temps d'appel d'une fonction, ....

Bref, ya pas vraiment d'optimisation à faire si ce n'est de mettre E_SystemDrive en variable globale avec une initialisation, une fois seulement au cahrgement de l'appli par exemple. Mais le maigre temps d'execution gagné est compensé par une occupation mémoire pour la variable globale. La variable globale étant alloué dans la mémoire Data de l'appli, celle-ci augmente en fonction du nombre de variable à y mettre, tandis qu'une variable locale non statique est allouée sur la pile et la pile est de taille fixe quelque soit le nombre de variable.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
135
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
2 décembre 2011

Merci a vous deux :)

Casy a dit:Bref, ya pas vraiment d'optimisation à faire si ce n'est de mettre E_SystemDrive en variable globale avec une initialisation, une fois seulement au chargement de l'appli par exemple.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

 

Pourriez vous mettre en application cette « optimisation »

 

Mes tentatives pour passer E_SystemDrive en variable globale sont un échec !

Mes connaissance en vb sont plus que limité cela me ferait un  petit tuto !

N’hésiter pas à commenter vos actions

 

Un grand merci pour le travail apporter a nous autre débutant

 

Cordialement

 

Léo
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Salut,
ou bien un truc du style

Option Explicit
Private E_SystemDrive As String

Private Sub Form_Load()
   E_SystemDrive = Environ("SystemDrive")
End Sub<hr />

Private Sub OpenProgram(ByVal strProgram As String)
   Call Shell(E_SystemDrive & strProgram, vbMaximizedFocus)
End Sub<hr />

Private Sub Command1_Click()
   Call OpenProgram("\Programs\office2003viewers\Office11\WORDVIEW.EXE")
End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
135
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
2 décembre 2011

Merci a vous c'est impec

Cordialement

Léo