jeudi 29 mai 2008

Trucs et astuces VBA Excel

Quelques aides mémoires utiles pour Développement Macro VBA que je n'aurais pas à chercher :

Détecter un simple clic
Entre le SelectionChange et le DoubleClick il n'existe pas dans Excel (à ma connaissance :)) de moyen de capturer le simple clic dans une cellule (entendu par là, que le fait de faire un simple clic dans la cellule déjà sélectionné doit lever l'évenement).
L'astuce la plus fonctionnelle consiste lors du SelectionChange, qui est au moins déclenché la première fois, de faire son traitement et de terminer par :
ThisWorkbook.Worksheets(feuilleB).Range("B" & Target.row & ",Z" & Target.row).Select
Afin de modifier la sélection en cours (ici on sélectionne la cellule B et Z de la ligne en cours), ce qui fait que lors du prochain clic, SelectionChange sera forcément levé


Permettre de manipuler les plans avec les feuilles protégées
La protection d'une feuille entraine par défaut le fait qu'il n'est plus possible d'utiliser le mode plan permettant de manipuler les données en arbre, il faut alors affiner sa protection :
Sheets(feuilleB).EnableOutlining = activate
Sheets(feuilleB).Protect "", userInterfaceOnly:=activate

Ouvrir, refermer les niveaux d'un plan en VBA
Dans la continuité de l'astuce précédente et toujours sur les plans , voici le code VBA vous permettant de déployer ou replier les niveaux par programmation :
Sub expandCollapse()
'Expand niveau 2
MsgBox "Expand niveau 2"
Sheets(3).Outline.ShowLevels RowLevels:=2
'Collapse niveau 2
MsgBox "Collapse niveau 2"
Sheets(3).Outline.ShowLevels RowLevels:=1
End Sub