Comment on fait une bordure de cellule dans excel par vb

msohet Messages postés 76 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 3 mai 2005 - 27 mars 2003 à 09:50
cs_CyssouX Messages postés 8 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 17 janvier 2005 - 21 nov. 2003 à 12:19
Voila le truc,

Je pilote excel par Automation et aprés avoir fait ma sélection, je voudrais en définir les bordures.

Le probléme c que je trouve pas comment.

Aprés avoir enregistré une macro qui fait ce travail, j'ai été voir le code généré : et donc j'ai pris connaissance de la propriété borders de l'objet workbooks.selection

Or quand je reprend cette propriété dans l'appli vb génére une erreur "impossible de définir la priopriéte borders"

un ptit bout de code pour vous montrer ce que je veux faire.

With .Selection
            .Font.Name = "Arial"
            .Font.Size = 11
            .Font.ColorIndex = 5
            .borders.linestyle = xlcontinuous
            .borders.Weight = xlmedium    '<== plante ici
End With


donc si vous avez déja eu des problémes de ce genre et que vous avez une solution au mien, je suis preneur.

@++

SOHET Morgan

C.N.P.O. - Le Belloy

3 réponses

cs_CyssouX Messages postés 8 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 17 janvier 2005
21 nov. 2003 à 11:25
Voici un petit code qui met en gras un ligne et fait les bordures ... J'espère que cela t'aideras

Private Sub Command1_Click()

Dim ExcelSuppr As Excel.Application
Dim objWkb As Excel.Workbook
Dim objFont As Excel.Font
Dim objInterior As Excel.Interior
Dim objBordure As Excel.Border
Dim objselect As Excel.Range



' Ouverture du fichier Excel
Set ExcelSuppr = CreateObject("Excel.Application")
Set objWkb = ExcelSuppr.Application.Workbooks.Open("c:\temp\test.xls")
ExcelSuppr.Visible = False

[green]' Selection de la ligne[\green]
cellule1 = Chr(65) & 4
cellule2 = Chr(76) & 4
cellules = cellule1 & ":" & cellule2
Set objselect = ExcelSuppr.Range(cellules)
objselect.Select

[green]' Mise en Gras, taille 12, ecriture arial[\green]
Set objFont = ExcelSuppr.Selection.Font
With objFont
.Name = "Arial"
.FontStyle = "Gras"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With

[green]' Mise en couleur de la ligne selectionnée[\green]
Set objInterior = ExcelSuppr.Selection.Interior
With objInterior
.ColorIndex = 33
.Pattern = xlSolid
End With

[green]' Mise en forme des bordures Petite[\green]
Set objBordure = ExcelSuppr.Selection.Borders(xlTop) [green]' Bordure du haut[\green]
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objBordure = ExcelSuppr.Selection.Borders(xlEdgeTop) [green]' Bordure horizontale intercallée entre deux lignes[\green]
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objBordure = ExcelSuppr.Selection.Borders(xlBottom) [green]' Bordure du bas[\green]
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objBordure = ExcelSuppr.Selection.Borders(xlEdgeRight) [green]' Bordure de droite['green]
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objBordure = ExcelSuppr.Selection.Borders(xlEdgeLeft) [green]' Bordure de Gauche[\green]
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

Set objBordure = ExcelSuppr.Selection.Borders(xlInsideVertical) [green]' Bordure verticale intercallé entre deux colonnes[\green]
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
[green]' Bordure Très gros .Weight = xlThick
' Bordure Style gros .Weight = xlMedium
' Bordure style fin .Weight = xlThin

' Fermeture et enregistrement
' excelsuppr.Application.DisplayAlerts = False
[\green]

objWkb.Save

objWkb.Close 0
ExcelSuppr.Application.Quit
Set objFont = Nothing
Set objWkb = Nothing
Set objInterior = Nothing
Set objBordure = Nothing
Set ExcelSuppr = Nothing
Set objselect = Nothing

End Sub

CyssouX
0
cs_CyssouX Messages postés 8 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 17 janvier 2005
21 nov. 2003 à 11:29
Voici un petit code qui met en gras un ligne et fait les bordures ... J'espère que cela t'aideras

*** Avec la couleur des commentaire, c'est mieux ...

Private Sub Command1_Click()

Dim ExcelSuppr As Excel.Application
Dim objWkb As Excel.Workbook
Dim objFont As Excel.Font
Dim objInterior As Excel.Interior
Dim objBordure As Excel.Border
Dim objselect As Excel.Range



' Ouverture du fichier Excel
Set ExcelSuppr = CreateObject("Excel.Application")
Set objWkb = ExcelSuppr.Application.Workbooks.Open("c:\temp\test.xls")
ExcelSuppr.Visible = False

' Selection de la ligne
cellule1 = Chr(65) & 4
cellule2 = Chr(76) & 4
cellules = cellule1 & ":" & cellule2
Set objselect = ExcelSuppr.Range(cellules)
objselect.Select

' Mise en Gras, taille 12, ecriture arial
Set objFont = ExcelSuppr.Selection.Font
With objFont
.Name = "Arial"
.FontStyle = "Gras"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With

' Mise en couleur de la ligne selectionnée
Set objInterior = ExcelSuppr.Selection.Interior
With objInterior
.ColorIndex = 33
.Pattern = xlSolid
End With

' Mise en forme des bordures Petite
Set objBordure = ExcelSuppr.Selection.Borders(xlTop) ' Bordure du haut
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objBordure = ExcelSuppr.Selection.Borders(xlEdgeTop) ' Bordure horizontale intercallée entre deux lignes
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objBordure = ExcelSuppr.Selection.Borders(xlBottom) ' Bordure du bas
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objBordure = ExcelSuppr.Selection.Borders(xlEdgeRight) ' Bordure de droite
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objBordure = ExcelSuppr.Selection.Borders(xlEdgeLeft) ' Bordure de Gauche
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

Set objBordure = ExcelSuppr.Selection.Borders(xlInsideVertical) ' Bordure verticale intercallé entre deux colonnes
With objBordure
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
' Bordure Très gros .Weight = xlThick
' Bordure Style gros .Weight = xlMedium
' Bordure style fin .Weight = xlThin

' Fermeture et enregistrement
' excelsuppr.Application.DisplayAlerts = False


objWkb.Save

objWkb.Close 0
ExcelSuppr.Application.Quit
Set objFont = Nothing
Set objWkb = Nothing
Set objInterior = Nothing
Set objBordure = Nothing
Set ExcelSuppr = Nothing
Set objselect = Nothing

End Sub

CyssouX
0
cs_CyssouX Messages postés 8 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 17 janvier 2005
21 nov. 2003 à 12:19
Une petite erreur c'est glissé dans mon code ...

Pour la bordure horizontale entre deux lignes, c'est :

Set objBordure = ExcelSuppr.Selection.Borders(xlInsideHorizontal) ' Bordure horizontale intercallée entre deux lignes

Par contre fait gaffe, les bordures horizontales et verticales ne fonctionnent que si tu selectionnes plusieurs lignes ou colonne (logique mais je me suis fait avoir quand même ...)

CyssouX
0
Rejoignez-nous