Saltar al contenido

Mostrar años (desde-hasta) con dos combobox


Enigma25

Recommended Posts

publicado

Buenas tardes

Estimados todos

La presente es para solicitar su apoyo ya que tengi una duda que no se comoresoverla. En estos dias una persona del foro me solicitó que le hiciera una macro para hacer un resumen mensual de ventas (Salidas) para sus resportes y demas. Este lo haria, usando el Archivo de ConTrol de Stock.2.0. Sin embargo no se como volcar la informacion de dos combobox para que estos vayan a la hoja2 en donde se mostrara los años, es decir; 2000,2001,2002,2003 etc

La intencion es que bien por un bucle for o una seleccion, se pegue en la hoja los años para que asi pueda realizar la peracion de suma por los años.

El archivo que les adjunto tiene mas o menos lo que necesito hacer pero hay un problema, que si lo hago con lo que ya tiene, este no mostrarà nada ya que si el bucle parte del combobox1 hasta el combobo2, este tendrà demasiada informacion que no podrà mostrar.

Es por ello que busco otra solucion mas acorde.

Espero puedan entenderme y si necesitan mas informacion con gusto se las harè llegar.

Mis respetos.

Ayuda con Mostrar Años.zipFetching info...

publicado

Hola Enigma25, la verdad no te acabo de entender muy bien lo que quieres es que en la hoja se muestren el rango del combobox1 hasta la del combobox2, osea si:

combobox1=1997

combobox2= 2000

Se mostrara en la hoja los años 1997,1998,1998,1999,2000 es así o no agarro la idea???. Si es así con este código tal vez:

Private Sub CommandButton1_Click()
o = 6
For I = ComboBox1 To ComboBox2
Cells(o, 1) = I
o = o + 1
Next
End Sub[/CODE]

Salu2

publicado

Hola Riddle

En verdad Mil gracias por responder.

Mi inquietud se basa en volcar los años en una hoja de manera que se muestre continuamente, es decir; desde-hasta.

Ejemplo:

1995

1996

1997

1998

Etc

De manera que pueda sumar esos años con un bucle Do While desde la hoja Registro a la hoja en cuestión.

He tratado de hacerlo pero si lo hago de la manera combobox1 to combobox2, este mostrará seguidamente una gran cantidad de números. Por ejemplo si le coloco 1995(combobox1) hasta 2013(combobox2) este mostraría 1996,1997,1998,1999 y asi sucesivamente hasta llegar al 2013, por tanto seria mucha información.

La cuestión es que lo muestre entre años como el ejemplo que puse.

En verdad seria una gran ayuda para también asi ayudar a una persona que me lo pidió en este foro.

Mis respetos hermano!

publicado

Pero, pero...... jejeje acabo de probar tu solución y es la correcta e ideal.

Asi tal cual era como lo esperaba mi hermano.

No había pensado en ir recorriendo la Variable o

o=o+1

Es la ideal mi.

Esta es una de los temas solucionados en tiempo Record!!! Mil gracias Hermano.

Mis respetos.

publicado

Jaja Enigma25, me alegra haber solucionado tu duda, la verdad ya me estaba haciendo "bola" con tu penúltima respuesta ya que me decía a mi mismo "pero eso es exactamente lo que hace mi código!!" jeje

Bueno en fin un saludo mi amigo y suerte con tu proyecto.

publicado

jejeje Si Amigo. Es solo que como yo lo hacia, no era el correcto y no había considerado una variable con la cual ir recorriéndola.

Pero con tu solución, ahora puedo continuar con lo demás. De hecho para mañana la estaré aportando para que la puedas ver y me des tus impresiones.

Mis respetos por tu gran labor y paciencia.

Doy como tema solucionado.

publicado

Hola Riddle

Que alivio que el tema no está cerrado aun porque se me presenta una duda en base a la anterior.

Claro está si los señores administradores lo permiten, de lo contrario, haga caso omiso.

De acuerdo al código que me suministro que es excelente y ya funciona en el archivo, tenia una duda respecto al como se haría este tipo de consulta en base a un rango de fechas sin necesidad de que se muestre la fechas en la hoja.

Supongo que un bucle que recorra la fechas entre inicial y final y si la hoja en donde se encuentra la información coincide, pues que se sume.

He tratado sin logro alguno para solucionar esta duda que quizás usted la vea mejor pero esot bloqueado jejeje.

No tengo como ponerle el archivo para especificar lo ya dicho pero espero poder hacerlo pronto para mayor detalle.

publicado

Hola Riddle

En verdad mil disculpas por reintentar tratar el tema y mucho mas molestarte. Sin embargo ya creo que di con el código para tal fin. Este se usa para consultar por rango de fechas que se muestran en los dos combobox.

Este funciona con un nuevo libro de Excel que cree el cual tienes dos hojas. La hoja dos tiene 6 columnas: Control, Movimiento, fecha, Código, Unidades, Monto.

Las llené con datos ficticios, solo sin mas macros ni formularios para llenar.

Desafortunadamente no puedo adjuntar el archivo por esta computadora pero si me lo permite, lo doy como código.

Debe crear un formulario con dos combobox y un botón de comando. Luego pegue lo siguiente.

Codigo de ejemplo:

Public FechaI As Date
Public FechaF As Date
Public I As Integer
Public Lin As Long
Private Sub CommandButton1_Click()
FechaI = CDate(ComboBox1)
FechaF = CDate(ComboBox2)

With Hoja1
.Cells.Clear
.Cells(5, 1) = "Codigo"
.Cells(5, 2) = "Unidades"
.Cells(5, 3) = "Montos"
.Cells(6, 1) = "a"
.Cells(7, 1) = "b"
.Cells(8, 1) = "c"
End With

'Busca Los Datos y Coincidencias de la Base de Datos de Productos Cotengandola con la Base de Registros de Operaciones
Lin = 6
Do While Hoja1.Cells(Lin, 1) <> ""
Base = 2
Do While Hoja2.Cells(Base, 1) <> ""
If Hoja1.Cells(Lin, 1) = Hoja2.Cells(Base, 4) And _
Mid(Hoja2.Cells(Base, 3), 7, 4) >= FechaI And _
Mid(Hoja2.Cells(Base, 3), 7, 4) <= FechaF Then
Hoja1.Cells(Lin, 3) = Hoja1.Cells(Lin, 2) + Hoja2.Cells(Base, 5)
Hoja1.Cells(Lin, 3) = Hoja1.Cells(Lin, 3) + Hoja2.Cells(Base, 6)
End If
Base = Base + 1
Loop
Lin = Lin + 1
Loop

End Sub
Private Sub UserForm_Initialize()
For I = 1995 To 2050
ComboBox1.AddItem I
ComboBox2.AddItem I
Next I
End Sub
[/CODE]

Espero lo pueda ver con claridad.

Mis respetos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.