Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 vba excel

Mesda

XLDnaute Nouveau
Bonjour,

je cherche à écrire un code VBA pour Excel :
j'ai un tableau avec des données qui sont extraites chaque jour et qui changes, je voudrais sélectionner des plages de cellule en automatique pour mettre des bordures épaisses pour chaque département.
voici mon tb (avec les bordures que je désire) :



chaque jour (l'extraction excel) la colonne B et différente, sur cette exemple j'ai 13 "MONTAGE", mais je voudrais que les bordures épaisses soient automatisées en fonction du département.

Daniel

Pièces jointes​

 
Solution
Bonjour Mesda, Wayki, Phil69970,

Commençons par trier le tableau et effacer toutes les bordures :
VB:
Sub Bordures()
'se lance par les touches Ctrl+B
Dim tablo, i&
Application.ScreenUpdating = False
ActiveSheet.UsedRange.Sort Columns(2), xlAscending, Header:=True 'tri sur la colonne B
Cells.Borders.LineStyle = xlNone 'efface toutes les bordures
With [A1].CurrentRegion
    tablo = .Resize(, 2) 'matrice, plus rapide
    For i = 2 To UBound(tablo)
        If tablo(i, 2) <> tablo(i - 1, 2) Then .Rows(i).Borders(xlEdgeTop).Weight = xlMedium 'bordure supérieure
    Next
    .BorderAround Weight:=xlMedium 'pourtour
End With
End Sub
A+

Wayki

XLDnaute Impliqué
Hello,
Est-ce que les départements sont susceptibles de changer ou ils sont toujours les mêmes ?
Peux-tu glisser un fichier pour nous faciliter le travail et répondre au plus près à tes attentes ?
A +
 

Mesda

XLDnaute Nouveau
ok, il faut que je me pause pour comprendre le code (je suis vraiment débutant ), je te dirai si ça fonctionne.

Mais pas avant début de semaine prochaine, départ en wk demain matin.

merci pour ton retour.


Daniel
 

job75

XLDnaute Barbatruc
Bonjour Mesda, Wayki, Phil69970,

Commençons par trier le tableau et effacer toutes les bordures :
VB:
Sub Bordures()
'se lance par les touches Ctrl+B
Dim tablo, i&
Application.ScreenUpdating = False
ActiveSheet.UsedRange.Sort Columns(2), xlAscending, Header:=True 'tri sur la colonne B
Cells.Borders.LineStyle = xlNone 'efface toutes les bordures
With [A1].CurrentRegion
    tablo = .Resize(, 2) 'matrice, plus rapide
    For i = 2 To UBound(tablo)
        If tablo(i, 2) <> tablo(i - 1, 2) Then .Rows(i).Borders(xlEdgeTop).Weight = xlMedium 'bordure supérieure
    Next
    .BorderAround Weight:=xlMedium 'pourtour
End With
End Sub
A+
 

Pièces jointes

  • Departement(1).xlsm
    20 KB · Affichages: 5

Mesda

XLDnaute Nouveau
bonjour Wayki, Phil69970, job75,

Merci pour vos réponses,
j'ai testé les lignes de Phil69970 et job75, pour Wayki le programme me paraissait un peu trop compliqué.
les 2 autres fonctionnent bien, le programme de Phil69970 et plus compréhensible pour un débutant et celui de job75, ben on voit l'expert !
Mais c'est très formateur de voir plusieurs possibilités
@+
 

Discussions similaires

Réponses
9
Affichages
246
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…