code bordurage très bien mais ???

grisan29

XLDnaute Accro
bonjour a vous tous
voici un code pour faire les bordures qui fonctionne bien mais fait des bordures verticales a toutes les colonnes
Code:
Sub Appliquer_Les_Bordures(NomFeuille As String)
Dim DerCol As Integer
Dim DerLig As Long
Dim Bordure(), Elt As Variant

'Tableau avec le type de bordure à appliquer
Bordure = Array(xlEdgeTop, xlEdgeLeft, _
       xlEdgeRight, xlInsideVertical)

With Worksheets(NomFeuille)
   If Not IsEmpty(.UsedRange) Then
       DerLig = .Cells.Find("*", LookIn:=xlValues, _
               SearchOrder:=xlByRows, _
               SearchDirection:=xlPrevious).Row
       DerCol = .Cells.Find("*", LookIn:=xlValues, _
               SearchOrder:=xlByColumns, _
               SearchDirection:=xlPrevious).Column
        With .Range("A19", .Cells(DerLig, DerCol - 3))
           For Each Elt In Bordure
               With .Borders(Elt)
                   .LineStyle = xlContinuous
                   .Weight = xlThin 'Or Thick
                   'Constantes couleurs disponibles
                   'vbRed , VBBroun, vbGreen, vbWhite
                   'vbCyan, vbBlue, vbYellow
                   .Color = vbBlack
               End With
               Next
       End With
              
       '========================================================
          
       With .Range("C19", .Cells(DerLig, 3))
            .Borders(xlEdgeLeft).LineStyle = xlNone
       End With
   End If
End With
End Sub

moi je voudrais qu'il fasse comme sur le fichier exemple ou j'ai en premier ce que fait le code et en 2ème ce que je voudrais

Pascal
 

Pièces jointes

  • Classeurtest bordures.xlsm
    16.4 KB · Affichages: 48
Dernière édition:

grisan29

XLDnaute Accro
Re : code bordurage très bien mais ???

bonjour Jean-Marcel

Merci de ta réponse, mais le -3 c'est moi qui l'ai mis pour essayer car -3 je croyais que cela aurait fait garder l'espace entre les colonnes K et M et qu'il fallait rajouter des lignes pour bordurer les colonnes M et N,
les 4 bordures qu'il y a entre pomme et poires sont aussi en trop
ce que je n'ai pas dit non plus c'est que je ne sais pas a l'avance jusqu'ou les bordures seront faites vers le bas

en fureant internet j'ai trouvé un autre code qui fait presque ce que je voudrais , je l'ai essayer et il me conviendrai si les bordures se mettaient comme sur l'exemple que j'ai poster
Code:
Sub bordure()
Dim L As Long, i As Byte
 With Sheets("feuil1")
   L = Application.Max(.[A65536].End(xlUp).Row, 19)
   With .Range("A19:N" & L)
     For i = 7 To 10
       .Borders(i).Weight = xlMedium
     Next
     .Offset(, 2).Resize(, 8).Borders(xlInsideVertical).Weight = xlMedium
     Union(.Columns("G:K"), .Columns("M:N")).VerticalAlignment = xlCenter
   End With
   .Range("A" & L + 1 & ":N" & .Rows.Count).Clear 'RAZ sous le tableau
 End With


End Sub

Pascal
 
Dernière édition:

grisan29

XLDnaute Accro
Re : code bordurage très bien mais ???

bonsoir Jean-Marcel et le forum

j'ai presque réussi avec le code que mis en dernier , il me manque juste de ne pas mettre de bordure horizontale en colonne Lcar ce code bordure toute les colonnes a partir de G jusque N
Code:
Sub bordure()
Dim L As Long, i As Byte
 With Sheets("feuil1")
   L = Application.Max(.[A65536].End(xlUp).Row, 19)
   With .Range("A19:N" & L)
     For i = 7 To 10
       .Borders(i).Weight = xlMedium
     Next
     .Offset(, 5).Resize(, 9).Borders(xlInsideVertical).Weight = xlMedium
     Union(.Columns("G:K"), .Columns("M:N")).VerticalAlignment = xlCenter
   End With
        '.Range("L" & L + 1).Borders(xlEdgeLeft).LineStyle = 0
      .Range("A" & L + 1 & ":N" & .Rows.Count).Clear 'RAZ sous le tableau
 End With
End Sub
j'ai bien essayer avec la ligne que j'ai mis en commentaire mais il n'y a rien a faire

Pascal
 

grisan29

XLDnaute Accro
Re : code bordurage très bien mais ???

re bonsoir le forum

j'ai réussi comme ceci mais ce n'est peut etre pas la bonne solution
Code:
Sub bordure()
Dim L As Long, i As Byte
 With Sheets("feuil1")
   L = Application.Max(.[A65536].End(xlUp).Row, 19)
   With .Range("A19:N" & L)
     For i = 7 To 10
       .Borders(i).Weight = xlMedium
     Next
     .Offset(, 5).Resize(, 9).Borders(xlInsideVertical).Weight = xlMedium
     Union(.Columns("G:K"), .Columns("M:N")).VerticalAlignment = xlCenter 'xlEdgeLeft = coté gauche
     .Columns("L").Borders(xlEdgeBottom).LineStyle = xlNone
     .Columns("L").Borders(xlEdgeTop).LineStyle = xlNone
   End With
       
      .Range("A" & L + 1 & ":N" & .Rows.Count).Clear 'RAZ sous le tableau
 End With
End Sub

merci de me le dire mais je clos le post

Pascal
 

Regueiro

XLDnaute Impliqué
Re : code bordurage très bien mais ???

Bonsoir le Forum, Grisan
Code pour ne pas mettre de bordure horizontale en colonne L ou 12

HTML:
'Columns(12).Borders(xlInsideHorizontal).LineStyle = xlNone
  Columns("L:L").Borders(xlInsideHorizontal).LineStyle = xlNone
A+
 

job75

XLDnaute Barbatruc
Re : code bordurage très bien mais ???

Bonjour grisan29, Jean-Marcel, Regueiro,

Pourquoi une macro ? On fait ce qu'on veut avec une MFC :

- sélectionner (touche Ctrl enfoncée) A19:K19 et M19:N19 => bordure horizontale supérieure

- sélectionner (touche Ctrl enfoncée) les colonnes D:N puis A et créer la MFC.

Formule de la MFC =$A1<>"" format : bordures verticales.

Bonne journée.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : code bordurage très bien mais ???

Re,

Evidemment si l'on ne veut pas s'appuyer sur la colonne A pour définir le tableau c'est plus compliqué.

On créera le nom derlig défini par cette formule :

Code:
=MAX((Feuil1!$A$19:$N$200<>"")*LIGNE(Feuil1!$A$19:$N$200))
Et la formule de la MFC deviendra :

Code:
=ET(LIGNE()>=19;LIGNE()<=derlig)
A+
 

grisan29

XLDnaute Accro
Re : code bordurage très bien mais ???

bonjour Job75, regueiro, jean marcel et le forum

Job75 le tout est a ajouter dans un code vba donc formules inadaptée
regueiro j'ai essayer ton code et les bordures en col L sont toujours, je l'ai mise comme ceci
Code:
Sub bordure()
Dim L As Long, i As Byte
 With Sheets("feuil1")
   L = Application.Max(.[A65536].End(xlUp).Row, 19)
   With .Range("A19:N" & L)
     For i = 7 To 10
       .Borders(i).Weight = xlMedium
     Next
     .Offset(, 5).Resize(, 9).Borders(xlInsideVertical).Weight = xlMedium
     Union(.Columns("G:K"), .Columns("M:N")).VerticalAlignment = xlCenter 'xlEdgeLeft = coté gauche
     '.Columns("L").Borders(xlEdgeBottom).LineStyle = xlNone
     '.Columns("L").Borders(xlEdgeTop).LineStyle = xlNone
      .Columns("L:L").Borders(xlInsideHorizontal).LineStyle = xlNone
   End With
       
      .Range("A" & L + 1 & ":N" & .Rows.Count).Clear 'RAZ sous le tableau
 End With
End Sub
Pascal
 

Si...

XLDnaute Barbatruc
Re : code bordurage très bien mais ???

salut

avec les plages du fichier sinon à adapter
Code:
Option Explicit
Private Sub CommandButton1_Click()
  Dim L As Long, n As Byte
  L = [A65000].End(xlUp).Row + 1
  Range("A19:N" & L).Borders.LineStyle = xlNone
  For n = 0 To 3
   Union(Range("A19:K" & L), Range("M19:N" & L)).Borders(Array(7, 8, 10, 11)(n)).LineStyle = 1
  Next
  Range("B19:F" & L).Borders(11).LineStyle = xlNone
  Range("A" & L & ":N" & L).Borders.LineStyle = xlNone
  Union(Range("A" & L & ":k" & L), Range("M" & L & ":N" & L)).Borders(8).LineStyle = 1
End Sub

Remarque :quand je contrôle le code avec F8, le nom des variables est transformé en nombre. J'utilise cela pour simplifier l'écriture.
 

Pièces jointes

  • bordures .xlsm
    21.7 KB · Affichages: 46

Statistiques des forums

Discussions
312 540
Messages
2 089 408
Membres
104 163
dernier inscrit
Lolo37