ocultar filas en una hoja segun condicion ingresada en otra hoja

23/03/2009 - 14:53 por martinezpincheira | Informe spam
hola y gracias por leer esto, tengo la siguiente situacion que espero
que me ayuden a resolver:

necesito ocultar cierto numero de filas en una hoja de excel
dependiendo si en un casilla de otra hoja se ingresa el valor SI/NO
que lo elijo de una lista.

les agradeceria que me orientaran un poco con el codigo que debo usar
he estado adaptando algo que he encontrado en el foro pero siempre se
refiere a condiciones que estan en la misma hoja y no consigo lograr
lo que quiero.

muchas gracias
javier martinez

Preguntas similare

Leer las respuestas

#6 martinezpincheira
24/03/2009 - 17:02 | Informe spam
On 24 mar, 11:12, wrote:
On 23 mar, 22:51, "Héctor Miguel"
wrote:



> hola, !

> 1) prueba con este codigo en el modulo de la "hoja1":

> Private Sub Worksheet_Change(ByVal Target As Range)
>   If Intersect(Target, Range("ai277")) Is Nothing Then Exit Sub
>   Worksheets("hoja1").Range("a278:a313").EntireRow.Hidden = LCase(Range("ai277")) = "no"
> End Sub

> 2) esta parte no es lo suficiente clara (p.e.)

>     a) en cual hoja esta la celda "J299" ???

>     b) no te saldria mas barato usar una formula directamente en esa celda en lugar del codigo ?
>         (p.e.) =si(hoja1!ai277="no";100;redondear(100-(((f297/(f294*1000))*link!i127)*100);2))

>     c) ademas, si quieres depositar una formula por codigo...
>         lo "normal" es la propiedad: <rango>.Formula = "=aqui la formula EN INGLES y coma como separador"
>         o si conoces (exactamente) la configuracion regional del equipo donde se correra tu codigo...
>         puedes usar la propiedad: -> <rango>.FormulaLocal = "=aqui la formula el idioma instalado y ""su"" separador"

> si cualquier duda (o informacion adicional)... comentas ?
> saludos,
> hector.

> __ 1 __

> > las filas a ocultar de la hoja2 son en este caso de la a278 a la a313... si en la hoja1 se pone "No" en la casilla ai277

> __ 2 __

> > y tengo esta otra situacion: en caso de ser "No" el valor de la condicion ai277 el valor de la celda j299 debe ser 100
> > y en caso contrario debe ser "=REDONDEAR(100-(((F297/(F294*1000))*hoja1!I127)*100);2)" y para esto uso el siguiente codigo:

> > Sub cambia_valor_perdidas()
> > Dim celda_condicion As Range
> > Dim celda_destino As Range
> > Set celda_destino = Range("j299")
> > Set celda_condicion = Range("ai277")
> > If celda_condicion.Value = "No" Then
> >    celda_destino.Value = "100" Else_
> >    celda_destino.Value = "=REDONDEAR(100-(((F297/(F294*1000))*Link!I127)*100);2)"
> > End If
> > End Sub

Impecable!!!

muchas gracias, sobre todo por hacerme ver que era mucho mas facil
poner la formula en la celda, ya tenia la mente cerrada buscando
solucionar el otro tema.



me surge otra pregunta:

como puedo hacerlo para ocultar dos grupos de filas segun dos
condiciones distintas, con esto codigo lo hace pero el cambio del
segundo caso ocurre solo cuanse actualiza la primera condicion (lo que
es obvio) pero como lo hago para que las dos acciones sean
independientes

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("k42")) Is Nothing Then Exit Sub
Worksheets("hoja1").Range("a278:a313").EntireRow.Hidden = LCase(Range
("k42")) = "no"
Worksheets("hoja1").Range("a314:a323").EntireRow.Hidden = LCase(Range
("k42")) = "si"

Worksheets("hoja1").Range("a324:a364").EntireRow.Hidden = LCase(Range
("p42")) = "no"

End Sub
Respuesta Responder a este mensaje
#7 Héctor Miguel
25/03/2009 - 02:16 | Informe spam
hola, !

como puedo hacerlo para ocultar dos grupos de filas segun dos condiciones distintas
con esto codigo lo hace pero el cambio del segundo caso ocurre solo cuanse actualiza la primera condicion
(lo que es obvio) pero como lo hago para que las dos acciones sean independientes

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("k42")) Is Nothing Then Exit Sub
Worksheets("hoja1").Range("a278:a313").EntireRow.Hidden = LCase(Range("k42")) = "no"
Worksheets("hoja1").Range("a314:a323").EntireRow.Hidden = LCase(Range("k42")) = "si"
Worksheets("hoja1").Range("a324:a364").EntireRow.Hidden = LCase(Range("p42")) = "no"
End Sub



(para los dos casos que expones prueba con algo +/- como lo siguiente (hay otras variantes, pero... ???)

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("k42")) Is Nothing Then Goto CheckP42
Worksheets("hoja1").Range("a278:a313").EntireRow.Hidden = LCase(Range("k42")) = "no"
Worksheets("hoja1").Range("a314:a323").EntireRow.Hidden = LCase(Range("k42")) = "si"
CheckP42:
If Intersect(Target, Range("p42")) Is Nothing Then Exit Sub
Worksheets("hoja1").Range("a324:a364").EntireRow.Hidden = LCase(Range("p42")) = "no"
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#8 martinezpincheira
25/03/2009 - 14:50 | Informe spam
On 24 mar, 21:16, "Héctor Miguel"
wrote:
hola, !

> como puedo hacerlo para ocultar dos grupos de filas segun dos condiciones distintas
> con esto codigo lo hace pero el cambio del segundo caso ocurre solo cuanse actualiza la primera condicion
> (lo que es obvio) pero como lo hago para que las dos acciones sean independientes

> Private Sub Worksheet_Change(ByVal Target As Range)
>   If Intersect(Target, Range("k42")) Is Nothing Then Exit Sub
>   Worksheets("hoja1").Range("a278:a313").EntireRow.Hidden = LCase(Range("k42")) = "no"
>   Worksheets("hoja1").Range("a314:a323").EntireRow.Hidden = LCase(Range("k42")) = "si"
>   Worksheets("hoja1").Range("a324:a364").EntireRow.Hidden = LCase(Range("p42")) = "no"
> End Sub

(para los dos casos que expones prueba con algo +/- como lo siguiente (hay otras variantes, pero... ???)

Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("k42")) Is Nothing Then Goto CheckP42
  Worksheets("hoja1").Range("a278:a313").EntireRow.Hidden = LCase(Range("k42")) = "no"
  Worksheets("hoja1").Range("a314:a323").EntireRow.Hidden = LCase(Range("k42")) = "si"
CheckP42:
  If Intersect(Target, Range("p42")) Is Nothing Then Exit Sub
  Worksheets("hoja1").Range("a324:a364").EntireRow.Hidden = LCase(Range("p42")) = "no"
End Sub

saludos,
hector.



Gracias Maestro, funciona perfecto.
saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida