Macro reemplazar

14 envíos / 0 nuevos
Último envío
Dario
Imagen de Dario
Offline
última acción: Hace 3 años 9 meses
alta: 02/06/2020 - 17:14
Puntos: 85
Macro reemplazar

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

 

AdjuntoTamaño
Plain text icon codigo.txt12.18 KB

Etiquetas: 

RET
Imagen de RET
Offline
última acción: Hace 3 años 8 meses
alta: 01/06/2020 - 13:29
Puntos: 290
Macro reemplazar

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

Dario
Imagen de Dario
Offline
última acción: Hace 3 años 9 meses
alta: 02/06/2020 - 17:14
Puntos: 85
ahi te mande algunos detalles

ahi te mande algunos detalles espero que pueda ayudarme..gracias

AdjuntoTamaño
File cuando_presiono_guardar.docx2.51 MB
RET
Imagen de RET
Offline
última acción: Hace 3 años 8 meses
alta: 01/06/2020 - 13:29
Puntos: 290
Macro reemplazar

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:

    Sheets("Datos").Select
    Rows("7:7").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Yo creo que lo que tienes mal es la condicion If Not C Is Nothing Or Not CC Is Nothing Then. Lo que quieres es que si C es nada y CC es nada, es decir, no ha encontrado la referencia, ejecute el código que viene debajo (insertar nuevo registro), pero que si lo ha encontrado, que te copie sobre la fila de C o CC.
Prueba a quitar los Not y cambiar el or del if por un and, es decir, si TANTO C como CC son nothing (no ha encontrado el rango), inserte una nueva fila. Si no, que ejecute el ELSE que sería la agregacion de un nuevo registro.
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
end if
 
 

IMF_RET

Visitame en https://InformaticaMuyFacil.com

Dario
Imagen de Dario
Offline
última acción: Hace 3 años 9 meses
alta: 02/06/2020 - 17:14
Puntos: 85
NO SE COMO REEMPLAZAR UNA ORDEN

te paso parte de lo que cree para que lo veas porque asi no me da o yo no entiendo bien.

RET
Imagen de RET
Offline
última acción: Hace 3 años 8 meses
alta: 01/06/2020 - 13:29
Puntos: 290
Macro reemplazar

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

Dario
Imagen de Dario
Offline
última acción: Hace 3 años 9 meses
alta: 02/06/2020 - 17:14
Puntos: 85
NO SE COMO REEMPLAZAR UNA ORDEN

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.

AdjuntoTamaño
File extraer.xlsm409.65 KB
RET
Imagen de RET
Offline
última acción: Hace 3 años 8 meses
alta: 01/06/2020 - 13:29
Puntos: 290
NO SE COMO REEMPLAZAR UNA ORDEN

El proyecto está protegido por contraseña

 

IMF_RET

Visitame en https://InformaticaMuyFacil.com

Dario
Imagen de Dario
Offline
última acción: Hace 3 años 9 meses
alta: 02/06/2020 - 17:14
Puntos: 85
NO SE COMO REEMPLAZAR UNA ORDEN

34494569

RET
Imagen de RET
Offline
última acción: Hace 3 años 8 meses
alta: 01/06/2020 - 13:29
Puntos: 290
NO SE COMO REEMPLAZAR UNA ORDEN

 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

Dario
Imagen de Dario
Offline
última acción: Hace 3 años 9 meses
alta: 02/06/2020 - 17:14
Puntos: 85
NO SE COMO REEMPLAZAR UNA ORDEN

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???

RET
Imagen de RET
Offline
última acción: Hace 3 años 8 meses
alta: 01/06/2020 - 13:29
Puntos: 290
NO SE COMO REEMPLAZAR UNA ORDEN

 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

RET
Imagen de RET
Offline
última acción: Hace 3 años 8 meses
alta: 01/06/2020 - 13:29
Puntos: 290
NO SE COMO REEMPLAZAR UNA ORDEN

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

Dario
Imagen de Dario
Offline
última acción: Hace 3 años 9 meses
alta: 02/06/2020 - 17:14
Puntos: 85
NO SE COMO REEMPLAZAR UNA ORDEN

como puedo hacer un control de calidad o validación de las macros ya que lo recomiendan las normas internacionales