Optimisation

Résolu
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011 - 29 juil. 2007 à 22:03
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011 - 30 juil. 2007 à 13:46
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 juil. 2007 à 08:45
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
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 juil. 2007 à 22:14
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 juil. 2007 à 22:29
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 juil. 2007 à 22:38
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011
29 juil. 2007 à 23:14
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
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
30 juil. 2007 à 08:15
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
0
Leo_Robotic_Passion Messages postés 135 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 2 décembre 2011
30 juil. 2007 à 13:46
Merci a vous c'est impec

Cordialement

Léo
0
Rejoignez-nous