Insertar filas copiadas en funcion de un campo

30/11/2005 - 04:10 por klokmkbock | Informe spam
Hola a todos de nuevo

Me interesaria saber como puedo copiar (si es posible) una fila si un
determinado campo de ese registro contiene un valor numerico e insertarla
en la siguiente fila tantas veces como marque el nº contenido en esa celda
( insertar fila copiada x nº en celda )

Ej:

A B C D
1 COCHE ROJO MADRID
2 MOTO VERDE BARCELONA 3
3 COCHE AZUL PARIS

Me gustaria que al escribir una cifra en una celda del rango D1:Dx (p.ej)
automaticamente me copiara el registro de la fila correspondiente y me lo
insertara a continuacion tantas veces como marque esa celda
A B C D
1 COCHE ROJO MADRID
2 MOTO VERDE BARCELONA 3
2 MOTO VERDE BARCELONA 3
2 MOTO VERDE BARCELONA 3
3 COCHE AZUL PARIS

Gracias en cualquier caso.
Un saludo y hasta pronto.

Preguntas similare

Leer las respuestas

#1 klokmkbock
30/11/2005 - 08:57 | Informe spam
Hola de nuevo.

Disculpad el error. En realidad el ejemplo deberia quedar asi:

A B C D
1 COCHE ROJO MADRID
2 MOTO VERDE BARCELONA 3
3 MOTO VERDE BARCELONA
4 MOTO VERDE BARCELONA
5 MOTO VERDE BARCELONA
6 COCHE AZUL PARIS

Asi seria ideal, aunque supongo que es inevitable que el contenido de
D1:Dx(3 en el ej.) tambien se copie.

Gracias en cualquier caso.
Un saludo y hasta pronto.
Respuesta Responder a este mensaje
#2 klokmkbock
01/12/2005 - 03:42 | Informe spam
Hola y muchas gracias de nuevo.

El codigo va de maravilla.

Yo lo habia intentado haciendo una macro y luego intentando modificar el
codigo pero no daba con ello. ¿Te importaria explicarme aunque fuera
someramente su funcionamiento y componentes?

En cualquier caso muchas gracias.
uUn saludo y hasta pronto.

wrote:

Hola Ivan, prueba con esto y me comentas como te va:
Haces click derecho en la pestaña de la hoja y eliges Ver código, en la


ventana pegas este fragmento:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then _
If IsNumeric(Target) And _
Target > 0 Then _
Range(Target.Offset(1, 0), _
Target.Offset(Target, 0)).EntireRow.Insert _
Shift:=xlDown, _
CopyOrigin:=Target.EntireRow.Copy
Application.CutCopyMode = False
End Sub

Nos comentas los resultados, Chao.



"Ivan" escribió en el mensaje


news:
Hola a todos de nuevo

Me interesaria saber como puedo copiar (si es posible) una fila si un
determinado campo de ese registro contiene un valor numerico e insertarla
en la siguiente fila tantas veces como marque el nº contenido en esa celda
( insertar fila copiada x nº en celda )

Ej:

A B C D
1 COCHE ROJO MADRID
2 MOTO VERDE BARCELONA 3
3 COCHE AZUL PARIS

Me gustaria que al escribir una cifra en una celda del rango D1:Dx (p.ej)
automaticamente me copiara el registro de la fila correspondiente y me lo
insertara a continuacion tantas veces como marque esa celda
A B C D
1 COCHE ROJO MADRID
2 MOTO VERDE BARCELONA 3
2 MOTO VERDE BARCELONA 3
2 MOTO VERDE BARCELONA 3
3 COCHE AZUL PARIS

Gracias en cualquier caso.
Un saludo y hasta pronto.
Respuesta Responder a este mensaje
#3 klokmkbock
02/12/2005 - 03:04 | Informe spam
Hola , muchas gracias otra vez.

Si el código me va a ser útil tu magnifica explicación paso a paso todavía
lo será mas.

Espero no abusar, pero no sabrás (sabréis) algún tutorial, que se pueda
descargar, sobre VBA en Excel, o en su defecto algun libro sobre el tema,
en castellano. Me he bajado varios cursos de VB y de VBA en Acces para
intentar aprender un poco, pero sobre Excel no he conseguido encontrar
nada.

En cualquier caso muchas gracias.

Un saludo y hasta pronto.
Ivan.


wrote:

Hola Ivan, me alegra que te haya servido la macro, el funcionamiento es el


siguiente:
Private Sub Worksheet_Change(ByVal Target As Range) -» Este es un evento de


la hoja de cálculo y ocurre cuando alguna celda de la hoja de cálculo es
modificada por el usuario o por un vínculo externo, el parámetro Target es el
rango modificado. Puede ser más de una celda.
If Target.Column = 4 Then _ -» En esta línea comprobamos que la celda


cambiada esté en la columna número cuatro o sea la columna D
If IsNumeric(Target) And _ -» Aquí, si la celda cambiada tiene un valor


que se pueda interpretar como número y
Target > 0 Then _ -» si el valor de esta celda es mayor


que cero, entonces:
Range(Target.Offset(1, 0), _ -» En el rango que es un fila mas


abajo de la celda cambiada y
Target.Offset(Target, 0)).EntireRow.Insert _ -» que tiene Target


filas de alto, además abarca todo el ancho de la hoja, insertamos
Shift:=xlDown, _ -» hacia abajo
CopyOrigin:=Target.EntireRow.Copy -» Toda la fila de origen.
Application.CutCopyMode = False -» Quitamos el modo de copia de la


aplicación y
End Sub -» salimos.
Espero que esté claro, sino me preguntas cualquier inquietud, Chao.

Respuesta Responder a este mensaje
#4 klokmkbock
07/12/2005 - 03:48 | Informe spam
Si llegas a abrir este mensaje, gracias otra vez.
Respuesta Responder a este mensaje
#5 hector777
27/05/2011 - 16:17 | Informe spam
klokmkbock escribió el 01/12/2005 03:42 :
Hola y muchas gracias de nuevo.

El codigo va de maravilla.

Yo lo habia intentado haciendo una macro y luego intentando modificar el
codigo pero no daba con ello. ¿Te importaria explicarme aunque fuera
someramente su funcionamiento y componentes?

En cualquier caso muchas gracias.
uUn saludo y hasta pronto.

wrote:

Hola Ivan, prueba con esto y me comentas como te va:
Haces click derecho en la pestaña de la hoja y eliges Ver
código, en la



ventana pegas este fragmento:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then _
If IsNumeric(Target) And _
Target > 0 Then _
Range(Target.Offset(1, 0), _
Target.Offset(Target, 0)).EntireRow.Insert _
Shift:=xlDown, _
CopyOrigin:=Target.EntireRow.Copy
Application.CutCopyMode = False
End Sub

Nos comentas los resultados, Chao.



"Ivan" escribió
en el mensaje



news:
Hola a todos de nuevo

Me interesaria saber como puedo copiar (si es posible) una fila si un
determinado campo de ese registro contiene un valor numerico e insertarla
en la siguiente fila tantas veces como marque el nº contenido en esa
celda
( insertar fila copiada x nº en celda )

Ej:

A B C D
1 COCHE ROJO MADRID
2 MOTO VERDE BARCELONA 3
3 COCHE AZUL PARIS

Me gustaria que al escribir una cifra en una celda del rango D1:Dx (p.ej)
automaticamente me copiara el registro de la fila correspondiente y me lo
insertara a continuacion tantas veces como marque esa celda
A B C D
1 COCHE ROJO MADRID
2 MOTO VERDE BARCELONA 3
2 MOTO VERDE BARCELONA 3
2 MOTO VERDE BARCELONA 3
3 COCHE AZUL PARIS

Gracias en cualquier caso.
Un saludo y hasta pronto.




Hola a todos,

Este código lo he estado buscando, sin embargo necesito algo adicional, y es que deseo ingresar todos los valores de la columna 4 de una sola vez, pero el Macro no funciona.

Ej:

A B C D
1 COCHE ROJO MADRID 2
2 MOTO VERDE BARCELONA 3
3 COCHE AZUL PARIS 2

Me gustaria que al escribir una cifra en una celda del rango D1:Dx (p.ej)
automaticamente me copiara el registro de la fila correspondiente y me lo
insertara a continuacion tantas veces como marque esa celda
A B C D
1 COCHE ROJO MADRID 2
1 COCHE ROJO MADRID 2
2 MOTO VERDE BARCELONA 3
2 MOTO VERDE BARCELONA 3
2 MOTO VERDE BARCELONA 3
3 COCHE AZUL PARIS 2
3 COCHE AZUL PARIS 2

Quiero ingresar de una sol vez los tres valores en las celdas de la columna D (2,3,2) pero no corre el macro, debo ir uno por uno, o sea ingresar 2 en fila 1, luego 3 en fila 2 y así luego que ha insertado por cada fila, como hacer para ingresar los datos de inmediato?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida