Range en vba

  • Initiateur de la discussion Greg le novice
  • Date de début
G

Greg le novice

Guest
salut les genies!


Comment faire pour utiliser un Range avec plusieurs plage de cellule exemple : With Worksheets("feuil1").Range("n2:w11 ").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
Avec le n2:w11 j'aimerai une autre plage

Merci d'avance!!!
 
@

@+Thierry

Guest
Re: Range en VBA / Manipulation des Borders en Boucle sur Range

Bonjour Greg, P@tB, le Forum...

Belle journée ici, surtout après la soirée d'hier soir , on souhaite la même chose à l'OM !!!

Bon, revenons à l'Objet Range pour une mise en forme de Border. Il n'y a pas longtemps, j'ai fait Lien supprimé qui avait besoin de formattage en cours d'un traitement en boucle...

Ce Fil étant précisément sur la mise en forme d'une Range avec des Borders, je me permets de m'incruster pour vous présenter mes recherches la dessus ...

Attention la réponde de P@tB est largement suffisante pour la question de Greg, mais en général on ne met pas qu'un Border à Gauche, mais on veut encadrer la plage... Une première méthode, of course, consiterait à faire çà :

Sub LaTendanceSeraitDeFaireCeci()
With Worksheets(1).Range("N2:W11,G2:K11")
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
End With
End Sub



Mais je pense qu'il est interressant de boucler sur l'Object Border comme ceci (soit sur les valeur numériques avec N as Byte, soit par une boucle sur Array avec N as Variant ):

Sub BorderSeveralRange()
Dim WS As Worksheet
Dim UR As Range
Dim N As Byte 'NB si on utilise la méthode Array ci-dessous, alors "N" sera Dim As Variant

Set WS = Worksheets("Sheet1")

Set UR = Application.Union(WS.Range("N2:W11"), WS.Range("G2:K11"))

With UR
For N = 7 To 10
' For Each N In Array(7, 8, 9, 10)
' For Each N In Array(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight)
With .Borders(N)
.LineStyle = xlContinuous
.Weight = 4
.ColorIndex = xlAutomatic
End With
Next
End With
End Sub

J'utilise ici un Set d'Object Range en Union,.Range mais on pourrait faire comme P@tB... en fait, le Set d'Object Range va devenir plus utile dans ce qui suit...



Admettons, on veut encadrer en gras le contour de tableaux sur des plages différentes, tout en ayant chacune cellule de ces plages elle-même encadrée avec un trait fin...

Sub BorderSeveralRangeAndIndividualCell()
Dim WS As Worksheet
Dim UR As Range, CL As Range

Set WS = Worksheets("Sheet1")
Set UR = Application.Union(WS.Range("N2:W11"), WS.Range("G2:K11"))

For Each CL In UR
Bordering CL, 2
Next CL
Bordering UR, 4
End Sub

Sub Bordering(C As Range, y As Byte)
Dim N As Byte
With C
For N = 7 To 10
With .Borders(N)
.LineStyle = xlContinuous
.Weight = y
.ColorIndex = xlAutomatic
End With
Next N
End With
End Sub

Voilà, c'est une méthode interressante, je ne sais pas vraiment si à l'usage on gagne du temps, mais en écriture et lisibilité, il n'y a pas photo !! lol

Bonne Fin de Matinée
@+Thierry
 
G

Greg le novice

Guest
Merci Thierry mais je pense que tu n as lu que le debut de mon pseudo : greg le DEBUTANT, pour l'instant ce que tu m'inscrit ci dessus est de l'ouzbec!
Mais j'espere qu'un de ces jours j'aurai le niveau!
 
@

@+Thierry

Guest
Re: Range en VBA / Manipulation des Borders en Boucle sur Range

Re Bonsoir Greg (le Futur Expert VBA !)

Pour te démontrer que ce n'est pas de l'ouzbec... Et pour que tu te fasses la main...

Copie la dernière macro "BorderSeveralRangeAndIndividualCell" (y compris avec sa "sous" Sub "Bordering(C As Range, y As Byte)"...

Tu colles ça dans un classeur vierge, dans un module vierge...

Et tu fait Menu "Run" ou le bouton "play" et tu lances cette macro "BorderSeveralRangeAndIndividualCell"... Et tu n'auras peut-être déjà pas tout compris pour "comment elle fait", mais tu verras au moins ce "qu'elle fait" !!

Bonne Soirée
@+Thierry
 
P

P@tB

Guest
Coucou Greg, @+Thierry, le forum

Waouuuuuu !!!

Avec Thierry, tu as le beurre, l'argent du beurre et en prime, tu repars avec la crémière à ton bras !

Merci.
Je vais essayer ça de suite.
Bonne soirée à tous.
 

Discussions similaires

Réponses
7
Affichages
334

Statistiques des forums

Discussions
312 352
Messages
2 087 521
Membres
103 575
dernier inscrit
rst