Varios datos de vuelta!

18/05/2008 - 18:22 por ElProfe | Informe spam
Amigos del grupo:

En esta oportunidad me asiste una curiosidad para Excel 2003 y es la
siguinete:

-En la Hoja1 tengo una base de datos de la cartera (deudores) de un
negocio
(Fecha, IDdeudor, Nombredeudor, Documento, Concepto, Débitos y
Créditos)

-En la Hoja2 debo hacer consultas por cliente, digitando únicamente (o
seleccionando) el IDdeudor

Como consigo que usando Las funciones o ActiveX de Excel y con solo
digitar el IDdeudor, en la hoja de consultas se muestren verticalmente
todas las transacciones de ese cliente? (facturas, pagos, notas débito
y crédito)

Hasta ahora he logrado que solo se muestre el primer registro
encontrado en la base de datos.

Gracias por sus ideas y por su ayuda

Cordialmente saludo,

ElProfe

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
18/05/2008 - 20:57 | Informe spam
hola, Manuel !

-En la Hoja1 tengo una base de datos de la cartera (deudores) de un negocio
(Fecha, IDdeudor, Nombredeudor, Documento, Concepto, Debitos y Creditos)

-En la Hoja2 debo hacer consultas por cliente, digitando unicamente (o seleccionando) el IDdeudor

Como consigo que usando Las funciones o ActiveX de Excel y con solo digitar el IDdeudor
en la hoja de consultas se muestren verticalmente todas las transacciones de ese cliente?
(facturas, pagos, notas debito y credito) (...)



-> usa los filtros avanzados por codigo para "refrescar" los datos que consultes en cada ocasion (p.e.)
suponiendo que en tu hoja1 los titulos estan en el rango [A1:G1] (fecha, iddeudor, etc.)
por lo que tus registros inician en la fila 2

-> en la hoja2:
1) copia en la celda A1 el mismo titulo que tienes para iddeudor (o el campo que requieras para filtrar
2) en la celda A2 vas a "solicitar" la id que requieras consultar
3) copia/pega las siguientes lineas => en el modulo de codigo de esta hoja2:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" Then Exit Sub
Worksheets("hoja1").Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("a1:a2"), _
CopyToRange:=Range("a4:g4"), _
Unique:=False
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Palel
19/05/2008 - 19:52 | Informe spam
fantástico, Héctor.

____________________________________________________________________________________
Saludos, Palel - [MVP Outlook]
http://www.infonegocio.com/luzylar/informatica.htm
ADD-IN para Outlook: http://www.infonegocio.com/luzylar/...utlook.htm
®El Rincón del Navegante - http://www.luzylar.com

*** Consulta en el Foro específico:
Outlook EXPRESS news://msnews.microsoft.com/microso...ookexpress
OUTLOOK de OFFICE news://msnews.microsoft.com/microso...es.outlook
OUTLOOK con EXCHANGE news://msnews.microsoft.com/microso...s.exchange
... hay más, busca el que necesites.
_________________________________________________________________________________________
"Héctor Miguel" escribió en el mensaje de noticias
news:%
hola, Manuel !

-En la Hoja1 tengo una base de datos de la cartera (deudores) de un negocio
(Fecha, IDdeudor, Nombredeudor, Documento, Concepto, Debitos y Creditos)

-En la Hoja2 debo hacer consultas por cliente, digitando unicamente (o seleccionando) el IDdeudor

Como consigo que usando Las funciones o ActiveX de Excel y con solo digitar el IDdeudor
en la hoja de consultas se muestren verticalmente todas las transacciones de ese cliente?
(facturas, pagos, notas debito y credito) (...)



-> usa los filtros avanzados por codigo para "refrescar" los datos que consultes en cada ocasion
(p.e.)
suponiendo que en tu hoja1 los titulos estan en el rango [A1:G1] (fecha, iddeudor, etc.)
por lo que tus registros inician en la fila 2

-> en la hoja2:
1) copia en la celda A1 el mismo titulo que tienes para iddeudor (o el campo que requieras para
filtrar
2) en la celda A2 vas a "solicitar" la id que requieras consultar
3) copia/pega las siguientes lineas => en el modulo de codigo de esta hoja2:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" Then Exit Sub
Worksheets("hoja1").Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("a1:a2"), _
CopyToRange:=Range("a4:g4"), _
Unique:=False
End Sub

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

Respuesta Responder a este mensaje
#3 Palel
19/05/2008 - 20:56 | Informe spam
una "pega"...
si la hoja1 la tenemos con filtros a la hora de aplicar el código en la hoja2... los quita :-(

Naturalmente que lo que se quiere conseguir se puede hallar con dichos filtros pero le había visto
la utilidad y "me lo había apropiado" para un libro de PAGARES: mucho mejor (más rápido) que tener
que andar modificando los tipos de filtro.

Dicho libro, en su hoja de datos (hoja1) está filtrado para ver sólo los que faltan de pagar
(columna D "estado" = vacías).
Pero me he encontrado con ese inconveniente: hay que volver a Datos - Filtro en la hoja1 y
especificarlos (se acabó la rapidez)
¿Hay solución para poder conservar los filtros?

Saludos, Palel


"Héctor Miguel" escribió en el mensaje de noticias
news:%
hola, Manuel !

-En la Hoja1 tengo una base de datos de la cartera (deudores) de un negocio
(Fecha, IDdeudor, Nombredeudor, Documento, Concepto, Debitos y Creditos)

-En la Hoja2 debo hacer consultas por cliente, digitando unicamente (o seleccionando) el
IDdeudor

Como consigo que usando Las funciones o ActiveX de Excel y con solo digitar el IDdeudor
en la hoja de consultas se muestren verticalmente todas las transacciones de ese cliente?
(facturas, pagos, notas debito y credito) (...)



-> usa los filtros avanzados por codigo para "refrescar" los datos que consultes en cada ocasion
(p.e.)
suponiendo que en tu hoja1 los titulos estan en el rango [A1:G1] (fecha, iddeudor, etc.)
por lo que tus registros inician en la fila 2

-> en la hoja2:
1) copia en la celda A1 el mismo titulo que tienes para iddeudor (o el campo que requieras
para filtrar
2) en la celda A2 vas a "solicitar" la id que requieras consultar
3) copia/pega las siguientes lineas => en el modulo de codigo de esta hoja2:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" Then Exit Sub
Worksheets("hoja1").Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("a1:a2"), _
CopyToRange:=Range("a4:g4"), _
Unique:=False
End Sub

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





Respuesta Responder a este mensaje
#4 Héctor Miguel
19/05/2008 - 21:00 | Informe spam
(tks, Pilar) :D
Respuesta Responder a este mensaje
#5 Héctor Miguel
19/05/2008 - 21:18 | Informe spam
hola, Pilar !

una "pega"... si la hoja1 la tenemos con filtros a la hora de aplicar el código en la hoja2... los quita :-(
Naturalmente que lo que se quiere conseguir se puede hallar con dichos filtros pero le había visto la utilidad
y "me lo había apropiado" para un libro de PAGARES: mucho mejor (mas rapido) que tener que andar modificando los tipos de filtro.
Dicho libro, en su hoja de datos (hoja1) esta filtrado para ver solo los que faltan de pagar (columna D "estado" = vacias).
Pero me he encontrado con ese inconveniente: hay que volver a Datos - Filtro en la hoja1 y especificarlos (se acabo la rapidez)
Hay solucion para poder conservar los filtros?



siguiendo con los datos del supuesto para OP, para "reponer" (si existen) los autofiltros en la hoja1...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DejarAutoFiltros As Boolean
If Target.Address <> "$A$2" Then Exit Sub
With Worksheets("hoja1").Range("a1")
DejarAutoFiltros = .Parent.AutoFilterMode
.CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("a1:a2"), _
CopyToRange:=Range("a4:g4"), _
Unique:=False
If DejarAutoFiltros Then .AutoFilter
End With
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida