Nous allons maintenant étudier votre première macro générée par Excel (si vous arrivez directement sur cette page, revenez à la fiche précédente qu'est-ce qu'une macro). Nous verrons également un point important : l'optimisation de cette macro.
Etude de la macro générée par Excel |
Sub ma_premiere_macro()
Une macro commence toujours par Sub nom_de_la_macro(). Nous verrons plus loin que les parenthèses ont une utilité spécifique... mais chaque chose en son temps.
' ma_premiere_macro ' Macro enregistrée le 11/02/2005 par Cédric MICHEL
Vous pouvez insérer des commentaires dans vos macros en
commençant la ligne par une apostrophe ( ' ). Les commentaires
sont très utiles pour détailler votre code. Ils ne sont bien sûr
pas interprétés lorsque le code est exécuté !
Ils vous permettent simplement d'y voir plus clair lorsque vous revenez sur
un code que vous avez créé depuis longtemps (ou à une autre
personne de comprendre votre raisonnement).
Range("A1").Select
Lors de la création de la macro, nous avons commencé par sélectionner la cellule A1. Range("A1") indique la (ou les) cellule(s) et .select indique qu'il faut selectionner les cellules spécifiées. Remarquez au passage : vous utilisez ici un terme Anglais ! Ce n'est pas parce que votre logiciel est en Anglais ou qu'il est mal configuré, mais parce que tout langage de programmation utilise l'Anglais...
ActiveCell.FormulaR1C1 = "bonjour"
La cellule A1 a été sélectionnée. ActiveCell indique que l'on va effectuer une action sur la cellule en cours, et .FormulaR1C1 indique quelle action nous allons effectuer, c'est à dire définir la formule de la cellule : "bonjour".
Range("A1").Select
Nous revenons à la cellule A1 (en validant la saisie par Entrée, Excel est automatiquement passé à la cellule A2... il a donc fallu resélectionner la cellule A1).
Selection.Font.Bold = True
Ensuite, nous avons mis en gras la cellule A1 : Selection (cellule sélectionnée) .font (police... en Anglais) .Bold (Gras... encore un mot Anglais) = True (= Vrai, et oui, l'Anglais est vraiment utile ;-)
Selection.Cut
Nous avions coupé la cellule A1 : selection.cut (cut = couper).
Range("B1").Select
Nous avons sélectionné la cellule B1 : Range("B1").select
ActiveSheet.Paste
Pour y coller le contenu de la cellule A1 sélectionnée : ActiveSheet (Feuille en cours) .Paste (coller).
End Sub
Une fonction commence par Sub (voir plus haut)... et se termine par End Sub !
Optimisation de la macro générée par Excel |
La programmation est donc surtout une question de logique. Il faut bien sûr avoir certaines connaissances des fonctions à utiliser, mais après quelques exercices, vous finirez par en connaître les principales. Plus vous aurez utilisé les macro, plus vous connaîtrez de formules, et plus vous pourrez optimiser vos formules. Pour vous familiariser avec le langage Visual Basic, nous vous conseillons de vous documenter et de suivre les exemples d'ouvrages tels que celui-ci. En examinant bien le code de la macro générée par l'enregistreur d'Excel, on s'aperçoit en effet qu'il contient des lignes inutiles :
Notre macro de 7 lignes tiend donc maintenant sur 3 lignes...
Sub ma_premiere_macro() ' ' ma_premiere_macro Macro ' Macro enregistrée le 11/02/2005 par Cédric MICHEL Range("A1").FormulaR1C1 = "bonjour" Range("A1").Font.Bold = True Range("A1").Cut Destination:=Range("B1") End Sub
Si vous avez besoin d'aide pour une fonction, pensez à poser vos questions sur le forum !