XL 2021 Mise en forme automatique via VBA

66alex66

XLDnaute Nouveau
Bonjour,

J'aimerais solliciter votre aide concernant la problématique suivante :
Je dois réaliser une mise en forme d'un tableau de manière répétitive en insérant des bordures et en supprimant un surplus de lignes.

Je reçois donc ce tableau en format "brut" :

EXCEL_fmlCFLFse1.png

Et j'aimerais, si possible, obtenir ceci via VBA :

- Bordures fines à l'intérieur du tableau
- Grosses bordures pour séparer les différentes couleurs qui séparent le tableau en bloc
- Deux lignes vides en dessous du dernier index inséré dans la colonne L ou R

EXCEL_paqtyhe5hM.png

Un tout grand merci pour votre aide.
 

Pièces jointes

  • Mise en forme.xlsm
    11.7 KB · Affichages: 5

vgendron

XLDnaute Barbatruc
Bonjour

Pourquoi ne pas utiliser les tables structurées?
1) c'est facile à faire : Ctrl+L sur une des données de ton tableau
2) de nombreux styles prédéfinis existent
3) la Mise en forme des lignes est reproduite automatiquement à chaque ajout de ligne
 

66alex66

XLDnaute Nouveau
Bonjour

Pourquoi ne pas utiliser les tables structurées?
1) c'est facile à faire : Ctrl+L sur une des données de ton tableau
2) de nombreux styles prédéfinis existent
3) la Mise en forme des lignes est reproduite automatiquement à chaque ajout de ligne

Merci beaucoup pour ta suggestion.
En réalité, je dois traiter des centaines de fichiers.
Je pense dès lors qu’une automatisation VBA pourrait me faire gagner pas mal de temps.
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Un essai basique
Au préalable, effacer les bordures manuellement pour faire le test
VB:
Sub Essai_Bordures()
Dim lig&, i&, j&, col
col = Array("B", "C", "H", "N", "T")
lig = Cells(Rows.Count, "R").End(3)(3).Row
Range("A9").Resize(lig - 8, 20).Borders.Value = 1
For i = lig To 9 Step -1
If Len(Cells(i, 1)) Then
Cells(i, 1).Resize(, 20).Borders(xlEdgeTop).Weight = xlMedium
End If
Next
For j = LBound(col) To UBound(col)
Cells(9, col(j)).Resize(lig - 8).Borders(xlEdgeLeft).Weight = xlMedium
Next
Cells(lig, 1).Resize(, 20).Borders(xlEdgeBottom).Weight = xlMedium
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 284
Membres
103 170
dernier inscrit
HASSEN@45