Pour suivre cet article et le trouver intéressant, une bonne aisance avec VBA est indispensable
Les macros (Sub et Function) peuvent se placer dans le classeur actuel, ou dans Perso.XLS, afin de les avoir à disposition tout le temps. Perso.XLS est systématiquement chargé à chaque démarrage d'Excel, mais il existe une autre technique, ce sont les compléments. Les compléments sont des classeurs Excel masqués qui peuvent contenir des UserForms, des modules dans lesquels on peut avoir des prodécures et des fonctions.
Les programmeurs d'Excel, chez Microsoft, ont décidé de ne pas mettre à disposition tous les outils d'Excel directement dans les menus. En effet, s'ils l'avaient fait, Excel mettrait 10 minutes à se lancer.
Une partie des fonctionnalités d'Excel se trouvent dans des compléments (*.XLA - eXceL Additive). Par exemple, le solveur, outil qui se trouvait autrefois par défaut dans le menu Outils d'Excel, n'est maintenant plus accessible qu'au travers du complément Solver.XLA. Ce qui est une bonne chose, car qui utilise cet outils, a part quelques scientifiques très pointus ? (Le solveur est un outil mathématique permettant de résoudre des équations à plusieurs inconnues, mais le sujet de cet article n'est pas d'apprendre à l'utiliser)
Actuellement, lorsque vous allez dans le menu Outils, vous constatez que "Solveur" n'est pas présent.
Marche à suivre pour l'avoir a disposition :
Maintenant, lorsque vous cliquez sur le menu Outils, vous trouverez le sous-menu Solveur.
Si vous quittez Excel, et que vous le rouvrez, le solveur sera toujours a disposition sans avoir besoin de nouveau de cocher la case.
Vous constatez qu'il y a plein de compléments dans Outils/Macros complémentaires. Ce qu'il y a de bête, c'est que ce n'est pas la peine d'appuyer sur F1 en sélectionannt une macro complémentaire, l'aide d'Excel ne renseigne pas sur son contenu !
Par exemple, j'ai appris que pour arrondir un montant à 5 centimes à l'aide d'une fonction, les fonctions ARRONDI ne peuvent pas le faire. Mais il existe une fonction ARRONDI.AU.MULTIPLE qui permet de le faire facilement. Cette fonction n'apparaîtra dans la liste des fonctions que si vous cochez la macro complémentaire Utilitaires d'analyse.
IMPORTANT : Suivez les instructions suivantes le plus précisément possible pour bien comprendre ! Commencez par carrément fermer Excel pour être certain de commencer sans rien d'ouvert dans Excel.
Nous allons créer une macro Soleil qui va simplement afficher "Il fait beau", qui va se trouver dans un module d'un complément CompTest.XLA.
Attention maintenant si vous désirez ajouter d'autres macros dans votre complément. Admettons que vous désiriez ajouter la macro suivante :
Sub Pluie()
MsgBox "Il Pleut"
End Sub
Si vous l'ajoutez et que vous retournez dans Excel et que vous allez dans le menu Fichier/Enregistrer, il va vous enregistrer le classeur visible à l'écran, mais en tout cas pas CompTest.XLA !
Pour enregistrer les modifications apportées à votre compléments, vous DEVEZ le faire DEPUIS l'environnement VBA (CTRL S, ou fichier/Enregistrer CompTest.XLA.
J'insuste bien sur ce point car quand on crée des macros dans des classeurs standards .XLS, on peut enregistrer son classeur indifféremment dans l'environnement VBA ou dans Excel, les modules, macros, feuilles et classeur seront tout enregistré en même temps, dans un même fichier.
Si vous écrivez des fonctions dans votre complément, par exemple :
Function MonNom()
MonNom = "Michel Defawes"
End Function
Alors que les macros Sub n'apparaissent pas dans Outils/Macros/Macros, votre fonction apparaîtra dans le menu Insertion/Fonction (Et pour répondre à une interrogation que pourraient poser les connaisseurs : non, ça n'a rien à voir avec les éventuels Private ou Public qu'on pourrait ajouter avant)
Il est possible de créer des macros qui s'exécutent automatiquement à chaque ouverture de CompTest.XLA. C'est à dire en fait à chaque ouverture d'Excel, pour autant qu'on ait coché la case correspondante dans Outils/Macros complémentaires.
Arrangez vous pour avoir cette configuration :
Private Sub Workbook_AddinInstall()
MsgBox "J'installe"
End Sub
Private Sub Workbook_AddinUninstall()
MsgBox "Je désinstalle"
End Sub
Private Sub Workbook_BeforeClose(Cancel
As Boolean)
MsgBox "Je ferme"
End Sub
Private Sub Workbook_Open()
MsgBox "J'ouvre"
End Sub
Enregistrez avec CTRL-S DEPUIS VBA, PAS depuis Excel, donc !
Et faites quelques tests : Quittez Excel, rouvrez Excel, cochez et décochez la case de votre complément CompTest.XLA, et regardez si vous obtenez bien les messages correspondants.