introduction
					Macro complémentaire pour restreindre la zone de travail sans protéger la feuille, et réinitialisation des ascenseurs basée sur la zone contenant des valeurs. 
					
						- intérêt
						
 - installation 
						
 - utilisation
						
 - code commenté
					
  
					intérêt
					Sous excel, l'utilisation de la protection de la feuille interdit beaucoup d'opérations qu'il peut être souhaitable de laisser libre pour un autre utilisateur : 
					
						- changement de format de cellules,
						
 - changement de largeur de colonne ou de hauteur de ligne
						
 - ...
					
  
					Une façon de gérer ce problème peut être de restreindre la zone de travail avec l'instruction ScrollArea qui désigne la zone de travail (attention cette instruction ne marche qu'avec une zone contiguë). 
					Un autre souci du travail dans excel est la gestion des ascenseurs dans de grands tableaux :  
					
						- on saisit ou on importe beaucoup de lignes (par exemple 1000) l'ascenseur s'adapte : si on le descend on arrive directement à la ligne 1000
						
 - pour des raisons qui nous sont propres on supprime 500 lignes, on reprend l'ascenseur et si on le descend on arrive directement : toujours à la ligne 1000
						
 - il semble que l'instruction ActiveSheet.UsedRange.Select suffise à réinitilaliser les ascenseurs pour que le plus bas corresponde enfin à 500					
  
					Pour résoudre ces deux problèmes je vous propose une solution sous forme de macro complémentaire qui sera donc toujours disponible sur votre poste. 
					Installation
					Son installation se fait comme ceci : 
					
						
							- télécharger le fichier restreint.xla
							
 - copie du fichier dans votre répertoire contenant les macros complémentaires. puis dans le menu outils, macros complémentaires il suffit de cocher restreint.
 
						  
					 
					
						- ou bien enregistrement du fichier dans un autre répertoire puis dans le menu outils, macro complémentaires choisir parcourir pour indiquer le chemin.					
  
					une fois l'opération effectuée vous pourrez accéder à la macro dans le menu fenêtre : 
					
					utilisation
					
						- si la sélection active contient une sélection de cellules, cette zone devient la zone de travail et toutes les autres cellules sont indisponibles pour la saisie. Les ascenseurs s'adaptent à cette nouvelle zone.
						
 - si la sélection active ne contient qu'une cellule alors la zone autorisée à la saisie est tout le classeur et les ascenseurs s'adaptent à la zone contenant des valeurs.
					
  
					code commenté
					Sub restreint() 
							'réalisé par Sylvain NICOLAS 'http://sn1.chez-alice.fr/presentation/restreindre.htm 
							Dim zone_active As String  
							'contient l'adresse ("a1:a12" par exemple) de la sélection active au moment du lancement de la procédure 
							
						zone_active = Selection.Address() 
							
						ActiveSheet.UsedRange.Select 'pour réinitialiser les ascenseurs 
							Range(zone_active).Select 'retour sur la zone active 
							
						If Selection.Cells.Count = 1 Then 
							
						ActiveSheet.ScrollArea = "" 'libération de la feuille si la sélection ne contenait qu'une cellule 
							
						Else 
							
						On Error Resume Next 'pour continuer en cas de problème qui peut arriver si la zone sélectionnée n'est pas contiguë par exemple 
							ActiveSheet.ScrollArea = Selection.Address() 'restriction de la zone de travail 
							
						End If Application.OnUndo "Autoriser toute la feuille", "nerestreintpas" 
							'gestion du menu édition annuler qui permet de libérer toute la feuille si on fait contrôle + Z 
							
						End Sub 
							
						Sub nerestreintpas() 
							'procédure qui se lance si on fait annuler 
							ActiveSheet.ScrollArea = "" 
							End Sub 
					Contact
					Contactez-moi pour tout projet du plus modeste au plus évolué. 
					 
					
					
				 |