Rajouter une bordure noire dans un tableau par VBA
Résolu/Fermé
Dreampower75
Messages postés
88
Date d'inscription
jeudi 28 janvier 2021
Statut
Membre
Dernière intervention
18 juin 2022
-
Modifié le 7 mai 2022 à 13:35
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 7 mai 2022 à 13:31
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 7 mai 2022 à 13:31
A voir également:
- Vba linestyle options
- Windows 11 afficher d'autres options - Guide
- Parametres comptes options de connexion - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Accéder aux options de démarrage avancées de windows 10 - Guide
- Mkdir vba ✓ - Forum VB / VBA
1 réponse
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
7 mai 2022 à 12:25
7 mai 2022 à 12:25
Bonjour,
Avec un fichier exemple, c'eût été plus simple ...
J'ai pas tout compris, notamment pourquoi copier les formules et pourquoi copier 2 lignes de formats.
Bref j'ai simplement repris la même méthode (qui me semble très lourde) et ajouté le trait manquant
Ça donne quelque chose comme :
Avec un fichier exemple, c'eût été plus simple ...
J'ai pas tout compris, notamment pourquoi copier les formules et pourquoi copier 2 lignes de formats.
Bref j'ai simplement repris la même méthode (qui me semble très lourde) et ajouté le trait manquant
Ça donne quelque chose comme :
Option Explicit Sub test() ' Dim wsh As Worksheet ' feuille (de calcul) Dim wsS As Worksheet ' feuille Synthèse Dim cel As Range ' cellule Dim noL As Long ' numéro de ligne Dim drL As Long ' dernière ligne Dim ofL As Long ' offset ligne Set wsS = ThisWorkbook.Worksheets("SYNTHESE") ' Effacement des données et bordures existantes wsS.Range("B7:N100000").Clear wsS.Range("A7:A100000").Borders.LineStyle = xlLineStyleNone ' Copie des données et formules For Each wsh In ThisWorkbook.Worksheets With wsh If .Tab.ColorIndex = 33 Then ' Risk For Each cel In .Range("A7", .Cells(Rows.Count, "A").End(xlUp)).Cells drL = wsS.Cells(Rows.Count, "B").End(xlUp).Row + 1 ' données wsS.Cells(drL, "B").Value = cel.Offset(, 0).Value wsS.Cells(drL, "C").Value = cel.Offset(, 1).Value wsS.Cells(drL, "D").Value = cel.Offset(, 2).Value ' formules For ofL = 0 To 9 wsS.Cells(drL, "E").Offset(ofL).Formula = wsS.Cells(drL, "X").Offset(ofL).Formula Next ofL Next cel ' séparateur (uniquement en colonne "A" car la mise en page écrase les formats de B à N) wsS.Cells(drL, "A").Borders(xlEdgeBottom).LineStyle = xlContinuous wsS.Cells(drL, "A").Borders(xlEdgeBottom).Weight = xlThick End If End With Next wsh With wsS.Range("B7:N10000") ' Alignements cellules B à N .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom ' Mettre les cellules à "-" .Style = "Comma" .NumberFormat = "_-* #,##0 _€_-;-* #,##0 _€_-;_-* ""-""?? _€_-;_-@_-" ' Mise en page ThisWorkbook.Worksheets("MODELE").Range("A3:M4").Copy For noL = 1 To drL - 7 If .Cells(noL, "B").Value <> "Totalazerty" And .Cells(noL, "B").Value <> "" Then .Rows(noL).PasteSpecial Paste:=xlPasteFormats End If Next noL End With ' Étendre le séparateur de B à N For noL = 7 To drL If wsS.Cells(noL, "A").Borders(xlEdgeBottom).Weight = xlThick Then wsS.Range(wsS.Cells(noL, "A"), wsS.Cells(noL, "N")).Borders(xlEdgeBottom).Weight = xlThick End If Next noL wsS.Range("P10").Activate End Sub
7 mai 2022 à 13:05
Merci cela fonctionne
7 mai 2022 à 13:31