• Initiateur de la discussion Initiateur de la discussion Worm
  • 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 !

W

Worm

Guest
Hello everybody,

je voudrais que lorsque je tape "ok" dans une case, ma macro puisse modifier la bordure de toute la ligne.

Avec Range.Rows.Borders, ça marche que pour la case (exactement comme Range.Borders).

Moi, je voudrais que ça marche pour toute la ligne.

Please help!

Thanks
 
Bonjour Worm, le Forum

Voici comment je procèderais ....

Sub BorderOnRow()
Dim WS As Worksheet
Dim UR As Range
Dim L As Integer

L = ActiveCell.Row

Set WS = Worksheets("Feuil1")

Set UR = WS.Range("A" & L & ":IV" & L)

With UR
With .Borders(9)
.LineStyle = xlContinuous
.Weight = 4
.ColorIndex = xlAutomatic
End With
End With
End Sub


Plus d'info dans ce Fil => Lien supprimé

Bon Week End
@+Thierry
 
Bonjour Worm,

Re- Thierry

Pour ma part, une proposition légèrement différente :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "ok" Then
With Target.EntireRow.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
End If
End Sub


Cordialement,
Didier_mDF
 
Oups

On devrait plutôt adapter cet exemple avec :

Set WS = ActiveSheet

Plutôt que
Set WS = Worksheets("Feuil1")

Evidemment si on passe par une macro évènementielle de Private Module de Feuille (pour le OK) on ferait alors comme ceci (en imaginant que "OK" doit être écrit en colonne "A":

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim UR As Range
Dim L As Integer
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
If UCase(Target.Value) = "OK" Then

L = Target.Row

Set UR = Me.Range("A" & L & ":IV" & L)

With UR
With .Borders(9)
.LineStyle = xlContinuous
.Weight = 4
.ColorIndex = xlAutomatic
End With
End With
End If
End If
End Sub

Bon Samedi
@+Thierry
 
Hello Didier,

Oui EntireRow pourrait être plus simple, en fait j'ai repris une démo que j'ai mis en lien ci-dessus... (interressante pour les 4 borders)... Par contre l'avantage c'est que justement on peut éviter d'aller jusqu'en IV si on veut juste un border sur A à G (par exemple) on peut adapter facilement :

Set UR = Me.Range("A" & L & ":G" & L)

Bon Aprèm
@+Thierry
 
- 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
4
Affichages
133
Retour