Automatiser le formatage de la présentation des données, Excel VBA
Voici un exemple de code VBA détaillé pour automatiser le formatage de la présentation des données dans un classeur Excel. Le code sera conçu pour effectuer plusieurs actions courantes de mise en forme, telles que :
1. Ajuster la largeur des colonnes.
2. Mettre en gras les en-têtes de colonnes.
3. Appliquer un style de bordure aux cellules.
4. Changer la couleur d’arrière-plan des cellules.
5. Aligner le texte des cellules.
Objectif :
Ce code formatte les données dans une feuille Excel en fonction de ces critères.
Code VBA pour automatiser le formatage :
Sub AutomatiserFormatage() ' Déclaration des variables Dim ws As Worksheet Dim lastRow As Long Dim lastColumn As Long Dim dataRange As Range ' Référence à la feuille active Set ws = ThisWorkbook.ActiveSheet ' Trouver la dernière ligne et colonne avec des données lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' Définir la plage des données Set dataRange = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastColumn)) ' 1. Ajuster la largeur des colonnes ws.Cells.EntireColumn.AutoFit ' 2. Mettre en gras les en-têtes (ligne 1) ws.Rows(1).Font.Bold = True ' 3. Appliquer des bordures aux cellules With dataRange.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With dataRange.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With ' 4. Appliquer une couleur de fond à la première ligne (les en-têtes) ws.Rows(1).Interior.Color = RGB(221, 235, 247) ' Couleur bleu clair ' 5. Alignement du texte des cellules With dataRange .HorizontalAlignment = xlCenter ' Centrer horizontalement .VerticalAlignment = xlCenter ' Centrer verticalement End With ' 6. Appliquer un format de nombre aux colonnes (ex : monétaire) Dim i As Integer For i = 1 To lastColumn If IsNumeric(ws.Cells(2, i).Value) Then ws.Columns(i).NumberFormat = "#,##0.00" ' Format monétaire End If Next i ' 7. Mettre en couleur les valeurs négatives en rouge Dim cell As Range For Each cell In dataRange If IsNumeric(cell.Value) And cell.Value < 0 Then cell.Font.Color = RGB(255, 0, 0) ' Rouge pour les valeurs négatives End If Next cell ' 8. Ajouter une bordure extérieure à la plage de données With dataRange.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThick End With With dataRange.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThick End With With dataRange.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThick End With With dataRange.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThick End With End Sub
Explications détaillées du code :
1. Référencement de la feuille active :
Set ws = ThisWorkbook.ActiveSheet : Cette ligne définit ws comme étant la feuille de calcul actuellement active dans le classeur.
2. Déterminer la dernière ligne et colonne des données :
lastRow et lastColumn permettent de trouver la dernière ligne avec des données dans la première colonne et la dernière colonne avec des données dans la première ligne, respectivement.
3. Ajustement de la largeur des colonnes :
ws.Cells.EntireColumn.AutoFit ajuste automatiquement la largeur de toutes les colonnes en fonction du contenu de chaque cellule.
4. Mise en gras des en-têtes de colonnes (ligne 1) :
ws.Rows(1).Font.Bold = True applique le formatage en gras à la première ligne.
5. Ajout de bordures aux cellules :
With dataRange.Borders(xlEdgeBottom) applique une bordure inférieure et une bordure droite à chaque cellule dans la plage dataRange.
6. Modification de la couleur de fond de la première ligne :
ws.Rows(1).Interior.Color = RGB(221, 235, 247) modifie la couleur de fond de la première ligne (en-têtes de colonnes) en bleu clair.
7. Alignement du texte des cellules :
dataRange.HorizontalAlignment = xlCenter et dataRange.VerticalAlignment = xlCenter assurent que le texte dans toutes les cellules de la plage dataRange est centré horizontalement et verticalement.
8. Formatage des nombres (format monétaire) :
Le code vérifie si les cellules dans la plage contiennent des valeurs numériques, puis applique un format monétaire #,##0.00.
9. Modification de la couleur des valeurs négatives :
Si une cellule contient une valeur numérique et que cette valeur est inférieure à 0, le texte de cette cellule est coloré en rouge.
10. Ajout de bordures extérieures à la plage de données :
Ce bloc ajoute des bordures épaisses autour de la plage de données pour délimiter clairement la zone.
Conclusion :
Ce code permet d’automatiser un grand nombre de tâches de formatage courantes dans Excel. Vous pouvez personnaliser ce code en fonction de vos besoins, par exemple, en modifiant les couleurs, les formats de nombres, ou les conditions d’application des mises en forme. Pour exécuter ce code, il vous suffit de l’insérer dans un module VBA de votre classeur Excel.