Bonjour à tous,
Je développe une macro sous VBA. Le temps d'exécution devenant problématique j'essaie de l'optimiser (comme je peux). J'ai trouvé sur le web une 1ère astuce qui consiste à inhiber certaines fonctionnalités superflues d'Excel - telle l'instruction Application.ScreenUpdating - j'ai donc codé ce qui suit ci-dessous
	
	
	
	
	
		
Jusque là tout va bien.
J'ai ensuite lu une autre astuce trouvée sur Internet:
Du coup j'ai ajouté
	
		
 mais ce faisant j'ai ensuite le message d'erreur "Erreur de compilaltion ; Variable non définie" sur l'instruction 
	
	
	
	
	
		
 ce que je comprends assez bien, après coup.
D'où ma question: de quels types dois-je déclarer les variables suivantes ?
screenUpdateState
statusBarState
calcState
eventsState
displayPageBreakState
Nota: si je mets dans mon code - par exemple
	
	
	
	
	
		
je n'ai plus de message d'erreur mais je me demande si ma déclaration 'simple' (sans rien)
	
	
	
	
	
		
 est adéquate?
Vos avis et éléments de réponses me seront d'une aide certaine.
Merci pour le temps que vous avez pris à lire ce post.
Pascal
	
		
			
		
		
	
				
			Je développe une macro sous VBA. Le temps d'exécution devenant problématique j'essaie de l'optimiser (comme je peux). J'ai trouvé sur le web une 1ère astuce qui consiste à inhiber certaines fonctionnalités superflues d'Excel - telle l'instruction Application.ScreenUpdating - j'ai donc codé ce qui suit ci-dessous
		Code:
	
	
	Sub MaMacro()
'Save the current state of Excel settings
screenUpdateState = Application.ScreenUpdating
statusBarState = Application.ScreenUpdating
calcState = Application.Calculation
eventsState = Application.EnableEvents
'Note: the following is a sheet-level setting
displayPageBreakState = ActiveSheet.DisplayPageBreak
'Turn off Excel functionality to improve performance
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
'Note: this is a sheet-level setting
ActiveSheet.DisplayPageBreaks = False
'My code...
'At the end of the code
'Restore Excel settings to original state
Application.ScreenUpdating = screenUpdateState
Application.DisplayStatusBar = statusBarState
Application.Calculation = calcState
Application.EnableEvents = eventsState
'Note: this is a sheet-level setting
ActiveSheet.DisplayPageBreaks = displayPageBreaksState
End Sub
	Jusque là tout va bien.
J'ai ensuite lu une autre astuce trouvée sur Internet:
La déclaration du type de variable est une première optimisation extrêmement classique et indispensable. Afin de n'oublier aucune déclaration, utiliser en tête de module ou de Form etc... la fonction :
Option Explicit
d’une manière générale, l’emploi du type Variant (autre que dans les appels de fonctions) n'est jamais indispensable, et est à proscrire pour l’optimisation. Ce type est surtout intéressant pour faciliter la programmation aux débutants. Mais cette facilité se paye par une baisse importante des performances
Du coup j'ai ajouté
		Code:
	
	
	Option Explicit
Sub MaMacro()
	
		Code:
	
	
	screenUpdateState = Application.ScreenUpdating
	D'où ma question: de quels types dois-je déclarer les variables suivantes ?
screenUpdateState
statusBarState
calcState
eventsState
displayPageBreakState
Nota: si je mets dans mon code - par exemple
		Code:
	
	
	Dim screenUpdateState
screenUpdateState = Application.ScreenUpdating
	
		Code:
	
	
	Dim screenUpdateState
	Vos avis et éléments de réponses me seront d'une aide certaine.
Merci pour le temps que vous avez pris à lire ce post.
Pascal
			
				Dernière édition: