Jump to content

tierra_pampa

Members
  • Posts

    344
  • Joined

  • Last visited

  • Days Won

    19

Everything posted by tierra_pampa

  1. Hola @Gerardo Mojica!!! Convierte el archivo a extensión *.xlsm (para que puedas usar las macros) y agrega el código en el módulo de la hoja en la cual tienes la tabla. Completa un registro (columnas A:G) y fijate si te ayuda en tu búsqueda (primer punto de tu pedido). Suerte! Private Sub Worksheet_SelectionChange(ByVal Target As Range) cfila = 0: cfila = ActiveCell.Row If Not Intersect(Target, Range(Cells(cfila, 5), Cells(cfila, 7))) Is Nothing Then Cells(cfila, 8).Value = Cells(cfila, 2).Value & ".- " & Cells(cfila, 5).Value Cells(cfila, 9).Value = Cells(cfila, 3).Value & ".- " & Cells(cfila, 6).Value Cells(cfila, 10).Value = Cells(cfila, 4).Value & ".- " & Cells(cfila, 7).Value End If End Sub
  2. Hola@Micky Mendoza! Tu formulario carga bien en el evento ACTIVATE y no importan las columnas que quieres mostrar, cuando lo haces con la orden "RowSource". Si bien tu cargas los datos como "Tabla" te dejo otra forma de carga para los datos (para que vayas comparando las órdenes) Private Sub UserForm_Initialize() ufila3 = 0: ufila3 = Sheet3.Cells(Rows.Count, 2).End(xlUp).Row If ufila3 < 2 Then ufila3 = 2 Me.LISTA.RowSource = Sheet3.Name & "!B2:AC" & ufila3 Me.LISTA.ColumnCount = 28 Me.LISTA.ColumnWidths = "30;30;150;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30" End Sub Inmediatamente a la ejecución de la carga del "FormularioPrincipal" deberías poder ver todas las columnas y filas. Fijate que en el código del botón "Búsqueda" (Private Sub BT_BUSQUEDA_Click) cargas la tabla por columnas. Recuerda que puedes poner "0" en el ancho de la columna y la misma no será visible para el usuario. Suerte!
  3. Hola @roa30 Te dejo un pequeño código para identificar el rango a copiar. Agrega dentro de tu código "CopiarCeldas" un llamado como éste: "Call buscar_ultpedido" Suerte! Sub buscar_ultpedido() Dim ufila6 As String, ufila7 As String Dim rango As Range 'última fila de hoja Other ufila6 = 0: ufila6 = Hoja6.Cells(Rows.Count, 1).End(xlUp).Row If ufila6 < 2 Then ufila6 = 2 'última fila de hoja Abastecimiento ufila7 = 0: ufila7 = Hoja7.Cells(Rows.Count, 1).End(xlUp).Row If ufila7 < 2 Then ufila7 = 2 For i = ufila6 To 2 Step -1 If Hoja6.Cells(i, 1).Value = Hoja6.Cells(i - 1, 1).Value Then Else j = Hoja6.Cells(i, 1).Row Set rango = Hoja6.Range("A" & j & ":J" & ufila6) rango.Copy Hoja7.Range("A" & ufila7).PasteSpecial xlPasteValues Exit Sub End If Next End Sub
  4. Hola @Micky Mendoza Para que: * Se muestre el formulario como la celda, usa FORMAT() txt_purchase.Value = Format(pon la fecha aquí, "dd/mmm/yyyy") * No se muestren en el ListBox las columnas que no quieras ver, simplemente pon "0" en el ancho; antes de mostrar el formulario: Private Sub UserForm_Initialize() ufila1 = 0: ufila1 = Hoja1.Cells(Rows.Count, 1).End(xlUp).Row If ufila1 < 2 Then ufila1 = 2 ListBox1.RowSource = Hoja1.Name & "!A2:K" & ufila1 ListBox1.ColumnCount =11 ListBox1.ColumnWidths = "30;30;150;0;0;0;0;0;0;0;30" End Sub Suerte!
  5. Perdón @Maria_80 me olvidé de avisar que modifiqué las variables así: Public cfila1 As String, ufila1 As String Public i As Integer, cpase As Integer, ccnt As Integer Suerte!
  6. Hola @Maria_80 Puedes agregar un control para que si es el primer ingreso actue como pediste. Te dejo el código propuesto para que lo juntes con tu código ya existente (módulo 1) y pruebes. Sub ctrl_primer_ingreso() With Application .ScreenUpdating = False .DisplayAlerts = False End With cpase = 0: cfila1 = 0: cfila1 = Hoja1.Cells(i, 1).Row cvalor = 0: cvalor = Hoja1.Cells(i, 1).Value If Cells(i, 2).Value = "Entrada" Then For j = 2 To cfila1 If Hoja1.Cells(i, 1).Value = cvalor Then ccnt = ccnt + 1 If ccnt > 1 Then cpase = 1: Exit Sub If j = cfila1 Then cpase = 0: Exit Sub End If Next j Else Exit Sub End If With Application .ScreenUpdating = True .DisplayAlerts = True End With End Sub En tu código ya existente, efectúa estas modificaciones: Revisa bien los condicionales (para cuando son "Entrada") y agrega la condición cpase=0 para que Excel sepa que es el primer registro de dicho código. Sub Control_Inventario() With Worksheets("Inventario") ccnt = 0 For i = 2 To .UsedRange.Rows(.UsedRange.Rows.Count).Row Call ctrl_primer_ingreso If Cells(i, "B").Value = "Entrada" And Cells(i - 1, "B").Value = "Entrada" And cpase = 0 Then Suerte!
  7. Hola @Chrispal1977 Si subes el archivo (con datos de prueba) sería más fácil. Suerte!
  8. Hola @roa30 Prueba si te entendí bien... Pd.: tuve que eliminar los datos de la Hoja3 y las líneas del archivo para poder subirlo sin zip. Si deseas agradecer el tiempo invertido en procurar una solución al pedido, abajo a la derecha de cada mensaje encuentras un corazón. Suerte! ae20210702_post45056_suministros.xlsm
  9. Hola @DanielaAlcala22! Cuánto me alegro que te haya funcionado! Prueba con el nuevo archivo, revisando bien el nombre de las variables (modificado a nombre como tu lo tienes). Quedo al aguardo de tus comentarios. Buen domingo!!! Suerte! ae20210619_post44993_datos_licitaciones.xlsm
  10. Hola de nuevo @DanielaAlcala22! Según el traductor, el mensaje de error (no entiendo el inglés) dice: "Lo sentimos, no pudimos su archivo. Fue movido, renombrado, o borrado". Para que se ejecute el código debes tener el archivo "cotización.docx" en la ruta que tú dispones (unión de las variables ruta1 y ruta2). El mensaje te está advirtiendo que dicho archivo no está en la ruta o tiene otro nombre. Trata de copiar el nombre del archivo y pegarlo en el código para asegurar que no tiene diferencias, algún acento, etc. También puedes ejecutar el código con ambos archivos en una misma ruta (C:\); en dicho caso la variable debrá quedar así: ruta2 = "" Modifiqué nuevamente el archivo para agregar unas cajas de mensajes para que sepas dónde tienes que dejar el archivo "cotización.docx" (por favor, fijate de guardarlo en formato docx!). Después de probar, puedes borrarlas o dejarlas. Revisa nuevamente por favor y avisas cualquier error. Suerte! ae20210619_post44993_datos_licitaciones.xlsm
  11. Hola @julio-angel La macro del Maestro @antoni es para copiarla en la hoja en que deseas se ejecute la búsqueda (si es Hoja2, pegarla en el módulo de la Hoja2). Lo que debes asegurarte es que la celda "F1" (de la hoja que tu deseas) cambie de valor. Igualmente, te dejo un ejemplo para el caso que planteas en tu último post(si quieres ejecutarla desde otra hoja y que se produzca el cambio de valor de la celda). ScreenUpdating se usa para evitar el parpadeo durante los cáculos de Excel (puedes pasarlo a TRUE y verificarlo) y con ello, ejecutar con más velocidad el código. Suerte! ae20210619_post44965_PRUEBA.xlsm
  12. Hola @DanielaAlcala22 Solo pude controlar la macro "generar_word_3R" porque estoy por salir. Fiajte si te entendí bien y es lo que andabas buscando. Si deseas agradecer el tiempo invertido en procurar una solución al pedido, abajo a la derecha de cada mensaje encuentras un corazón. Suerte! ae20210619_post44993_datos_licitaciones.xlsm
  13. Hola @jose_luisc! Con los mismos datos que enuncias en tu ejemplo, inserta un módulo en un archivo ".xlsm" y ejecuta el código. Suerte! Sub copiar_datos() ufila1 = 0: ufila1 = Hoja1.Cells(Rows.Count, 1).End(xlDown).Row For i = 3 To ufila1 If Cells(i, 1).Value = "" Then ufila1 = Cells(i, 1).Row ufila1 = ufila1 - 1 Exit For End If Next If ufila1 < 3 Then ufila1 = 3 Hoja1.Range("3:" & ufila1).Copy Hoja3.Activate Rows("3:3").Insert Shift:=xlDown Application.CutCopyMode = False Cells(3, 1).Activate End Sub
  14. Hola @Gabriela hg! Te dejo una opción para que veas si puede ser lo que necesitas. Qué tengas un buen día! Suerte! ae44324_control.xlsx ae44324_datos.xlsx
  15. Hola @jeaa Te dejo una opción, fijate si es lo que buscas. Modifiqué tu "combinación de celdas" (no es de lo más recomendado usar) por la opción "centrado en la selección" para ver si es de tu agrado. Si deseas valorar el tiempo invertido en procurar la solución del problema planteado, puedes hacerlo con un click en el corazón que se encuentra en la parte derecha del comentario. Qué tengas un buen día! Suerte! ae20201129_post44273_PROPUESTA FORMT2020.xlsm
  16. Hola @Alba Perez Te dejo un archivo con el error solucionado. Si deseas valorar el tiempo invertido en procurar la solución del problema planteado, puedes hacerlo con un click en el corazón que se encuentra en la parte derecha del comentario. Qué tengas un buen día! Suerte! ae20201027_post44155_PEDIDOS 2019.xlsm
  17. Hola @elkely!!! Modificado, y perdona las veces que tuviste que repetirlo hasta que me dí cuenta! Cualquier modificación necesaria, estaremos en contacto. Qué tengas un buen día. Suerte!!!! ae20201022_post44120_Avisos4.xlsm
  18. Hola @lphant No es necesario activar la hoja para ejecutar "muchas" acciones (salvo cuando debes obligatoriamente seleccionar) o escribir algo. Toma un libro nuevo que tenga como mínimo cuatro hojas. En un módulo común, copia este código. Selecciona una hoja y ejecútalo. Verás que escribe las fórmulas en todas las hojas involucradas sin necesidad de activarlas. Cambia la hoja seleccionada y vuelve a probar el código. Qué tengas un buen día! Suerte! Sub escribir_formulas() With Application .ScreenUpdating = False .DisplayAlerts = False End With Hoja1.Range("A2:A12").FormulaR1C1 = "=IF(RC3<>"""",COUNTIFS(R2C3:R12C4,RC3),1)" Hoja2.Range("B2:B12").FormulaR1C1 = "=IF(RC4<>"""",COUNTIFS(R2C3:R12C4,RC4),1)" Hoja3.Range("C2:C12").FormulaR1C1 = "=IF(RC4<>"""",COUNTIFS(R2C3:R12C4,RC4),1)" With Application .ScreenUpdating = True .DisplayAlerts = True End With End Sub
  19. Hola amigo @elkely, perdona la demora en volver por aquí. Espero poder entender tu aclaración. Veamos: Creo que eso es lo que siempre hizo el código, pero ahora le agregué el nombre de la persona que consultas para que no haya dudas. Todos los clientes que agregues en el rango de las celdas "C14:D19", se reflejan inmediatamente a la celda "C1". Modificado. Por favor, prueba el nuevo archivo y comenta tus impresiones. Si hay algún error, lo modificamos. Qué tengas una buena jornada!!!! Suerte! ae20201021_post44120_Avisos3.xlsm
  20. Hola @elkely Revisa el nuevo archivo y comprueba si es lo que necesitas. No entiendo bien lo que quieres hacer al pulsar "NO", ya que las celdas que interviene son fórmulas. Por el momento, la macro las borra y las vuelve a su lugar al efectuar otra consulta. Si deseas valorar el tiempo invertido en procurar la solución del problema planteado, puedes hacerlo con un click en el corazón que se encuentra en la parte derecha del comentario. Que tengas un buen día! Suerte! ae20201017_post44120_Avisos2.xlsm
  21. Hola @RubenDario Te envío una segunda versión con la línea del "SI" anulada. Tienes razón, cambié de idea y el módulo1 quedó sin usar (en origen, la macro de la hoja lo iba a llamar para desarrollar desde ahí). Con respecto a tu tabla, pon el archivo origen aquí y la modificamos. No tiene que tener datos reales, modificalos para tu seguridad; pero que la estructura del archivo sea la real, la que vayas a usar en el futuro. Qué tengas un buen día! Suerte! ae20201017_post44122_numeracion autoincrementada v02.xlsm
  22. Hola @elkely Te dejo un archivo para que pruebes si va con lo que necesitas. Si deseas valorar el tiempo invertido en procurar la solución del problema planteado, puedes hacerlo con un click en el corazón que se encuentra en la parte derecha del comentario. Qué tengas un buen día! Suerte! ae20201015_post44120_AVISOS1.xlsm
  23. Hola @RubenDario Vamos a ver si entendí tu necesidad. Por favor, prueba el archivo y comenta. Para generar un evento solo tiene que ingresar en cualquier celda de la columna "E" después la fila 3. Para modificar el último número, puedes editarlo con "F2" y la tecla Enter Si deseas valorar el tiempo invertido en procurar la solución del problema planteado, puedes hacerlo con un click en el corazón que se encuentra en la parte derecha del comentario. Qué tengas un buen día! Suerte! ae20201014_post44122_numeracion autoincrementada.xlsm
  24. Hola @marcosab Por favor, la próxima vez pon un archivo de ejemplo, para un más fácil entendimiento del problema. Pon este código en la hoja que, al activar, quieras ejecutar la macro: Private Sub Worksheet_Activate() Call macro1 End Sub En un módulo común, pones el siguiente código: Sub macro1() MsgBox "Este mensaje se generó por haber activado la Hoja1!", vbInformation, "Activar macro al activar hoja" End Sub Sub macro2() MsgBox "Este mensaje se generó por haber activado la Hoja2!", vbInformation, "Activar macro al activar hoja" End Sub Si deseas valorar el tiempo invertido en procurar la solución del problema planteado, puedes hacerlo con un click en el corazón que se encuentra en la parte derecha del comentario. Qué tengas un buen día! Suerte! ae20201014_post44127_ejemplo.xlsm
  25. Hola @Dani2020 Por favor, prueba si lo que entendí es lo que necesitas. Suerte! ae20200929_post44048_Modificar 2020.xlsm
×
×
  • Create New...

Important Information

Privacy Policy