Borde de la línea de la celda activa
Resuelto
Remi2236
Mensajes publicados
89
Estado
Miembro
-
Remi2236 Mensajes publicados 89 Estado Miembro -
Remi2236 Mensajes publicados 89 Estado Miembro -
Hola Rémi,
Para lograr un identificador de celda activo que destaque solo dentro de un rango específico (por ejemplo, la columna A de A1:A10 o la columna C de C1:C10) sin afectar otras celdas de la hoja, puedes usar una combinación de formato condicional y una pequeña macro de VBA. A continuación te dejo dos enfoques posibles:
Opción 1: formato condicional basado en la celda activa (sin macros)
- Este enfoque permite resaltar toda la fila dentro de un rango fijo para la columna activa. Sin embargo, Excel no permite directamente usar la celda activa en reglas de formato condicional puro. Una forma práctica es:
1) Selecciona cada columna que quieras cubrir, por ejemplo A1:A10 y C1:C10 por separado.
2) Aplica una regla de formato condicional que compare la fila de la celda con la fila de la celda activa, usando una fórmula que dependa de una celda auxiliar que almacene la fila actual al hacer clic. Esto exige VBA para actualizar esa celda auxiliar en cada selección.
- En resumen: para conseguir comportamiento dinámico por selección sin macros es complejo y limitado.
Opción 2: usar una macro VBA para resaltar la fila completa dentro de un rango específico
- Este enfoque es más directo y flexible. El código siguiente resalta toda la fila dentro del rango de interés (A1:A10 o C1:C10) cuando haces clic en una celda de esa fila, y restaura los títulos cuando seleccionas otra fila. Adaptalo a tus rangos y colores.
Código VBA (colócalo en ThisWorkbook o en la hoja correspondiente):
- Este ejemplo maneja dos rangos: A1:A10 y C1:C10. Ajusta RANGES según tu hoja.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R1 As Range, R2 As Range
Dim rngA As Range, rngC As Range
Dim isInA As Boolean, isInC As Boolean
Dim headerColor As Long, bodyColor As Long
Dim prevShading As Variant
' Define rangos
Set rngA = Me.Range("A1:A10")
Set rngC = Me.Range("C1:C10")
headerColor = RGB(0, 0, 255) ' couleur des titres (bleu)
bodyColor = RGB(240, 248, 255) ' couleur de fond par défaut (ou ajuster)
' Restaurer les couleurs des titres (à adapter si tes titres sont dans d'autres cellules)
Me.Range("A1").Interior.Color = headerColor
Me.Range("A2:A10").Interior.ColorIndex = xlNone ' réinitialise les lignes de titre
Me.Range("C1").Interior.Color = headerColor
Me.Range("C2:C10").Interior.ColorIndex = xlNone
isInA = Not Intersect(Target, rngA) Is Nothing
isInC = Not Intersect(Target, rngC) Is Nothing
If isInA Or isInC Then
Dim r As Long
r = Target.Row
If r < 1 Then Exit Sub
If isInA Then
' Appliquer l'encadrement (ou le fond) sur la ligne complète A1:A10
Me.Rows(r).Interior.Color = RGB(230, 240, 255) ' couleur de surlignage
' Si tu préfères encadrer en utilisant la bordure, il faut boucler les cellules
' dans la ligne et appliquer des bordures.
End If
If isInC Then
Me.Rows(r).Interior.Color = RGB(230, 240, 255)
End If
End If
End Sub
Notes:
- Adaptation nécessaire pour la mise en forme exacte des bordures plutôt que le surlignage interne. Si tu veux un encadrement visible, on peut ajouter des bordures sur chaque cellule de la ligne dans les colonnes A:A10 ou C:C10 selon le cas.
- Pour restaurer l’apparence des titres lorsque tu changes de ligne, on réinitialise les couleurs, et ensuite on applique le surlignage sur la nouvelle ligne sélectionnée.
- Si tu as des titres qui doivent rester bleus indépendamment, précise leurs cellules et ajuste le code pour ne pas les toucher lors du rétablissement.
Exemple alternatif avec bordures (pour encadrer toute la ligne dans la colonne ciblée uniquement):
- Remplace le bloc d’application de couleur par une boucle qui applique des bordures sur les cellules de la colonne ciblée pour la ligne active, et retire les bordures des autres lignes lorsque l’on change de sélection.
Si tu me donnes les détails exacts des colonnes et du style d’encadrement souhaité (bordures complètes, couleur exacte, et si les titres doivent rester bleu dans A1 et C1, etc.), je peux te fournir le code VBA exact prêt à copier-coller et les instructions d’installation pas à pas.
Cordialement,
Assistant
Para lograr un identificador de celda activo que destaque solo dentro de un rango específico (por ejemplo, la columna A de A1:A10 o la columna C de C1:C10) sin afectar otras celdas de la hoja, puedes usar una combinación de formato condicional y una pequeña macro de VBA. A continuación te dejo dos enfoques posibles:
Opción 1: formato condicional basado en la celda activa (sin macros)
- Este enfoque permite resaltar toda la fila dentro de un rango fijo para la columna activa. Sin embargo, Excel no permite directamente usar la celda activa en reglas de formato condicional puro. Una forma práctica es:
1) Selecciona cada columna que quieras cubrir, por ejemplo A1:A10 y C1:C10 por separado.
2) Aplica una regla de formato condicional que compare la fila de la celda con la fila de la celda activa, usando una fórmula que dependa de una celda auxiliar que almacene la fila actual al hacer clic. Esto exige VBA para actualizar esa celda auxiliar en cada selección.
- En resumen: para conseguir comportamiento dinámico por selección sin macros es complejo y limitado.
Opción 2: usar una macro VBA para resaltar la fila completa dentro de un rango específico
- Este enfoque es más directo y flexible. El código siguiente resalta toda la fila dentro del rango de interés (A1:A10 o C1:C10) cuando haces clic en una celda de esa fila, y restaura los títulos cuando seleccionas otra fila. Adaptalo a tus rangos y colores.
Código VBA (colócalo en ThisWorkbook o en la hoja correspondiente):
- Este ejemplo maneja dos rangos: A1:A10 y C1:C10. Ajusta RANGES según tu hoja.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R1 As Range, R2 As Range
Dim rngA As Range, rngC As Range
Dim isInA As Boolean, isInC As Boolean
Dim headerColor As Long, bodyColor As Long
Dim prevShading As Variant
' Define rangos
Set rngA = Me.Range("A1:A10")
Set rngC = Me.Range("C1:C10")
headerColor = RGB(0, 0, 255) ' couleur des titres (bleu)
bodyColor = RGB(240, 248, 255) ' couleur de fond par défaut (ou ajuster)
' Restaurer les couleurs des titres (à adapter si tes titres sont dans d'autres cellules)
Me.Range("A1").Interior.Color = headerColor
Me.Range("A2:A10").Interior.ColorIndex = xlNone ' réinitialise les lignes de titre
Me.Range("C1").Interior.Color = headerColor
Me.Range("C2:C10").Interior.ColorIndex = xlNone
isInA = Not Intersect(Target, rngA) Is Nothing
isInC = Not Intersect(Target, rngC) Is Nothing
If isInA Or isInC Then
Dim r As Long
r = Target.Row
If r < 1 Then Exit Sub
If isInA Then
' Appliquer l'encadrement (ou le fond) sur la ligne complète A1:A10
Me.Rows(r).Interior.Color = RGB(230, 240, 255) ' couleur de surlignage
' Si tu préfères encadrer en utilisant la bordure, il faut boucler les cellules
' dans la ligne et appliquer des bordures.
End If
If isInC Then
Me.Rows(r).Interior.Color = RGB(230, 240, 255)
End If
End If
End Sub
Notes:
- Adaptation nécessaire pour la mise en forme exacte des bordures plutôt que le surlignage interne. Si tu veux un encadrement visible, on peut ajouter des bordures sur chaque cellule de la ligne dans les colonnes A:A10 ou C:C10 selon le cas.
- Pour restaurer l’apparence des titres lorsque tu changes de ligne, on réinitialise les couleurs, et ensuite on applique le surlignage sur la nouvelle ligne sélectionnée.
- Si tu as des titres qui doivent rester bleus indépendamment, précise leurs cellules et ajuste le code pour ne pas les toucher lors du rétablissement.
Exemple alternatif avec bordures (pour encadrer toute la ligne dans la colonne ciblée uniquement):
- Remplace le bloc d’application de couleur par une boucle qui applique des bordures sur les cellules de la colonne ciblée pour la ligne active, et retire les bordures des autres lignes lorsque l’on change de sélection.
Si tu me donnes les détails exacts des colonnes et du style d’encadrement souhaité (bordures complètes, couleur exacte, et si les titres doivent rester bleu dans A1 et C1, etc.), je peux te fournir le code VBA exact prêt à copier-coller et les instructions d’installation pas à pas.
Cordialement,
Assistant
2 respuestas
-
Hola,
No mucho, una simple macro en la hoja de cálculo de la hoja que cree una MFC temporal irá bien.
Podemos o bien subrayar la fila de la celda activa con una línea de color (pero no ambas al mismo tiempo encima) o colorear la fila activa.
Tienes los dos ejemplos aquí: https://mon-partage.fr/f/zrLTk57C/
ALT+F11 para abrir el editor de VBA y ver las macros y modificarlas (hacer doble clic en la hoja correspondiente en el árbol).
Saludos,
Vía
---
“La imaginación es más importante que el conocimiento.” A. Einstein -
Buenas noches
Hablas de líneas y luego das un rango en columna (A1:A10) ¡no está claro!
¿Quieres que cuando selecciones una celda toda la fila (dentro del ancho de la tabla) se ponga temporalmente de color o que se ponga de color toda la columna?
Atentamente
Vía