ayuda por favor

14/04/2005 - 15:56 por Dorian | Informe spam
hola gente !!

hay alguien que me pueda dar una mano con esto ?\ me lo están pidiendo en mi
trabajo y la verdad que no tengo ni idea de por donde comenzar, además de
muy pocos conocimientos de excel a este nivel :((

desde ya muchas gracias por el tiempo que le dediquen a mi mensaje

dorian+






hola grupo !!

tengo la siguiente rutina que utlizo para ocultar las filas que en
determinado rango tienen valor cero\ (la rutina se ejecuta al activar la
hoja del libro)

Dim Celda As Range, Temp As Variant
For Each Celda In Range("a14:a33")
Temp = Celda
If IsError(Temp) Then
Celda.EntireRow.Hidden = True
ElseIf Celda <> 0 Then
Celda.EntireRow.Hidden = False
Else: Celda.EntireRow.Hidden = True
End If
Next

mi problema, son dos:

tengo un libro con dos hojas, en la primera se encuentran las facturas
pendientes de rendicion con sus detalles (ordenadas por nº de factura), la
segunda hoja es un formulario que se utiliza para rendir a la casa central
las facturas que ya han sido cobradas\ en el rango a14:a33, de esta
planilla, ingreso el nº de comprobante y automaticamente "trae" los datos
de las facturas\

1º) lo que tendría que hacer es ocultar las filas del rango a14:a33 de la
planilla rendición que tienen el valor 0 (cero) en la columna a (en ese
mismo rango\ pero obviamente si siempre tendria que haber una fila sin
ocultar, pues si se ocultan todas no es posible ingresar el numero de
factura\ entonces, x ej. al principio NO deberia estar oculta la fila 14,
pero si el resto, al introducir un valor en la celda a14, debria mostrarse
la fila 15 (para eventualmente poder introducir un valor en la cela a15);
una vez que se ingresa un valor en la fila a15 al darle enter deberia
mostrarse la fila 16... y así sucesivamente hasta la 33 que es la última del
rango

2º) al imprimir esta hoja debería borrar las filas de la hoja facturas que
coinciden con los numeros de facturas ingresados...

espero haber sido claro para que alguien me pueda ayudar con esto\

desde ya muchas gracias por la ayuda que me puedan dar .

un abrazo a todos

dorian+

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
23/04/2005 - 04:18 | Informe spam
hola, Dorian !

... seria una buena idea, como dices... un boton para ejecutar el procedimiento
... que parte del codigo... es el que debo utilizar ? lo guardo como una macro ?


___
=> te paso unos ejemplos al final ;)

... volver a dejar seleccionado el rango a14:b33 para que el usuario solo se "mueva por estas celdas


___
=> otra forma pudiera ser si 'aprovechas' la propiedad 'ScrollArea' [en el evento '_open']

... un problema que se me presento... cuando trate de ejecutar el codigo
... la hoja "rendicion" (hoja1) esta protegida, para evitar que el usuario pueda [...]
... cuando ingreso un valor... y tiene que mostrarse la fila siguiente me da error [...]


___
=> se puede solucionar con otra instruccion al abrir el libro que 'permita' el uso de macros en hojas protegidas ;)

... dejar el cursor en la primer casilla libre de la columna a de la planillas facturas ?
... al eliminar las filas el cursor queda tantas casillas abajo... como filas haya eliminado


___
=> va incluido en la nueva 'propuesta' ;)

si cualquier duda... comentas?
saludos,
hector.
=1.- el modulo y el codigo del evento de la hoja1 [o rendicion] permanece sin cambios ;)
2.- con el codigo en el evento '_open' ->del libro<- se resuelve lo de las macros en la hoja protegida...
y tambien lo del area por la que el usuario 'se puede' desplazar por la hoja protegida.
en el modulo de codigo del libro [ThisWorkbool] ==Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect "aBc", True, True, True, True
.ScrollArea = "a14:a33"
End With
End Sub
2.- el codigo que podrias 'asignar' como macro a un objeto/boton de comando/figura/etc.
en un moudlo de codigo 'normal' ==Option Private Module
Sub Imprime_y_Prepara()
If Application.CountA(Range("a14:a33")) = 0 _
Then MsgBox "No hay datos para imprimir...": Exit Sub
ActiveSheet.PrintOut Copies:=1
Dim Celda As Range, Remitidas As Range
On Error Resume Next
With Worksheets("Hoja2").Columns("a:a")
For Each Celda In Range("a14:a33")
If Not IsEmpty(Celda) Then
If Remitidas Is Nothing Then _
Set Remitidas = .Cells.Find(Celda)
Set Remitidas = Union(Remitidas, .Cells.Find(Celda))
End If
Next
Range("a14:a33").ClearContents
Range("a14").Select
Remitidas.EntireRow.Delete
.Parent.Activate
Range("a65536").End(xlUp).Offset(1).Select
End With
Set Remitidas = Nothing
End Sub

notas:
-> deberas 'suspender' la primer linea [option private modulo] para poder asignar la macro al objeto
[o copiar su nombre y pegarlo en el dialogo al asignarla al objeto]
-> no esta 'contemplado' prevenir/corregir 'otro tipo de errores' [como el que se borren datos en a14:a33]
[ya comentaras donde 'les va doliendo' o que adaptaciones pudieran ser requeridas] :D
Respuesta Responder a este mensaje
#7 Dorian
25/04/2005 - 20:46 | Informe spam
hola hector !!!

bueno, antes de comenzar muchas gracias por tu tiempo, de verdad, tu ayuda
es inestimable pues me da soluciones para aplicar a otras planillas con las
que trabajo :)

con referencia a los cambios propuestos:

a) he agregado un botón y a él le he asignado la macro para imprimir que me
pasas al final; funciona OK ;)
b) he modificado en el siguiente código:

With Worksheets("Hoja1")
.Protect "aBc", True, True, True, True
.ScrollArea = "a14:a33"
End With

la línea .ScrollArea = "a14:a33" por ScrollArea = "a14:b33" pues lo sino lo
que sucede es que con cada entrada el cursor "vuelve" a "a14"... con ese
cambio se va desplazando por las celdas "a14:b33" pues como te había
comentado en la columna b los usuarios puede llegar a utilizarla (no
necesariamente) para un numero interno de control\ por supuesto la password
tambien es otra ;)

muy interesante el hecho de que no se puedan "seleccionar/elegir" cualquier
otra celda que no este en el rango indicado\ muchas gracias, leeré mas
detenidamente la ayuda de la instruccion protect para los detalles, pero sin
duda me servirá para otros desarrollos ;)

mmm en la planilla de rendición (hoja1) tembien hay tres celdas a50, a51, a
52 (son celdas combinadas a50:i50; a51:i51; a52:i52 respectivamente) que
deberían poder seleccionarse, pues son para que el usuario escriba si le es
necesario alguna observación...

con respecto a tus notas:

a que te refieres con que se borren datos en a14:a33 ? te refieres a la hoja
de facturas? o a la de rendición?... claro que con el uso y un poco de
imaginación se podria "hermosear" (aunque ya es una muy linda planilla
gracias a ti :))) un poco mas...

ejemplo:
a) que salga un mensaje si el usurio tipea en la hoja rendición un número de
factura que no existe (de la misma forma que lo hace si intenta imprimir la
planilla sin datos (gacias por esa línea de código))
b) formato condicional para resaltar las facturas mas atrasadas por
ejemplo... se como hacerlo a traves del menú, lo uso en otras planillas,
pero no a través de código :(...\aquí una pregunta: si "selecciono" (en la
hoja de las facturas) las celdas a6:i65535 y le doy el formato condicional
que me interesa este queda para las celdas que se "agregan" cuando se
eliminan las filas de esa planilla ? (uff, hice lio? bueno, sino se entendió
trato de explicarlo de otra forma :)


ahh !! otra cosilla: el libro SIEMPRE (independientemente desde donde se
hubieran guardado los cambios) abre en la hoja de facturas... para ello
utilizo: Worksheets("Facturas").Activate en el evento open del libro... lo
que haría falta es que una vez que imprimió y actualizó la hoja facturas,
"vuelva" a la hoja rendición, por si el usuario necesita seguir rindiendo
comprobantes (hasta ahora se queda en la hoja1 (facturas))\ he intentado
colocar Worksheets("Rendicion").Activate al final del codigo que me pasaste
pero no se activa y no se a que se puede deber esto :(((

bueno héctor, creo que ya por hoy me exedí :(( prometo que es la última
consulta . (o la anteúltima ;)

saludos y como siempre muchas gracias por tu ayuda y sobretodo tiempo

dorian+
Respuesta Responder a este mensaje
#8 Dorian
02/05/2005 - 15:43 | Informe spam
hola hector !!!

bueno, antes de comenzar muchas gracias por tu tiempo, de verdad, tu ayuda
es inestimable pues me da soluciones para aplicar a otras planillas con las
que trabajo :)

con referencia a los cambios propuestos:

a) he agregado un botón y a él le he asignado la macro para imprimir que me
pasas al final; funciona OK ;)
b) he modificado en el siguiente código:

With Worksheets("Hoja1")
.Protect "aBc", True, True, True, True
.ScrollArea = "a14:a33"
End With

la línea .ScrollArea = "a14:a33" por ScrollArea = "a14:b33" pues lo sino lo
que sucede es que con cada entrada el cursor "vuelve" a "a14"... con ese
cambio se va desplazando por las celdas "a14:b33" pues como te había
comentado en la columna b los usuarios puede llegar a utilizarla (no
necesariamente) para un numero interno de control\ por supuesto la password
tambien es otra ;)

muy interesante el hecho de que no se puedan "seleccionar/elegir" cualquier
otra celda que no este en el rango indicado\ muchas gracias, leeré mas
detenidamente la ayuda de la instruccion protect para los detalles, pero sin
duda me servirá para otros desarrollos ;)

mmm en la planilla de rendición (hoja1) tembien hay tres celdas a50, a51, a
52 (son celdas combinadas a50:i50; a51:i51; a52:i52 respectivamente) que
deberían poder seleccionarse, pues son para que el usuario escriba si le es
necesario alguna observación...

con respecto a tus notas:

a que te refieres con que se borren datos en a14:a33 ? te refieres a la hoja
de facturas? o a la de rendición?... claro que con el uso y un poco de
imaginación se podria "hermosear" (aunque ya es una muy linda planilla
gracias a ti :))) un poco mas...

ejemplo:
a) que salga un mensaje si el usurio tipea en la hoja rendición un número de
factura que no existe (de la misma forma que lo hace si intenta imprimir la
planilla sin datos (gacias por esa línea de código))
b) formato condicional para resaltar las facturas mas atrasadas por
ejemplo... se como hacerlo a traves del menú, lo uso en otras planillas,
pero no a través de código :(...\aquí una pregunta: si "selecciono" (en la
hoja de las facturas) las celdas a6:i65535 y le doy el formato condicional
que me interesa este queda para las celdas que se "agregan" cuando se
eliminan las filas de esa planilla ? (uff, hice lio? bueno, sino se entendió
trato de explicarlo de otra forma :)


ahh !! otra cosilla: el libro SIEMPRE (independientemente desde donde se
hubieran guardado los cambios) abre en la hoja de facturas... para ello
utilizo: Worksheets("Facturas").Activate en el evento open del libro... lo
que haría falta es que una vez que imprimió y actualizó la hoja facturas,
"vuelva" a la hoja rendición, por si el usuario necesita seguir rindiendo
comprobantes (hasta ahora se queda en la hoja1 (facturas))\ he intentado
colocar Worksheets("Rendicion").Activate al final del codigo que me pasaste
pero no se activa y no se a que se puede deber esto :(((

bueno héctor, creo que ya por hoy me exedí :(( prometo que es la última
consulta . (o la anteúltima ;)

saludos y como siempre muchas gracias por tu ayuda y sobretodo tiempo

dorian+





"Héctor Miguel" escribió en el mensaje
news:
hola, Dorian !

> ... seria una buena idea, como dices... un boton para ejecutar el


procedimiento
> ... que parte del codigo... es el que debo utilizar ? lo guardo como una


macro ?
___
=> te paso unos ejemplos al final ;)

> ... volver a dejar seleccionado el rango a14:b33 para que el usuario


solo se "mueva por estas celdas
___
=> otra forma pudiera ser si 'aprovechas' la propiedad 'ScrollArea' [en el


evento '_open']

> ... un problema que se me presento... cuando trate de ejecutar el codigo
> ... la hoja "rendicion" (hoja1) esta protegida, para evitar que el


usuario pueda [...]
> ... cuando ingreso un valor... y tiene que mostrarse la fila siguiente


me da error [...]
___
=> se puede solucionar con otra instruccion al abrir el libro que


'permita' el uso de macros en hojas protegidas ;)

> ... dejar el cursor en la primer casilla libre de la columna a de la


planillas facturas ?
> ... al eliminar las filas el cursor queda tantas casillas abajo... como


filas haya eliminado
___
=> va incluido en la nueva 'propuesta' ;)

si cualquier duda... comentas?
saludos,
hector.
=> 1.- el modulo y el codigo del evento de la hoja1 [o rendicion] permanece


sin cambios ;)
2.- con el codigo en el evento '_open' ->del libro<- se resuelve lo de las


macros en la hoja protegida...
y tambien lo del area por la que el usuario 'se puede' desplazar por


la hoja protegida.
en el modulo de codigo del libro [ThisWorkbool] ==> Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect "aBc", True, True, True, True
.ScrollArea = "a14:a33"
End With
End Sub
2.- el codigo que podrias 'asignar' como macro a un objeto/boton de


comando/figura/etc.
en un moudlo de codigo 'normal' ==> Option Private Module
Sub Imprime_y_Prepara()
If Application.CountA(Range("a14:a33")) = 0 _
Then MsgBox "No hay datos para imprimir...": Exit Sub
ActiveSheet.PrintOut Copies:=1
Dim Celda As Range, Remitidas As Range
On Error Resume Next
With Worksheets("Hoja2").Columns("a:a")
For Each Celda In Range("a14:a33")
If Not IsEmpty(Celda) Then
If Remitidas Is Nothing Then _
Set Remitidas = .Cells.Find(Celda)
Set Remitidas = Union(Remitidas, .Cells.Find(Celda))
End If
Next
Range("a14:a33").ClearContents
Range("a14").Select
Remitidas.EntireRow.Delete
.Parent.Activate
Range("a65536").End(xlUp).Offset(1).Select
End With
Set Remitidas = Nothing
End Sub

notas:
-> deberas 'suspender' la primer linea [option private modulo] para poder


asignar la macro al objeto
[o copiar su nombre y pegarlo en el dialogo al asignarla al objeto]
-> no esta 'contemplado' prevenir/corregir 'otro tipo de errores' [como el


que se borren datos en a14:a33]
[ya comentaras donde 'les va doliendo' o que adaptaciones pudieran ser


requeridas] :D


Respuesta Responder a este mensaje
#9 Héctor Miguel
03/05/2005 - 04:28 | Informe spam
hola, Dorian !

... gracias... tu ayuda... da soluciones para aplicar a otras planillas
... interesante... que no se puedan "seleccionar/elegir"... celda que no este en el rango indicado [...]



=> gracias a ti [por el 'feed-back'] ;)
y los comentarios 'entre lineas' :)

si cualquier duda... comentas?
saludos,
hectr.
___
... en la planilla de rendición (hoja1)... hay tres celdas a50, a51, a52 (... combinadas a50:i50; a51:i51; a52:i52)
... deberian poder seleccionarse... para que el usuario escriba si le es necesario alguna observacion...



=> [me temo que] la propiedad 'scrollarea' SOLO 'admite' UN rango 'contiguo' :-(
[probablemente] podrias proveer al usuario para dichas 'anotciones' unos 'inputboxes' -?-
[dicho sea 'de paso'... las celdas combinadas 'estorban' -mucho y aun por codigo- para 'navegar' por la hoja] :))
___
a que te refieres con que se borren datos en a14:a33 ? te refieres a la hoja de facturas? o a la de rendición?...
claro que con el uso y un poco de imaginacion se podria "hermosear" (aunque ya es una muy linda planilla...



=> me refiero a que si ya se han 'sembrado' para 'rendir' algunas facturas y el usuario 'decide' eliminar una 'de arribita'...
[supongo que] el proceso de ocultar/mostrar las filas [hoja rendicion] NO la va a 'dejar' tan... linda/hermosa :-(
___
a) que salga un mensaje si el usurio tipea en la hoja rendicion un numero de factura que no existe



=> [para no 'saturar' con codigos el libro]... no preferirias utilizar las reglas de validacion ???
[si requieres ayuda adicional... comentas?]
___
b) formato condicional para resaltar las facturas mas atrasadas
... se como hacerlo a traves del menu... pero no a traves de codigo :(
... si "selecciono"... las celdas a6:i65535 y le doy el formato condicional que me interesa
... este queda para las celdas que se "agregan" cuando se eliminan las filas de esa planilla ?



=> [me parece que] cuado tienes un listado de datos de mas de 5 o 7 'filas llenas'...
excel 'trata de continuar' los formatos [y en ocasiones, las formulas] de las filas 'superiores-consistentes' ;)
podrias 'echarle una manita' desde [menu] herramientas / opciones / [ficha] modificar / [seccion] configuracion
si pones una marca en la caracteristica de: 'extender formatos de lista y formulas' [excel 2000 en adelante]
___
... otra cosilla... que una vez que imprimio y actualizo la hoja facturas, "vuelva" a la hoja rendicion
... he intentado colocar Worksheets("Rendicion").Activate al final del codigo... pero no se activa



=> debiera funcionar... si lo pones
despues de la linea que 'dice': ->Set Remitidas = Nothing<- y antes del ->End Sub<-
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida