Buen dia: Me podrian ayudar por favor...tengo dos hojas de excel...una hace muchas formulas estadisticas y la otra me guarda los datos en forma de fila con un codigo de referencia que tiene en común con la primera hoja..ahora..funciona todo bien si pongo un numero de orden nuevo lo guarda, el tema es, si se repite tengo dos alternativas, si no deseo reemplazar no pasa nada porque probablemente puede ser una equivocación del usuario y sale del cuadro...PERO si pongo que si deberia con la orden que aparece en la primera hoja buscarla en la segunda con tooooda su info y buscarla en la columna y reemplazar la fila completa
Adjunto | Tamaño |
---|---|
![]() | 12.18 KB |
Puedes subir el libro en vez de el código en txt para ver exactamente que hace? Así es un poco complicado
IMF_RET
Visitame en https://InformaticaMuyFacil.com
ahi te mande algunos detalles espero que pueda ayudarme..gracias
Hola Darío,
Sin tener el Excel, es mas complicado, pero por lo que veo en el word y el código que has mandado, lo primero que haces es buscar si existe ya el valor del código (celda C3 de la hoa Registro). Si lo encuentras en la columna A de la hoja Datos, cargas el rango en C o CC, depende de si es valor o formula.
Después, tienes una condicion para ejecutar el código que viene abajo: If Not C Is Nothing Or Not CC Is Nothing Then, que por cierto, no tienes End if en el fichero txt que mandaste, con lo que te tiene que dar error, salvo que te falte algo de copiar.
Este código, pide confirmacion de reemplazar, que si le dices "no" sale, pero si le dices "si", continúa, y lo que hace es insertar una nueva linea:
If C Is Nothing And CC Is Nothing Then
lo que tienes ahora
else
el código para sobreescribir los datos en c.row o cc.row
IMF_RET
Visitame en https://InformaticaMuyFacil.com
te paso parte de lo que cree para que lo veas porque asi no me da o yo no entiendo bien.
Te subo con modificaciones. Creo que esto es lo que querías.
Por favor, chequealo y me dices.
Por otro lado, he hecho que funcione (o eso creo...). De todas formas, veo que tu código es bastante "mejorable". Si quieres profundizar un poco mas, puedes ver este artículo sobre buenas prácticas. No te llevará mucho, pero creo que te ayudará bastante.
https://informaticamuyfacil.com/buenas-practicas-en-vba
Saludos
IMF_RET
Visitame en https://InformaticaMuyFacil.com
muchisimas gracias...si voy a ver tu pagina obvio..me re sirve....te puedo hacer una ultima consulta... en ese mismo que tenes tengo otro problema que no es tan grave por el momento..pero : si al guardar y después poner extraer trae todo de la base de datos re bien...PERO HAY DOS CELDAS DE LISTA DESPLEGABLES QUE NO LAS TRAE (Y MIRA QUE HAY UN MONTON) SON A28 Y A29..no se si mi problema es el guardar, extraer o el formato de esas celdas..lo raro es que en el 98% restante funciona.
El proyecto está protegido por contraseña
IMF_RET
Visitame en https://InformaticaMuyFacil.com
34494569
Estás haciendo los BUSCARV sobre B3 en vez de sobre C3. Cambia esta parte del código de Sub EXTRAER
Range("A28").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(VLOOKUP(Registro!R[-25]C[2],Datos!R7C1:R100000C232,26,0)="""","""",VLOOKUP(Registro!R[-25]C[2],Datos!R7C1:R100000C232,26,0)),"""")"
Range("A29").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(VLOOKUP(Registro!R[-26]C[2],Datos!R7C1:R100000C232,27,0)="""","""",VLOOKUP(Registro!R[-26]C[2],Datos!R7C1:R100000C232,27,0)),"""")"
IMF_RET
Visitame en https://InformaticaMuyFacil.com
muhas gracias me solucionaste un trabajo de complicados largos meses, estoy re agradecido..ya se a quien tener de referencia cuando agrege más cosas estos meses....
Viste en todas las macros algo que pueda mejorar???
Estás haciendo los BUSCARV sobre B3 en vez de sobre C3. Cambia esta parte del código de Sub EXTRAER
Range("A28").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(VLOOKUP(Registro!R[-25]C[2],Datos!R7C1:R100000C232,26,0)="""","""",VLOOKUP(Registro!R[-25]C[2],Datos!R7C1:R100000C232,26,0)),"""")"
Range("A29").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(VLOOKUP(Registro!R[-26]C[2],Datos!R7C1:R100000C232,27,0)="""","""",VLOOKUP(Registro!R[-26]C[2],Datos!R7C1:R100000C232,27,0)),"""")"
IMF_RET
Visitame en https://InformaticaMuyFacil.com
Me he centrado solo en los problemas.
El código está hecho basado en el grabador de macros y éste mete demasiadas cosas innecesarias. Se podría depurar muchísimo, pero es un trabajo enorme.
Si te funciona, yo te recomendaría que vayas poco a poco aprendiendo y mejorando cosas.
IMF_RET
Visitame en https://InformaticaMuyFacil.com
como puedo hacer un control de calidad o validación de las macros ya que lo recomiendan las normas internacionales