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é.
|