Surligner ligne / colonne d'une cellule active sans utiliser de macro
Bonjour
J'ai un tableau excel qui comporte de nombreux onglets similaires et comportant de nombreuses lignes et colonnes.
Je souhaite, lorsqu'une cellule est active, sélectionnée (c'est à diresans devoir double-cliquer dans la cellule), que les bordures de la ligne et de la colonne associées soient modifiées.
J'ai utilisé une macro mais :
- plus de ctrl Z possible
- plantage quand je sélectionne plusieurs onglets pour apporter des modifications simultanées aux onglets (très handicapant dans mon cas).
Suite à des recherches j'ai essayé d'utiliser la mfc mais cela ne fonctionne pas bien : au mieux je dois rentrer dans la cellule (double clic) pour que la mfc fonctionne : je ne dois pas utiliser les bonnes formules.
Merci de votre aide.
Bonjour,
A ma connaissance sans vba je ne pense pas qu'on puisse le faire.
Voici un code que j'utilise sur certains projets qui fonctionne bien. A placer dans une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iC As Long, iC1 As Long
Dim iR As Long, iR1 As Long
If Not Intersect(ActiveCell, [A2:J1000]) Is Nothing Then
Unprotect
iR = Range("A" & Rows.Count).End(xlUp).Offset(1).Row
Application.ScreenUpdating = False
With Range("A2:J1000")
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
' ligne trait
iR1 = ActiveCell.Row
With Range("A" & iR1 & ":J" & iR1)
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).ColorIndex = 3 ' ROUGE
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeTop).ColorIndex = 3 ' ROUGE
End With
Range(Cells(ActiveCell.Row, "A"), Cells(ActiveCell.Row, "J")).Interior.Color = RGB(190, 205, 240)
ActiveCell.Interior.ColorIndex = 6
' colonne trait
iC1 = ActiveCell.Column
With Range(Cells(2, iC1).Address & ":" & Cells(iR, iC1).Address)
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeLeft).ColorIndex = 3 ' ROUGE
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeRight).ColorIndex = 3 ' ROUGE
End With
Protect
End If
End SubA toi de l'adapter...
Cordialement
Bonsoir à tous,
Un autre essai (via VBA). Le code est dans le module de ThisWorlbook.
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
SurLignerLigCol Sh
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
SurLignerLigCol Sh
End Sub
Sub SurLignerLigCol(xsh As Worksheet)
Dim y As Range
With xsh
Application.ScreenUpdating = False
.Cells.Rows(1).Interior.ColorIndex = xlColorIndexNone
.Cells.Columns(1).Interior.ColorIndex = xlColorIndexNone
On Error Resume Next
For Each y In Selection.Areas
y.Rows.Resize(1).Offset(1 - y.Row).Interior.Color = RGB(0, 255, 0)
y.Columns.Resize(, 1).Offset(, 1 - y.Column).Interior.Color = RGB(0, 255, 0)
Next y
End With
End Sub