Les macros - Excel
Qu'est ce qu'une macro ?
Une macro est un programme qui permet d'automatiser une suite d'actions ou de calculs. Elle permet également d'exécuter des fonctions avancées non disponibles dans l'interface standard d'Excel. Une macro pourra être très utile lorsque l'on répète les mêmes tâches/actions/calculs de manière régulière car elle permet d'effectuer toutes les opérations enregistrées en seulement un clic.
Comment créer une macro ?
Il y a deux manières de créer des macros. La plus simple consiste à utiliser l'enregistreur de macro. Grâce à ce dernier, aucune connaissance en programmation n'est requise. Il suffit simplement d'appuyer sur le bouton d'enregistrement puis de réaliser toutes les étapes que l'on souhaite enregistrer au sein de la macro. Une fois toutes les taches réalisées et l'enregistrement sauvegardé, un programme est créé, comprenant toutes les étapes que vous venez de réaliser. La séquence enregistrée pourra ensuite être exécutée en un seul clic ou via un raccourci clavier choisi. La deuxième méthode consiste en la création partielle ou totale de la macro via l'éditeur VBA (Visual Basic for Applications). Dans ce cas, la connaissance de la syntaxe du langage VBA est requise. Bien sûre, c'est cette deuxième solution qui permet de réaliser les macros les plus complexes car il est possible de créer des fonctions non disponibles directement dans Excel.
Créer sa première macro :
De nombreux sites en ligne propose des tutoriels pour débuter avec les macros. Si vous êtes débutant dans le domaine, je vous invite à suivre les liens suivants pour réaliser les tutoriels de base : Cours VBA - Première Macro par Excel Pratique ou Comment faire une macro sur Excel par Justine Gavriloff.
Exemples de macro :
Réaliser une mise en forme :
Lorsque l'on possède un tableau dans un fichier, il arrive très souvent de vouloir le mettre en forme afin qu'il soit plus lisible. Prenons l'exemple que l'on souhaite, pour toutes les cellules d'un tableau, centrer et mettre en gras le texte, appliquer des bordures et mettre un fond bleu. Cela nécessite 4 opérations distinctes ! En enregistrant cette suite d'actions et en lui appliquant un bouton ou un raccourci clavier, il suffira à présent d'un clic pour réaliser ces 4 étapes.
-> Code à retrouver en bas de page
Créer un nouveau classeur Excel pour chaque feuille d'un classeur :
Imaginez que vous possédez un fichier Excel avec plusieurs dizaines d'onglets et que vous souhaitiez créer un nouveaux fichier Excel pour chacun d'eux. Dans cet exemple, la tache est plus complexe ! A ma connaissance, aucun bouton n'est disponible dans l'interface standard d'Excel pour réaliser cette opération. Malgré cela, quelques lignes de code dans l'éditeur VBA permettent de créer un programme pour réaliser cette opération.
-> Code à retrouver en bas de page
-> Exemple de code "Réaliser une mise en forme"
Sub Exemple_mise_en_forme()
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent5
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
End Sub
-> Exemple de code "Créer un nouveau classeur Excel pour chaque feuille d'un classeur"
Sub CreerNouveauClasseurChaqueFeuille ()
Dim ws As Worksheet
Dim wb As Workbook
For Each ws In ThisWorkbook.Worksheets
Set wb = Workbooks.Add
wb.SaveAs ThisWorkbook.Path & "\" & ws.Name
ws.Copy Before:=wb.Worksheets(1)
wb.Close SaveChanges:=True
Next ws
End Sub