Excel - Cargar 3 ListBox desde una Hoja con método FIND

 
Vista:
sin imagen de perfil
Val: 257
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Juan (184 intervenciones) el 06/11/2022 07:42:22
Hola, necesito que me ayuden con este planteamiento. Necesito cargar desde una Hoja de Excel a tres ListBox todos los registros de Cuenta seleccionada de la Hoja Resumen Crat-Cli (Columna A) que encuentre en la Hoja CartolaCli (Cuenta, Razón Social, Vencimiento, Monto o Importe). Estoy usando el método FIND para una búsqueda más dinámica.
En cada ListBox se deben cargar por Clase de Documento:

Factura (DF)

Nota Crédito (DN)

Transacción (DZ-AB-DD)

En el caso de Factura están separado la suma de su importe de acuerdo a la fecha de vencimiento.
-Si la deuda ya venció mayor a 30 días.
-Si la deuda ya venció entre 1 y 30 días.

Me sale error al cargar los registros.
Cuenta-a-Buscar-en-otra-Hoja
Hoja-a-buscar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Antoni Masana (2481 intervenciones) el 07/11/2022 16:45:00
Dices que te sale un error al cargar los registros. ¿Al hacer que cosa? porque yo no sé lo que es cargar los registros

Por otro lado me sale un error en la hoja Resumen Cart-Cli en esta línea:

1
Busco = Intersect(Target, Range("A:A"))

Para que no de error primero debes poner:

1
Busco = Application.Intersect(Target, Range("A:A"))

Y segundo validar antes de llegar a esta línea que Target tiene un valor correcto que no se cual es.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 257
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Juan (184 intervenciones) el 07/11/2022 17:46:04
Hola Antoni.
Con Cargar registros me refiero:
En la Hoja Resumen Cart-Cli al seleccionar celda A4 se active el formulario, al seleccionar un registro en la columna ("A5:A") busque en la Hoja Cartola Cli y si lo encuentra traiga los registros y cargue 3 ListBox (Vencimiento, Monto), 2 Labels (Cuenta y Nombre Cliente), y haga los cálculos de los montos y los resultados cargue los TextBox.

En ListBox FACTURA solo se muestran registros de la Hoja Cartola Cli que cumplen las siguientes condiciones : Clase de Documento (DF), Comite "0 a 30" y Dias atrasados mayor a 30.

En ListBox NOTA DE CREDITO se muestran todos los registros con clase de documento (DN)

En LisBox TRANSACCION se muestran todos los registros con clase de documento (DZ,DD y AB)


Busco = Application.Intersect(Target, Range("A:A")) 'Debe tener el valor seleccionado en la columna ("A5:A") Hoja Resumen Cart-Cli
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 257
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Juan (184 intervenciones) el 08/11/2022 13:39:14
Estuve analizando el código y me doy cuenta que le falta un bucle. Que tipo de bucle seria el mas rápido? como podría adaptar ese bucle al código?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 257
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Juan (184 intervenciones) el 08/11/2022 19:55:19
Gracias Antoni, lo voy a probar bien como se como se comporta con la mayoría de las "cuentas"
Consulta, le colocaste una HOJA1, según el código no se refiere a esa HOJA1 en ninguna linea. Puedo eliminar esa HOJA1?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Antoni Masana (2481 intervenciones) el 08/11/2022 22:30:50
Era para saber que número era cada columna, no tiene ninguna utilidad.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 257
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Juan (184 intervenciones) el 09/11/2022 01:15:15
Antoni, hasta ahora está funcionando ok, lo voy a seguir probando.
Estoy tratando de complementar la carga de otro ListBox Detalle_Factura en otro UserForm2 que recibe registro a través del ListBox Fact1 del UserForm1 .
Seleccionar con doble clik un Item vencimiento en ListBox Fact1 y busque en la Hoja Cartola Cli y copie todos los registros con Clase de Documento DF que tengan esa fecha vencimiento y pegue los registros en ListBox Detalle_Deudor (Cta Cliente-ClaseDoc-Referencia-Monto-Vencimiento-Texto)

Carga-de-ListBox-Factura1-al-ListBox-Detalle_Deudor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 257
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Juan (184 intervenciones) el 12/11/2022 10:41:39
He actualizado el código, pero hay algún detalle que no me permite conseguir el objetivo.

Necesito seleccionar con doble click un ítem (Vencimiento y Monto) del UserForm1.ListBox Fact1 y buscar en una Hoja Cartola Cli y si lo encuentra llenar de registros a otro UserForm2.ListBox Detalle_Deudor con condición adicional que correspondan solo a Clase de Documento DF (Cta Cliente-ClaseDoc-Referencia-Monto-Vencimiento-Texto). Adjunto Archivo.

Para activar el Userform1 con registros: Click en celda ("Cuenta") de la Hoja Resumen Cart-Cli. Después cargar Userform1 seleccionando cualquiera de los registros de Cuenta en la columna (A5:A184).

CODIGO ACTUALIZADO

Private Sub Fact1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim I, Z As Integer
Dim CartolaCli As Worksheet
Set CartolaCli = Sheets("Cartola Cli")
Dim filas As Long
filas = CartolaCli.Range("Q1000000").End(xlUp).Row
UserForm2.Show
With UserForm2.Detalle_Deudor
.Clear
For Z = 0 To UserForm1.Fact1.ListCount - 1 'Este bucle pasa todos los item seleccionados
If UserForm1.Fact1.Selected(Z) = True Then
If filas > 1 Then
For I = 2 To filas
Buscar = CartolaCli.Range("I" & I)
If Buscar = UserForm1.Fact1.Selected(Z) Then
.AddItem
.List(.ListCount - 1, 0) = CartolaCli.Range("Q" & I)
.List(.ListCount - 1, 1) = CartolaCli.Range("C" & I)
.List(.ListCount - 1, 2) = CartolaCli.Range("D" & I)
.List(.ListCount - 1, 3) = CartolaCli.Range("J" & I)
.List(.ListCount - 1, 4) = CartolaCli.Range("I" & I)
.List(.ListCount - 1, 5) = CartolaCli.Range("K" & I)
End If
Next
UserForm2.Total_Reg.Caption = .ListCount
End If
End If
Next
End With
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 257
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Juan (184 intervenciones) el 14/11/2022 14:58:22
Después de tanto probar y probar encontré la solución. El problema era que la fecha en ListBox Userform1.Fact1 al momento de buscar en la Hoja Cartola Cli lo hacía en formato “mm/dd/yyyy”, me explico; por ejemplo, si en UserForm.Fact1 se visualizaba la Fecha 14/11/2022 cuando iba a buscar a la Hoja lo hacía como 11/14/2022 por tanto nunca encontraba el registro. Con el Cdate se solucionó el problema.

Private Sub Fact1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim I, Z As Integer
Dim CartolaCli As Worksheet
Set CartolaCli = Sheets("Cartola Cli")
Dim filas As Long
filas = CartolaCli.Range("Q1000000").End(xlUp).Row
UserForm2.Show
With UserForm2.Detalle_Deudor
.Clear
If filas > 1 Then
For I = 2 To filas
Buscar1 = CartolaCli.Range("I" & I)
Buscar2 = CartolaCli.Range("C" & I)
Buscar3 = CartolaCli.Range("Q" & I)
If CDate(UserForm1.Fact1.List(UserForm1.Fact1.ListIndex, 0)) = Buscar1 And _
UCase(Buscar2) = "DF" And CartolaCli.Range("Q" & I) = UserForm1.Cuenta.Caption Then
.AddItem
.List(.ListCount - 1, 0) = CartolaCli.Range("Q" & I)
.List(.ListCount - 1, 1) = CartolaCli.Range("C" & I)
.List(.ListCount - 1, 2) = CartolaCli.Range("D" & I)
.List(.ListCount - 1, 3) = Format(CartolaCli.Range("J" & I), "##,##0")
.List(.ListCount - 1, 4) = CartolaCli.Range("I" & I)
.List(.ListCount - 1, 5) = CartolaCli.Range("K" & I)
UserForm2.Cuenta_Cli.Caption = UserForm1.Cuenta.Caption
UserForm2.RazonSocial_Cli.Caption = UserForm1.RazonSocial.Caption
End If
Next
UserForm2.Total_Reg.Caption = .ListCount
End If
End With
End Sub


Tema: ¡Solucionado!

solucion-final
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 257
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cargar 3 ListBox desde una Hoja con método FIND

Publicado por Juan (184 intervenciones) el 14/11/2022 15:07:00
Después de tanto probar y probar encontré la solución. El problema era que la fecha en ListBox Userform1.Fact1 al momento de buscar en la Hoja Cartola Cli lo hacía en formato “mm/dd/yyyy”, me explico; por ejemplo, si en UserForm.Fact1 se visualizaba la Fecha 14/11/2022 cuando iba a buscar a la Hoja lo hacía como 11/14/2022 por tanto nunca encontraba el registro. Con el Cdate se solucionó el problema.

Private Sub Fact1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim I, Z As Integer
Dim CartolaCli As Worksheet
Set CartolaCli = Sheets("Cartola Cli")
Dim filas As Long
filas = CartolaCli.Range("Q1000000").End(xlUp).Row
UserForm2.Show
With UserForm2.Detalle_Deudor
.Clear
If filas > 1 Then
For I = 2 To filas
Buscar1 = CartolaCli.Range("I" & I)
Buscar2 = CartolaCli.Range("C" & I)
Buscar3 = CartolaCli.Range("Q" & I)
If CDate(UserForm1.Fact1.List(UserForm1.Fact1.ListIndex, 0)) = Buscar1 And _
UCase(Buscar2) = "DF" And CartolaCli.Range("Q" & I) = UserForm1.Cuenta.Caption Then
.AddItem
.List(.ListCount - 1, 0) = CartolaCli.Range("Q" & I)
.List(.ListCount - 1, 1) = CartolaCli.Range("C" & I)
.List(.ListCount - 1, 2) = CartolaCli.Range("D" & I)
.List(.ListCount - 1, 3) = Format(CartolaCli.Range("J" & I), "##,##0")
.List(.ListCount - 1, 4) = CartolaCli.Range("I" & I)
.List(.ListCount - 1, 5) = CartolaCli.Range("K" & I)
UserForm2.Cuenta_Cli.Caption = UserForm1.Cuenta.Caption
UserForm2.RazonSocial_Cli.Caption = UserForm1.RazonSocial.Caption
End If
Next
UserForm2.Total_Reg.Caption = .ListCount
End If
End With
End Sub


Tema: ¡Solucionado!


solucion-final
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar