Transponer automáticamente registros con macros

26/04/2010 - 19:00 por CARLOS CARNERO | Informe spam
Buenas a todos. Un saludo especial a Héctor a quien me dirijo para
solicitarte que por favor me ayudes en mi entrampamiento, ya que estoy
probando distintas variables para descifrar la siguiente sintaxis,
pero lastimosamente no logro el objetivo.

Tengo en un Excel 2007 con dos hojas protegidas y sólo algunas celdas
habilitadas que realizan esta operación: una es “Formulario” que es el
origen y la otra “tabla_detalle” que es el destino: En formulario
quiero copiar ó transponer automáticamente el rango “C4:C15” (C13 y
C14 tiene formato “dd/mm/yyyy” y “dd/mm/yyyy hh:mm” respectivamente),
con el mensaje de confirmación "¿Desea guardar los cambios?" (y luego
del mensaje de confirmación borrarlos), a la otra hoja
“tabla_detalle” B2:M2, siendo B1, C1, D1, autonuméricos, a modo que
cada vez que se registre un expediente en el formulario este se
traslade automáticamente a la otra hoja.

Sub Rectánguloredondeado_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("c4"))
If Consultas = 0 Then Exit Sub
If MsgBox("¿Desea guardar los cambios?", vbYesNo, "Confirmación") vbNo _
Then Exit Sub
With Worksheets("tabla_detalle").Range("a65536").End(xlUp).Offset(1,
5)
.Resize(Consultas, 2).Value = Range("c4").Resize(Consultas).Value
.Offset(, -4).Resize(Consultas, 4).Value = Array( _
Range("C4").Value, Range("C5").Value, Range("C6").Value,
Range("C7").Value)
With .Offset(, -5).Resize(Consultas)
.Value = Application.Max(.Parent.Range("a:a")) + 1
End With
End With
Range("c4:c15").Resize(Consultas).ClearContents
End Sub


Gracias,

Carlos
 

Leer las respuestas

#1 Héctor Miguel
27/04/2010 - 01:54 | Informe spam
hola, Carlos !

1) para la parte de la consulta donde necesitas transponer algunos datos, y luego del mensaje (similar al de tu codigo)
puedes probar con una instruccion +/- como la siguiente:

Worksheets("tabla_detalle").Range("b2:m2").Value = _
Application.Transpose(Worksheets("formulario").Range("c4:c15").Value)

puedes (RE)aplicar los formatos de fecha antes o despues de esta instruccion

2) por lo que respecta a "dirigir" tu consulta a "persona en especial", considera que corres un riesgo...
que no obtengas propuestas de quien se sienta "excluido" de tu peticion de ayuda :-((

saludos,
hector.

__ OP __
Tengo en un Excel 2007 con dos hojas protegidas y solo algunas celdas habilitadas
que realizan esta operacion: una es “Formulario” que es el origen y la otra “tabla_detalle” que es el destino:
En formulario quiero copiar o transponer automaticamente el rango “C4:C15”
(C13 y C14 tiene formato “dd/mm/yyyy” y “dd/mm/yyyy hh:mm” respectivamente)
con el mensaje de confirmacion "Desea guardar los cambios?" (y luego del mensaje de confirmacion borrarlos)
a la otra hoja “tabla_detalle” B2:M2, siendo B1, C1, D1, autonumericos
a modo que cada vez que se registre un expediente en el formulario este se traslade automaticamente a la otra hoja.

Sub Rectanguloredondeado_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("c4"))
If Consultas = 0 Then Exit Sub
If MsgBox("Desea guardar los cambios?", vbYesNo, "Confirmacion") = vbNo _
Then Exit Sub
With Worksheets("tabla_detalle").Range("a65536").End(xlUp).Offset(1, 5)
.Resize(Consultas, 2).Value = Range("c4").Resize(Consultas).Value
.Offset(, -4).Resize(Consultas, 4).Value = Array( _
Range("C4").Value, Range("C5").Value, Range("C6").Value, Range("C7").Value)
With .Offset(, -5).Resize(Consultas)
.Value = Application.Max(.Parent.Range("a:a")) + 1
End With
End With
Range("c4:c15").Resize(Consultas).ClearContents
End Sub

Preguntas similares