Jump to content
Sign in to follow this  
DRAMIDOM

[CERRADO]Ayuda con macro para poder terminarlo

Recommended Posts

Respuesta: Ayuda con macro para poder terminarlo

Hola dramidom

En el archivo podras encontrar el avance de las ultimas modificaciones (ya permite modificar, elminar y corregi el detalle de que marcaba repetida la causa al momento de limpiar el form), al presionar el boton modificar desde el form, permite llevar la modificacion tanto al archivo fisico como al registro, con base a los datos que tengas ingresados en el mismo form.

Te recomiendo que analices el codigo en detalle y hagas pruebas para que veas si se obtiene el resultado esperado (seguramente le podras hacer muchas mejoras)

saludos cordiales

Acabo de ver el archivo esta excelente. Algo que he notado y quiero dejarlo para el final ya que puedo decir que el archivo esta completo con lo que necesito y es que note que el numero de carta no va en aumento, solo va en aumento si limpio o presiono el boton salir. de modo que necesito que cuando guarde, automaticamente se actualice el numero de carta ya que si vuelvo a guardar se pegaria el mismo numero, ah algo mas que yo he hecho aqui pero que no esta en ese archivo es que al limpiar se quita el No. de Carta y si continuo tendria que escribirlo, esa funcion se como quitarla del boton, pero para que lo modifiques cuando me hagas la modificacion de actulizacion del numero de carta automaticamente guarde y ya con esto dejaria el tema cerrado.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Acabo de ver el archivo esta excelente. Algo que he notado y quiero dejarlo para el final ya que puedo decir que el archivo esta completo con lo que necesito y es que note que el numero de carta no va en aumento, solo va en aumento si limpio o presiono el boton salir. de modo que necesito que cuando guarde, automaticamente se actualice el numero de carta ya que si vuelvo a guardar se pegaria el mismo numero, ah algo mas que yo he hecho aqui pero que no esta en ese archivo es que al limpiar se quita el No. de Carta ni la fecha y ya que si continuo tendria que escribirlo, esa funcion se como quitarla del boton, pero para que lo modifiques cuando me hagas la modificacion de actulizacion del numero de carta automaticamente guarde y ya con esto dejaria el tema cerrado.
. El boton modificar necesito cambiarle el nombre por Abrir archivo, si de paso quieres hacerlo puedes hacerlo. En el ultimo archivo subido por Rolano vi que el modifico el boton eliminar pero solo incluyo eliminar de la hoja de relacion el dato, si puedes tomar ese codigo e incluirlo aca mejor, asi estaria mas completo ya q se borraria el archivo y tambien el dato en la relacion

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola neverdelimon1:

muy bueno tu archivo, ingrese a este foro para aprender mas y poder ayudar a otras personas como cuando me inicie este mundo de excel tan fascinante que nunca se termina por aprender.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola neverdelimon1:

muy bueno tu archivo, ingrese a este foro para aprender mas y poder ayudar a otras personas como cuando me inicie este mundo de excel tan fascinante que nunca se termina por aprender.

Rolano ambos de ustedes son excelente voy aprendiendo mas y mas a medida que observo los codigos. Algo que olvide decir antes es que, vi q el formato de numero en el valor en la opcion de busqueda, no soloca el simbolo de dinero sino que pone asi RD2,101.00, estaba estudiando el codigo pero no logro ver el porque no lo pone.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Rolano ambos de ustedes son excelente voy aprendiendo mas y mas a medida que observo los codigos. Algo que olvide decir antes es que, vi q el formato de numero en el valor en la opcion de busqueda, no soloca el simbolo de dinero sino que pone asi RD2,101.00, estaba estudiando el codigo pero no logro ver el porque no lo pone.

Ya vi donde estaba el formato. Solo esta pendiente lo que pedi antes, cambio actualizado del No. de Carta y incluirle al codigo eliminar lo que rolano puso eliminar de la relacion esos datos y alguna otra cosa que ya haya dicho antes.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola estoy subiendo el ultimo archivo solo con poquitas modificaciones, como dije antes, solo necesito que al guardar se actulice en aumento el no. de carta ya que he notado que no lo hace sino que solo lo hace si salgo, dar formato a las cantidades y a los valores en la hoja de crear en las cantidades que al pasar estas queden en formato ejemplo, 1,500 y en valores RD$2.600.00, en la hoja de busqueda solo seria en la de cantidades ya que la de valores lo tiene. Rolano agrego algo interesante y es que el boton eliminar elimina los datos en la hoja de relacion cosa que completaria mejor ya que como esta incluido el eliminar el archivo si se elimina de la base de datos mejora mas, solo seria agregar esa funcion aunque note vi que la funcion en deberia limpiar la pantalla ya que si es presionada dos veces informa de un error de ejecusion.

1- actualizar el no. de carta cuando se guarda.

2- formato en la hoja crear a valores y cantidades y en la busqueda solo a cantidades

3- incluir eliminar de la hoja de relacion

GigaSize.com: Host and Share your Files

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola rolano

Tienes toda la razon, sinceramente en el tiempo que he participado en el foro me he llevado una agradable sensación ya que se aprende mucho.

te envio un afectuoso saludo

Hola Dramidom

Te adjunto el archivo con las modificaciones, espero haberle atinado.

-Le agrege los formatos (mucho ojo tu ingresas los datos normales por ejemplo un numero 1250 "sin comas ni simbolos como RD o $, la macro se lo pone solito, ello con razon de dar mayor compatibilidad en el momento de pasar a MS Excel), aplica el formato en el momento que te sales de recuadro "textbox" (evento exit)

-Reformule el código de limpiar para el form de busqueda, con ello espero no tengas problemas (se gano bastante velocidad)

-El boton de modificar creo que desde mi muy humilde punto de vista es muy descriptivo, (si deseas puedes cambiarle el nombre en la propiedad caption, ello no afecta en su rendimiento ni nada por el estilo), dicho boton modifica tanto la hoja relacion como el archivo fisico (el que se guarda en la ruta "C:\Users\Julia\Desktop\), si no encuentra el archivo fisico te lo informará y te preguntara si deseas modificar unicamente el registro en la hoja relacion.

El boton eleminar, elmina tanto el registro en la hoja relación, como el archivo fisico (lo busca en "C:\Users\Julia\Desktop\), si no encuentra el archivo en tal ruta te lo informará y te preguntara si deseas borrar unicamente el registro en la hoja relacion.

Te envio saludos cordiales y te invito a seguir atento en el foro, pon especial atencion a la frase que usa el master ST al final de sus post ( a mi en lo particular me ha servido de mucho)

Sistem_Letter1avanc3-nvr.zip

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola rolano

Tienes toda la razon, sinceramente en el tiempo que he participado en el foro me he llevado una agradable sensación ya que se aprende mucho.

te envio un afectuoso saludo

Hola Dramidom

Te adjunto el archivo con las modificaciones, espero haberle atinado.

-Le agrege los formatos (mucho ojo tu ingresas los datos normales por ejemplo un numero 1250 "sin comas ni simbolos como RD o $, la macro se lo pone solito, ello con razon de dar mayor compatibilidad en el momento de pasar a MS Excel), aplica el formato en el momento que te sales de recuadro "textbox" (evento exit)

-Reformule el código de limpiar para el form de busqueda, con ello espero no tengas problemas (se gano bastante velocidad)

-El boton de modificar creo que desde mi muy humilde punto de vista es muy descriptivo, (si deseas puedes cambiarle el nombre en la propiedad caption, ello no afecta en su rendimiento ni nada por el estilo), dicho boton modifica tanto la hoja relacion como el archivo fisico (el que se guarda en la ruta "C:\Users\Julia\Desktop\), si no encuentra el archivo fisico te lo informará y te preguntara si deseas modificar unicamente el registro en la hoja relacion.

El boton eleminar, elmina tanto el registro en la hoja relación, como el archivo fisico (lo busca en "C:\Users\Julia\Desktop\), si no encuentra el archivo en tal ruta te lo informará y te preguntara si deseas borrar unicamente el registro en la hoja relacion.

Te envio saludos cordiales y te invito a seguir atento en el foro, pon especial atencion a la frase que usa el master ST al final de sus post ( a mi en lo particular me ha servido de mucho)

Gracias por tu atinada ayuda, voy a descargar el archivo y probarlo. Sobre el boton modificar lo coloque con la idea de que cuando necesite reimprimir ese archivo pueda verlo y imprimirlo sin que tenga que buscarlo directamente en la carpeta y si hay que modificar algun dato tambien. probare la funcion aunque creo que diste con la idea de lo que necesitaba q hiciera ya que pense que solo con abrir no podria hacer nada si tuviera que cambiar algun dato, muy bien de tu parte que pueda realizar estas funciones.

a Rolano gracias tambien por cada respuesta en este foro. por lo pronto probar, ya que no se si incluiste lo de la actualizacion del no. de carta.

Gracias,

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

el siguiente error aparecio cuando le di a guardar me imagino que esta relacionado con la carpeta ya que vi que tienes una nueva funcion que pregunta si queria guardar. Note que aparece luego de decir que si quiero guardarlo inpendiente.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

He notado este tipo de error en otras ocaciones y aqui lo coloco

Else

blnFin = True

End If

Loop Until blnFin

If varFic = False Then

MsgBox "La devolución no ha sido guardada. ", vbInformation, "OPERACIÓN CANCELADA"

Exit Sub

End If

Application.ScreenUpdating = False

Set wbkAct = ActiveWorkbook

wbkAct.Sheets("Devolucion").Copy

Set wbkRec = ActiveWorkbook

wbkRec.Close True, varFic

MsgBox "La devolución se ha guardado en el archivo: " & vbNewLine & vbNewLine & varFic & Space(5), _

vbInformation, "OPERACIÓN TERMINADA"

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM:

en el dibujo que adjuntas de dice, tienes que tener una carpeta

C:\Users\Julia\Desktop\

o en todo caso modifica el modulo1(Module1) a tu gusto

Public Const cstrDirectorio As String = "C:\Users\Julia\Desktop\" 'Aqui asignas la ruta donde se guardan y buscan los archivos (la variable es vista en todos los modulos y forms)

Ese error sale por que no tienes dicha carpeta

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola dramidom

El error te lo envia porque no encuentra el directorio "C:\Users\Julia\Desktop\", de ahi proviene el error (muy seguramente dónde la estas probando no tienes ese directorio), en el module1, puedes cambiar a efecto de pruebas la variable que esta como Public Const cstrDirectorio As String = "C:\Users\Julia\Desktop\" por algo como Public Const cstrDirectorio As String = "C:\" desde ahi puedes manipular la ruta donde se guardaran los archivos

Otra cosa por ahi cambiale el caption a la form1 es que dice otra palabra en lugar de devolucione, error de dedo mio, mil disculpas jejejeje

Saludos

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola dramidom

El error te lo envia porque no encuentra el directorio "C:\Users\Julia\Desktop\", de ahi proviene el error (muy seguramente dónde la estas probando no tienes ese directorio), en el module1, puedes cambiar a efecto de pruebas la variable que esta como Public Const cstrDirectorio As String = "C:\Users\Julia\Desktop\" por algo como Public Const cstrDirectorio As String = "C:\" desde ahi puedes manipular la ruta donde se guardaran los archivos

Otra cosa por ahi cambiale el caption a la form1 es que dice otra palabra en lugar de devolucione, error de dedo mio, mil disculpas jejejeje

Saludos

si jaja ya me acorde el problema es que uso dos pc y olvide que estaba en la otra, habia arreglado ese problema en otras ocasiones pero esta vez ni me paso por la cabeza.

bueno a todos gracias el tema esta resuelto.

pueden cerrar el tema. mil gracias espero que este archivo le sirva tambien a otros. no encuentro como agradecerles por eso lo repito muchas veces jaja.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

jejejejej por un minuto nos encontramos el compañero rolano y yo jejejejejejejejeje

cosas que pasan en el foro , jejejejejej

saludos

Hola neverdelimon1:

le estoy dando a excel, los domingos tengo mas tiempo que otros dias

Dice el dicho "El que enseña aprende"

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

hola chicos:

un gustazo verlos participar con tal 'entusiasmo',los felicito de verdad ;)

apenas si he tenido tiempo de darle un vistazo rapido a las respuestas y no he tenido tiempo de ver los resultados conseguidos(en el archivo) a punta de esfuerzo y dedicación,conocimiento y experiencia ganada.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola Dramidon y a todos lo compañeros.

Si no es mucho pedir, podrías subir y compartir el archivo terminado, asi nos puede servir a muchos para orientarnos en ontras cosas que son muy útiles.

Gracias.

Att. Pedro Silvestre

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Nuevamente por aca, el dia de hoy solo entre para una pequenita cosita, resulta que ya agregue todos los datos en la hoja 1A con los datos, pero resulta que son aproximadamente 5000 filas, al ejecutar el macro para crear las devoluciones, este tarda aproximadamente 10 minutos para abrir, ya que al ser tantos datos se detiene por un buen rato cargandolos.

Esta preguntita va para Rolando y neverdelimon1 como puedo solucionar esto, que codigo modificar para que no tarde tanto?

Favor adjuntarme el archivo con esta modificacion y pasarme el codigo para saber donde debo modificar ya en esta que tengo aca sin que me afecte los cambios.

Y otra cosa mas no se si es posible, que agregando una funcion mas en la hoja de bievenida llamado Generar Reporte, en una hoja llamada Reporte, se cree un reporte con todas las devoluciones es decir:

codigo, proveedor, cantidad de cartas, Cantidad devoluciones y Valores Devueltos.

De esta manera no tendria que sumarlas y filtrar esos datos y poder generar un reporte con todas las devoluciones que realice en un periodo de tiempo, de modo que si hay 10 proveedores con devoluciones me sea posible saber cuales han sido y por que cantidad y valor, aunque en la hoja de relacion esta, pero estos datos estaran dispersos y se necesita algo mas centro y que en una celda abajo ya este el valor total y la cantidad total.

Gracias,

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola Dramidom

Seguramente el tiempo que se toma es debido a la función que tienes para eliminar duplicados, (ya que recorre los 5000 filas que mencionas y las compara para luego ordenarlas), como recordaras VBA es algo lento a la hora de ir comparando objetos segun mi experiencia trabaja a razon de 300 celdas por segundo o algo asi mas o menos.

La alternativa es utilizar una hoja auxiliar y en ella hacer un filtro avanzado, y un sort con la funcion ordenar del mismo MS Excel, con ello yo creo que demorará a lo mucho unos segundos, tambien me gustaria preguntarte si cuando seleccionas un proveedor, al momento de cargarse los no. de carta al combobox lo notas algo lento, si es asi para intentar utilizar tambien el filtro avanzado y ganar velocidad.

saludos cordiales

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola Dramidom

Seguramente el tiempo que se toma es debido a la función que tienes para eliminar duplicados, (ya que recorre los 5000 filas que mencionas y las compara para luego ordenarlas), como recordaras VBA es algo lento a la hora de ir comparando objetos segun mi experiencia trabaja a razon de 300 celdas por segundo o algo asi mas o menos.

La alternativa es utilizar una hoja auxiliar y en ella hacer un filtro avanzado, y un sort con la funcion ordenar del mismo MS Excel, con ello yo creo que demorará a lo mucho unos segundos, tambien me gustaria preguntarte si cuando seleccionas un proveedor, al momento de cargarse los no. de carta al combobox lo notas algo lento, si es asi para intentar utilizar tambien el filtro avanzado y ganar velocidad.

saludos cordiales

Gracias por responder, la verdad hoy pense utilizar ya el archivo pero cuando agregue todos los datos uff tardo mucho tiempo en abrir tanto que pense que se habia congelado el excel. por otra parte no he notado si es lento al cargarse el No. de Carta creo que en esa parte va bien ya que al guardar lo hace bien.

Me podrias pues ayudar con lo que me dices del filtro avanzado para mejorar el archivo?

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Nuevamente por aca en espera de alguna respuesta. Por otra parte, tengo una duda con lo del filtro avanzado, ya que entiendo que los filtros avanzados se utilizan cuando hay valores repetidos, y en este caso particular creo que no hay valores repetidos, ya que la opcion codigos no contiene numeros que esten repetidos, solo pueden estar repetidos las ciudades y quizas alguna direccion, pero no los codigos que es lo que realmente trae los demas datos, aunque donde si habria repetidos en en la opcion de busqueda de la hoja de relacion.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM

En tus eventos initialize de cada uno de tus forms, borra el anterior código y pega el siguiete código respectivamente:

Código para tu form1

Private Sub UserForm_Initialize()
'Código para el Userform1 "Devoluciones"
Dim AllCells As Range
Dim myAllcells As Range
Dim mysort As Range
Dim sht As Worksheet
Dim ultcel2 As String
Dim matriz() As Variant
Dim i As Long


ThisWorkbook.Activate
' Lista de los valores para combobox
With Sheets("1a")
If .Range("A" & Rows.Count).End(xlUp).Row = 1 Or .Range("A" & Rows.Count).End(xlUp).Row = 2 Then Exit Sub

Set AllCells = .Range("a1:a" & .Range("A" & Rows.Count).End(xlUp).Row)
End With
'Hoja puente para extraer unicos y ordenar valores
Application.ScreenUpdating = False
On Error Resume Next
Set sht = Sheets("HOJAPUENTE")
On Error GoTo 0

If sht Is Nothing Then
Set sht = Sheets.Add
sht.Name = "HOJAPUENTE"
End If
' Elimina los datos duplicados
sht.Cells.ClearContents

AllCells.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=sht.Range("A1"), Unique:=True

With sht
Set mysort = Range("A1", .Cells(Rows.Count, "A").End(xlUp))
mysort.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Set myAllcells = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
End With

ReDim matriz(1 To myAllcells.Cells.Count)

For i = 1 To myAllcells.Cells.Count
matriz(i) = myAllcells.Cells(i)
Next i

Me.Codigo.List() = matriz
Application.DisplayAlerts = False
sht.Delete
Application.DisplayAlerts = True

ultcel2 = Hoja4.Range("A" & Rows.Count).End(xlUp).Address

NoCarta = Worksheets("Devolucion").Range("J2").Value
NoCarta = NoCarta + 1
Fecha.Text = VBA.Date
If ultcel2 = "$A$2" Then
Application.ScreenUpdating = True
Exit Sub
End If
Codigos1.RowSource = "Comentarios!$A$2:" & ultcel2
Codigos2.RowSource = Codigos1.RowSource
Codigos3.RowSource = Codigos1.RowSource
Application.ScreenUpdating = True

Set AllCells = Nothing
Set myAllcells = Nothing
Set sht = Nothing
Set mysort = Nothing
Erase matriz
End Sub[/CODE]

Código para tu form2:

[CODE]Private Sub UserForm_Initialize()
'Código userfomr2 "Busqueda de devoluciones por proveedor"
Dim AllCells As Range
Dim myAllcells As Range
Dim mysort As Range
Dim sht As Worksheet
Dim matriz() As Variant
Dim i As Long
ThisWorkbook.Activate
' Lista de los valores para combobox

With Sheets("1a")
If .Range("A" & Rows.Count).End(xlUp).Row = 1 Or .Range("A" & Rows.Count).End(xlUp).Row = 2 Then Exit Sub

Set AllCells = .Range("a1:a" & .Range("A" & Rows.Count).End(xlUp).Row)
End With
'Hoja puente para extraer unicos y ordenar valores
Application.ScreenUpdating = False
On Error Resume Next
Set sht = Sheets("HOJAPUENTE")
On Error GoTo 0

If sht Is Nothing Then
Set sht = Sheets.Add
sht.Name = "HOJAPUENTE"
End If
' Elimina los datos duplicados
sht.Cells.ClearContents

AllCells.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=sht.Range("A1"), Unique:=True

With sht
Set mysort = Range("A1", .Cells(Rows.Count, "A").End(xlUp))
mysort.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Set myAllcells = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
End With

ReDim matriz(1 To myAllcells.Cells.Count)

For i = 1 To myAllcells.Cells.Count
matriz(i) = myAllcells.Cells(i)
Next i

Me.Codigo.List() = matriz
Application.DisplayAlerts = False
sht.Delete
Application.DisplayAlerts = True


Application.ScreenUpdating = True

Set AllCells = Nothing
Set myAllcells = Nothing
Set sht = Nothing
Set mysort = Nothing
Erase matriz
End Sub[/CODE]

Cambia el código, haz varias pruebas y nos cuentas como te fue, espero ahora si se gane velocidad.

Respecto a tu otra consulta, te recomiendo que busques en los ejemplos del master ioyama, con un filtro avanzado automatizado pues lograr lo que deseas

saludos cordiales

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...

Important Information

Privacy Policy