Saltar al contenido

Copiar celdas no adyacentes en otra hoja


Recommended Posts

publicado

Buenos días amigos foristas, un cordial saludo!!

Acudo a ustedes con a pedirles ayuda con una macro. He tratado de hacerlo grabando macro pero no funciona, no  logro el objetivo deseado. Hay que hacerle alguna modificación al código. Les explico.

Tengo 2 hojas “INGREDIENTE” Y “EQUIPO”

En EQUIPO voy agregando datos por fila, se hacen varios cálculos y en la columna K obtengo un valor. La macro debe activarse automáticamente cuando el valor  de la columna K sea mayor a cero (0).

La macro debe copiar de EQUIPO el dato ingresado en la columna A y la columna K (éste solo valor, sin formato original) y pegarlos en la primera fila disponible de INGREDIENTE, el dato de la columna A en la columna A y el dato de la columna K en la columna J, luego lanzar un mensaje indicando que debe terminar de llenar la información del ingrediente, y la celda activa debe quedar en la columna B de ese dato que se acaba de copiar.

 Agradezco mucho su valiosa colaboración.

EJEMPLO PARA AYUDA EXCEL-1.xlsm

publicado

Hola, prueba asi.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Or Target.Column = 11 Then
Dim ult, ult1 As Long
ult = Hoja1.Range("A" & Rows.Count).End(xlUp).Row + 1
ult1 = Hoja1.Range("J" & Rows.Count).End(xlUp).Row + 1
If Target.Column = 1 Then
Hoja1.Range("A" & ult) = Target.Value
MsgBox "debe de terminar de llenar la informacion"
Hoja1.Select
Hoja1.Range("B" & ult).Select
End If
If Target.Column = 11 Then
Hoja1.Range("J" & ult1) = Target.Value
MsgBox "debe de terminar de llenar la informacion"
Hoja1.Select
Hoja1.Range("B" & ult1).Select
End If
End If
End Sub

 

Un saludo.

publicado
Hace 4 horas, Toldeman dijo:

Hola, prueba asi.

Hola Juan, gracias por la respuesta.

Esta bastante cercano a lo que necesito, Le hice unos cambios:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Or Target.Column = 11 Then
Dim ult, ult1 As Long
ult = Hoja1.Range("A" & Rows.Count).End(xlUp).Row + 1
ult1 = Hoja1.Range("j" & Rows.Count).End(xlUp).Row + 1
If Target.Column = 1 Then
Hoja1.Range("A" & ult) = Target.Value
End If
If Target.Column = 11 Then
Hoja1.Range("j" & ult1) = Target.Value
Hoja1.Select
MsgBox "debe de terminar de llenar la informacion"
Hoja1.Range("B" & ult1).Select
End If
End If
End Sub

Pero el detalle es que la macro se activa al introducir manualmente valor en la columna K de EQUIPO.

 Como K es una fórmula, la macro debe activarse cuando K sea mayor a cero (0).

Eso seria lo que hay que modifcar. como lo haria?

publicado

Hola.

Prueba este codigo.

	Private Sub Worksheet_Change(ByVal Target As Range)
Dim ult, ult1 As Long
On Error Resume Next
ult = Hoja1.Range("A" & Rows.Count).End(xlUp).Row + 1
ult1 = Hoja1.Range("j" & Rows.Count).End(xlUp).Row + 1
If Target.Column = 1 Then
Hoja1.Range("A" & ult) = Target.Value
End If
If Application.Intersect(Target, Range("J2:J15")) Then
Hoja1.Range("j" & ult1) = Hoja3.Range("K" & Target.Row).Value
Hoja1.Select
MsgBox "debe de terminar de llenar la informacion"
Hoja1.Range("B" & ult1).Select
End If

Basicamente se ejecuta cuando escribes valores en la columna A y la columna J.

Cuando lo hace en la columna j te arroja el valor que tienes en la formula K.

 

Un saludo.

publicado
Hace 6 horas, Toldeman dijo:

Hola.

Prueba este codigo

Hola Juan, gracias por responder.

Probé la nueva macro que me envías, pero no funciona. Te comento lo que hace.

Cada vez que ingreso dato en la fila, desde B hasta J me lanza el mensaje del MSGBOX y la celda activa en INGREDIENTE avanza una fila. Cuando ingreso dato en la columna A de EQUIPO si lo coloca en la primera fila disponible, y como va la celda activa va avanzando como dije antes, finalmente el valor de K lo coloca 8 fila abajo.

publicado

Buenas tardes, perdona no revise la macro.

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ult, ult1 As Long
Dim rng As Range
Set rng = Application.Intersect(Target, Range("J2:J15"))
On Error Resume Next
ult = Hoja1.Range("A" & Rows.Count).End(xlUp).Row + 1
ult1 = Hoja1.Range("j" & Rows.Count).End(xlUp).Row + 1
If Target.Column = 1 Then
Hoja1.Range("A" & ult) = Target.Value
End If
If Not rng Is Nothing Then
Hoja1.Range("j" & ult1) = Hoja3.Range("K" & Target.Row).Value
Hoja1.Select
MsgBox "debe de terminar de llenar la informacion"
Hoja1.Range("B" & ult1).Select
End If
End Sub

 

Prueba ahora.

 

Saludos.

publicado

Hola Juan, como estás.

Cuando ejecuto la macro en el archivo real no corre bien. Las hojas tienen otras macros. parece que chocan. Te parece si te envio el archivo real con las macros existentes??

publicado
En 18/2/2020 at 1:49 , Toldeman dijo:

Mandamelo, lo unico que hasta mañana no puedo mirarlo

Hola Juan buenos días.

Como te comenté la última vez, anexo te envío el archivo real en donde copié el código que me enviaste el cual está muy cercano a la solución esperada pero cuando lo copio en el archivo real hace unos pasos no esperados. Cada hoja tiene unas macros y parece que hay conflicto al ejecutarlos Te los comento detalladamente:

La hoja CONSUMO ENERGÍA tiene 3 macros que se activan por medio de botones. 1) para insertar una fila nueva, la cual es una copia de la fila 5 oculta. 2) para ordenar alfabéticamente la información tomando como referencia la columna A y 3) para eliminar una o varias filas. Adicionalmente tiene una macro en la hoja para impedir el cambio de nombre de la hoja.

La hoja PRECIOS INGREDIENTES tiene 2 macros que se activan por medio de botones. 1) para ordenar alfabéticamente la información tomando como referencia la columna A y 2) para ir a la primera fila disponible. Adicionalmente tiene una macro en la hoja para impedir el cambio de nombre de la hoja y un combo para que la lista desplegable que hay en la hoja pueda buscar de manera predictiva el dato requerido.

Una vez copiado tu código, sucede lo siguiente:

1 Al insertar una nueva fila en CONSUMO ENERGIA, me sale el MSGBOX “debe terminar de llenar la información” 3 veces (que debería aparecer esto en este código), el cuarto MSGBOX es el que tiene estipulado el código “Ingrese detalles del equipo” luego me envía a la hoja PRECIOS INGREDIENTES en A7 (no lo estipula es código de insertar fila). Adicionalmente en la 3 primeras filas disponibles al final de PRECIOS INGREDIENTES, coloca en la columna J el valor cero (0). Luego me voy a CONSUMO ENERGIA a terminar de llenar los detalles, lleno columna A, B, H y cuando lleno J se va a PRECIOS INGREDIENTES. Aquí si colocó el dato de CONSUMO ENERGIA en la primera fila disponible pero el dato de la columna K lo coloca 3 filas mas abajo y la celda activa no queda donde debería. El mensaje que debe terminar de llenar la información si aparece.

2 con el botón de ordenar alfabéticamente aparentemente no hay conflicto.

3 con el botón de eliminar fila me sale el mensaje de “debe terminar de llenar la información” elimina la fila, me da mensaje de que se hizo la eliminación satisfactoriamente pero luego se va a PRECIOS INGREDIENTES y la celda activa queda ubicada en la Columba B mas un poco mas abajo.

Agradecido de antemano por tu ayuda

RECETA AYUDA EXCEL EQUIPO.xlsm

publicado
En 11/2/2020 at 11:04 , Antoni dijo:

Si no te lo solucionan antes, mañana le echo un vistazo y te digo algo.

Hola @Antoni, buenas tardes, aludiendo a tu comentario del pasado 11/2, podrías por favor verlo, en mi penúltimo post está el archivo real, pero la solución brindada Juan tiene unos inconvenientes. Agradecido de antemano por tu valiosa ayuda!!!!

publicado

Buenos dias leonardo, he estado de viaje unos dias y ahora estoy poniendome al dia del trabajo acumulado en la oficina.

Vi tu archivo por encima, cuando tenga un rato lo reviso.

Si quieres para que no tengas el problema de que se dispare la macro al cambiar el valor de la celda se puede hacer con otro boton o con alguno de los que ya tienes.

Ya me dices algo.

Un saludo.

publicado
Hace 41 minutos , Toldeman dijo:

Si quieres para que no tengas el problema de que se dispare la macro al cambiar el valor de la celda se puede hacer con otro boton o con alguno de los que ya tienes.

Hola Juan que tal. También sirve. En este caso que sería manual, sería conveniente un mensaje que indique al usuario que debe seleccionar (que se supone siempre va a ser último el equipo para trasladar la información  a precios ingredientes y que quede la celda activa en B de ingredientes y otro mensaje indicando terminar de llenar los datos. Cuando lo envies lo reviso. Gracias

publicado
Hace 4 horas, Leonardo Briceño dijo:

sería conveniente un mensaje que indique al usuario que debe seleccionar (que se supone siempre va a ser último el equipo para trasladar la información  a precios ingredientes

Este mensaje pudiera aparecer al introducir la información en la última columna RENDIMIENTO.

Archivado

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

×
×
  • 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.