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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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!!!
 
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
 
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!
 
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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
14
Affichages
332
Réponses
1
Affichages
255
Retour