Copiar datos de hoja a otra hoja

De antemano muchas gracias por la ayuda,

En userform elegir de combobox (ejm nombre) y con macro o botón comando de hoja1 copiar y pegar en otra hoja2 los datos que cumplan esta elección del combobox con las demás columnas mediante código.

Ejm

En userform1 selecciono de combobox "carlos" luego click en botón comando .

De hoja1:

nombre articulo precio cant

carlos pan 1 5

luis harina 2 3

carlos sal 1 6

Resultado

Hoja2 :

Nombre ; (elegido de combobox)

articulo precio cant

pan 1 5

sal 1 6

total : 11

1 respuesta

Respuesta
1

Esta es la solución, sigue mis pasos:

Nuestro archivo se componede dos hojas: hoja1 y hoja2

En la hoja1 tenemos los datos escritos desde el rango A1. (En nuestro ejemplo el rango ocupa A1:D4)

Tenemos un userform con un combobox y un commandbuttom.

La macro INITIALIZE se encarga de llenar el combo con los nombres sin repeticiones.

Después de seleccionar un nombre y pulsar el botón nos creará en la hoja2, el informe que solicitas.

Si precisas el archivo dime tu mail y te lo mando.

Private Sub CommandButton1_Click()
Sheets("hoja2").UsedRange.Clear
nombre = ComboBox1.Value
Set busca = Sheets("hoja1").Range("a1:a1000").Find(nombre, LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
Range("a1").Copy Destination:=Sheets("hoja2").Range("a1")
Range("b1:d1").Copy Destination:=Sheets("hoja2").Range("a3")
ubica = busca.Address
Sheets("hoja2").Range("b1").Value = busca
libre = Sheets("hoja2").Range("a65000").End(xlUp).Row + 1
Do
Sheets("hoja2").Cells(libre, 1) = busca.Offset(0, 1)
Sheets("hoja2").Cells(libre, 2) = busca.Offset(0, 2)
Sheets("hoja2").Cells(libre, 3) = busca.Offset(0, 3)
libre = libre + 1
Set busca = Sheets("hoja1").Range("a1:a1000").FindNext(busca)
Loop While Not busca Is Nothing And busca.Address <> ubica
End If
Sheets("hoja2").Select
Range("c65000").End(xlUp).Offset(1, 0).Value = Application.WorksheetFunction.Sum(Range("c4:c"& Range("c65000").End(xlUp).Row))
End Sub
Private Sub UserForm_Initialize()
Sheets("hoja1").Select
Range("a2").Select
Do While ActiveCell.Value <> 
If InStr(valor, ActiveCell) = 0 Then
valor = valor & "," & ActiveCell
End If
ActiveCell.Offset(1, 0).Select
Loop
valor = Mid(valor, 2, Len(valor) - 1)
valor = Split(valor, "," )
For p = 0 To UBound(valor)
ComboBox1.AddItem valor(p)
Next
End Sub

Recuerda finalizar y puntuar

Primero agradecerte por tu tiempo, el código para el llenado del combo ya lo tengo, el problema es al ejecutar click al botón comando se traba la ejecución en la linea Range("c65000").End(xlUp).Offset(1, 0).Value = Application.WorksheetFunction.Sum(Range("c4:c"& Range("c65000").End(xlUp).Row)) parece que no reconoce esta parte final : .End(xlup),row)))

No sería mas fácil usar filtro con criterio (variable:nombre del combobox seleccionado) y copie solamente estos que cumplen (nombre elegido) de la hoja1 a hoja2 .

Un millón de gracias, espero tu respuesta

En mi caso funciona perfectamente.

Aquí te dejo el archivo para que lo veas

http://es.tbox.ws/28s1cq

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas