Automatiser le formatage de la présentation des données, Excel VBA

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.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x