XL 2021 Mise en forme automatique via VBA

  • Initiateur de la discussion Initiateur de la discussion 66alex66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
76
Réponses
3
Affichages
242
Réponses
8
Affichages
562
Retour