Copiar formulario a otra hoja

16 envíos / 0 nuevos
Último envío
jesusmarpla
Imagen de jesusmarpla
Offline
última acción: Hace 9 años 6 meses
alta: 04/04/2012 - 20:11
Puntos: 95
Copiar formulario a otra hoja

Hola
Primeramente agradecer a todos los que nos ayudan con códigos y sobre todo con acertadas respuestas ya que con esa ayuda puede hacer muchas mejoras a mi trabajo, pero ahora tengo una consulta ,

Tengo un formulario de registro de boletos y uso el siguiente código en el comandabutton1 y asi pasar los datos de mi formulario a la hoja que necesito

Este es el codigo:

Private Sub CommandButton1_Click(): On Error GoTo HayErrores
If Len(Trim(TextBox1)) = 0 Or _
Len(Trim(ComboBox1)) = 0 Or _
Len(Trim(ComboBox3)) = 0 Or _
Len(Trim(TextBox2)) = 0 Then
GoTo HayErrores ' sale de la sub rutina antes de guardar
End If
'En caso de error, que continúe
On Error Resume Next
por = Hoja2.Range("A" & Rows.Count).End(xlUp).Row + 1
Hoja2.Cells(por, 1).Value = TextBox2.Text 'T/C
Hoja2.Cells(por, 2).Value = ComboBox1.Text 'FP
Hoja2.Cells(por, 3).Value = ComboBox2.Text 'CTE
Hoja2.Cells(por, 4).Value = CDate(TextBox1.Text) 'FECHA
Hoja2.Cells(por, 5).Value = ComboBox3.Text 'LA
Hoja2.Cells(por, 6).Value = TextBox3.Text 'COD
Hoja2.Cells(por, 7).Value = TextBox4.Text 'BOLETO
Hoja2.Cells(por, 8).Value = TextBox5.Text 'RUTA1
Hoja2.Cells(por, 9).Value = TextBox11.Text 'RUTA2
Hoja2.Cells(por, 10).Value = TextBox12.Text 'RUTA3
Hoja2.Cells(por, 11).Value = TextBox13.Text 'RUTA4
Hoja2.Cells(por, 12).Value = TextBox14.Text 'RUTA5
Hoja2.Cells(por, 13).Value = TextBox6.Text 'NOMBRE PAX
Hoja2.Cells(por, 19).Value = CDbl(TextBox7.Text) 'NETO BS
Hoja2.Cells(por, 20).Value = CDbl(TextBox8.Text) 'NETO $US
Hoja2.Cells(por, 14).Value = CDbl(TextBox15.Text) 'BS
Hoja2.Cells(por, 15).Value = CDbl(TextBox16.Text) '$US
Hoja2.Cells(por, 16).Value = ComboBox4.Text 'COU
Hoja2.Cells(por, 17).Value = TextBox9.Text 'SOL
Hoja2.Cells(por, 18).Value = TextBox10.Text 'OBS

ComboBox1.SetFocus
Exit Sub
HayErrores:
MsgBox "Revisar FECHA, TIPO DE CAMBIO , FORMA DE PAGO y LINEA AÉREA por favor.."
Exit Sub
End Sub

Con el siguiente codigo carga el combobox2

Public Buscarhoja1 As String
Public Buscarhoja2 As String

Private Sub ComboBox2_Enter()
ComboBox2.BackColor = vbYellow
Buscarhoja1 = "Buscarhoja1.xls"
Buscarhoja2 = "Buscarhoja2.xls"
'En caso de error, que continúe
On Error Resume Next
'Esto se producirá cuando nos
'situemos sobre el combobox1
'antes quitaremos todo lo que haya en el combobox1
'ComboBox1.Clear
'Vamos a llenar dinámicamente el combobox
'con los nombres de las hojas
'For I = 1 To Sheets.Count
'Añadimos los nombres de las hojas al combobox
'ComboBox1.AddItem Sheets(I).Name
'ahora sigo con el 2do libro
For I = 1 To Workbooks(Buscarhoja1).Sheets.Count
'Añadimos los nombres de las hojas al combobox
ComboBox2.AddItem Workbooks(Buscarhoja1).Sheets(I).Name
Next
'ahora sigo con el 2do libro
For I = 1 To Workbooks(Buscarhoja2).Sheets.Count
'Añadimos los nombres de las hojas al combobox
ComboBox2.AddItem Workbooks(Buscarhoja2).Sheets(I).Name
Next
End Sub

Lo que quiero que me ayuden, es hacer que copie los datos del formulario a la hoja con el nombre seleccinado en el combobox2. o sea estoy haciendo una base datos personalizada para cada cliente, es por eso que los librosuno y dos tienen esa informacion, y desde un libro principla que se llama PRUEBA mandar a la hoja con el nombre los datos del formulario

Gracias

JEsus

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 45 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Copiar formulario a otra hoja

veo el problema de que en el combo sólo tienes los nombres de las hojas, pero no el nombre del libro. podría haber incluso dos hojas que se llamen igual, una en cada libro.

es decir, que lo que eliges en el combo es sólo el nombre de la hoja y con eso no es suficiente.

dos ideas:

primera opción: utilizar un combo adicional en el que se elija la hoja y según el valor elegido recargar el combo de los nombres de las hojas (sólo con las hojas del libro elegido). esto tiene el inconveniente de que el usuario debe saber en qué libro está la hoja, que no sé si es algo que sepa o que deba saber.

segunda opción: definir el combo con dos columnas, una para el nombre de la hoja que es lo que se puede mostrar y se vería igual que ahora, y otra columna en la que puedes guardar el nombre del libro. así al elegir un valor en el combo estás eligiendo tanto el nombre del libro como el de la hoja. deberás emplear COLUMN para referirte al valor de cada columna en el combo.

------
Ya sé Excel, pero necesito más ahora en pdf

 

------
Ya sé Excel, pero necesito más.

jesusmarpla
Imagen de jesusmarpla
Offline
última acción: Hace 9 años 6 meses
alta: 04/04/2012 - 20:11
Puntos: 95
Re: Copiar formulario a otra hoja

Gracias por responder, me inclino por la opcion primera, estoy adicionando un nuevo combobox, pero ahora como hago para que copie los datos del formulario a la hoja elegida al apretar el comandbutonn?

 

gracias

Jesus

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 45 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Copiar formulario a otra hoja

depende de cómo sea tu hoja de destino. la idea es la misma que cuando asignas valores a las celdas. 

por ejemplo:

workbooks(librodestino).worksheets(hojadedestino).range("a1").value=textbox1.value

mira este envío anterior del foro sobre cómo pasar datos de un formulario a una hoja consolidado donde se guardaban todos los datos.

------
Ya sé Excel, pero necesito más ahora en pdf

 

------
Ya sé Excel, pero necesito más.

jesusmarpla
Imagen de jesusmarpla
Offline
última acción: Hace 9 años 6 meses
alta: 04/04/2012 - 20:11
Puntos: 95
Re: Copiar formulario a otra hoja

Gracias por responder, pero sigo confundido, mira trabajo con tres libros de excel diferentes uno con el nombre PRUEBA ( es este esta el formulario) otro libro con el nombre de buscarhoja1 y otro con buscarhoja2, el formulario pasa bien a la hoja2 del primer libro no hay problema , es el codigo que escribi arriba que funciona a la perfección, mi problema es pasar a los otros libros, el libro con el nombre buscarhoja1 tiene nombres de clientes que empiezan con la letra A a la M en el libro3 que esta con el nombre buscarhoja2 estan los clientes de la letra N a la Z. No se si hay alguna forma de que pueda activar el libro necesario y pasar los datos del formulario, a la hoja seleccionada, en el link que me das solo trabaja con un libro y yo estoy trabajando con tres, ayuda por favor

Gracias

Jesus Martinez

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 45 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Copiar formulario a otra hoja

Hola Jesús:

da igual con cuántos libros trabajes, lo único es identificar correctamente el libro y la hoja donde quieres copiar los datos.

En tu código de ejemplo, en CommandButton1_Click, utilizas Hoja2 que supongo que es una variable que en algún punto de tu código se asigna a la hoja donde se copiarán los datos. ¿dónde estableces Hoja2? 

Bastaría con que antes de pasar los datos, establecieses la variable Hoja2 a la hoja de destino del libro 1 o del libro 2 según sea el caso, por ejemplo (tomando el nombre de la hoja del combobox2

Set Hoja2 = workbooks("buscarhoja2").worksheets(combobox2.value)

te vuelvo a decir, ¿dónde estableces Hoja2?¿cómo lo haces?

si como dices el elegir un libro u otro depende de la primera letra del cliente, puedes utilizar la función left para obtener esa primera letra y según el caso elegir un libro u otro.

claro, que si la hoja de destino depende del nombre del cliente ¿para qué ponerlo en un combo?

------

Ya sé Excel, pero necesito más ahora en pdf

 

------
Ya sé Excel, pero necesito más.

jesusmarpla
Imagen de jesusmarpla
Offline
última acción: Hace 9 años 6 meses
alta: 04/04/2012 - 20:11
Puntos: 95
Re: Copiar formulario a otra hoja

Gracias por responder, bueno la variable hoja2 es directo que lo escribo

Private Sub CommandButton1_Click(): On Error GoTo HayErrores
If Len(Trim(TextBox1)) = 0 Or _
   Len(Trim(ComboBox1)) = 0 Or _
   Len(Trim(ComboBox3)) = 0 Or _
   Len(Trim(TextBox2)) = 0 Then
   GoTo HayErrores ' sale de la sub rutina antes de guardar
End If
'En caso de error, que continúe
On Error Resume Next
x = Hoja2.Range("A" & Rows.Count).End(xlUp).Row + 1
Hoja2.Cells(x, 1).Value = TextBox2.Text 'T/C
Hoja2.Cells(x, 2).Value = ComboBox1.Text 'FP
Hoja2.Cells(x, 3).Value = ComboBox2.Text 'CTE
Hoja2.Cells(x, 4).Value = CDate(TextBox1.Text) 'FECHA
Hoja2.Cells(x, 5).Value = ComboBox3.Text 'LA
Hoja2.Cells(x, 6).Value = TextBox3.Text 'COD
Hoja2.Cells(x, 7).Value = TextBox4.Text 'BOLETO
Hoja2.Cells(x, 8).Value = TextBox5.Text 'RUTA1
Hoja2.Cells(x, 9).Value = TextBox11.Text 'RUTA2
Hoja2.Cells(x, 10).Value = TextBox12.Text 'RUTA3
Hoja2.Cells(x, 11).Value = TextBox13.Text 'RUTA4
Hoja2.Cells(x, 12).Value = TextBox14.Text 'RUTA5
Hoja2.Cells(x, 13).Value = TextBox6.Text 'NOMBRE PAX
Hoja2.Cells(x, 19).Value = CDbl(TextBox7.Text)  'NETO BS
Hoja2.Cells(x, 20).Value = CDbl(TextBox8.Text) 'NETO $US
Hoja2.Cells(x, 14).Value = CDbl(TextBox15.Text)  'BS
Hoja2.Cells(x, 15).Value = CDbl(TextBox16.Text) '$US
Hoja2.Cells(x, 16).Value = ComboBox4.Text 'COU
Hoja2.Cells(x, 17).Value = TextBox9.Text 'SOL
Hoja2.Cells(x, 18).Value = TextBox10.Text 'OBS
ComboBox1 = ""
ComboBox2 = ""
ComboBox3 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox11 = ""
TextBox12 = ""
TextBox13 = ""
TextBox14 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox15 = ""
TextBox16 = ""
ComboBox4 = ""
TextBox9 = ""
TextBox10 = ""
ComboBox1.SetFocus
Exit Sub
HayErrores:
   MsgBox "Revisar FECHA, TIPO DE CAMBIO , FORMA DE PAGO y LINEA AEREA por favor.."
   Exit Sub
End Sub

Funciona bien, porque esta en el mismo libro, pero para trabajar con otro libro no me funciona

Gracias

 

 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 45 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Copiar formulario a otra hoja

vale,

para referirte a otro libro tienes que emplear el nombre del libro y de la hoja, por ejemplo, para el libro que has definido en buscarhoja2:

with workbooks(buscarhoja2).worksheets("nombre de tu hoja")
  .Cells(x, 1).Value = TextBox2.Text 'T/C
  ...

endwith 

------
Ya sé Excel, pero necesito más ahora en pdf

 

------
Ya sé Excel, pero necesito más.

jesusmarpla
Imagen de jesusmarpla
Offline
última acción: Hace 9 años 6 meses
alta: 04/04/2012 - 20:11
Puntos: 95
Re: Copiar formulario a otra hoja

Estimado Pacomegia, gracias por responder, pero uso dos libros diferentes, y eso es lo que quiero como ir  al libro y la hoja, pero como manejo dos libros a parte del que uso originalmente, ahi es mi confusión, sera que te mando el archivo comprimido para que me orientes por favor gracias

un abrazo

 

Jesus

PD. tendria que mandarte a tu correo porque es mas de 1 MB para subirlo al foro

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 45 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Copiar formulario a otra hoja

He aumentado el tamaño máximo de archivo en la configuración.

En cualquier caso, elimina los datos confidenciales y deja sólo la parte donde tengas el problema, para que el archivo ocupe lo menos posible.

 

------
Ya sé Excel, pero necesito más.

jesusmarpla
Imagen de jesusmarpla
Offline
última acción: Hace 9 años 6 meses
alta: 04/04/2012 - 20:11
Puntos: 95
Re: Copiar formulario a otra hoja

Ok subo el archivo comprimido, primero tienes que entrar al libro PRUEBA la contraseña es JMP y abre el libro buscarhoja1 y buscarhoja2 ; en el libro prueba le das click al boton para registrar boleto, como veras en el combobox2 se carga con los nombres de los libros buscar hoja 1 y 2 y lo que quisiera que me ayudes es una vez llenado el formulario de registro de boleto al darle click en registrar , ademas de copiar a la hoja2 del mismo libro (esto funciona bien tengo la macro ) poder buscar la hoja seleccionada segun el combobox, situarme en la celda A7 buscar la ultima celda vacia, aumentar un fila y despues volver a la celda A7 ir a la ultima fila vacia , copiar los datos del formulario, solo lo que se necesita registrar en el kardex del cliente , y estirar la formula que esta en la celda M  (bueno esta macro de estirar la formula ya lo tengo por si acaso), y grabar.

Desde ya muy agradecido por tu tiempo y paciencia

Un abrazo

Jesus

PD. Los archivos los guardas en una sola carpeta por favor para poder funcionar la macro de autopen 

AdjuntoTamaño
Office spreadsheet icon prueba.xls504.5 KB
Office spreadsheet icon buscarhoja1.xls33.5 KB
Office spreadsheet icon buscarhoja2.xls33.5 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 45 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Copiar formulario a otra hoja

además de copiar en Hoja2...

antes de borrar los datos del formulario vamos a pasarlos al otro libro

 

Dim HojaDestino As Worksheet 'variable auxiliar para referirnos a la hoja de destino

Select Case Left(Me.ComboBox2.Value, 1)

' elegimos el libro de destino según la primera letra de lo que haya en el combobox2

 Case "a" To "n", "A" To "N"

    Set HojaDestino = Workbooks(Buscarhoja1).Worksheets(Me.ComboBox2.Value)

 Case Else

    Set HojaDestino = Workbooks(Buscarhoja2).Worksheets(Me.ComboBox2.Value)

End Select

' ahora hay que hacer lo mismo que con Hoja2, pero con hojadestino (con la posición de las celdas qeu corresponda)

'por ejemplo

x = HojaDestino.Range("A6").End(xlDown).Row + 1

HojaDestino.Cells(x, 1).Value = CDate(TextBox1.Text) 'FECHA

'...

' al terminar borramos el objeto

Set HojaDestino = Nothing

' y ahora se puede borrar el formulario

ComboBox1 = ""

...

 

------
Ya sé Excel, pero necesito más.

jesusmarpla
Imagen de jesusmarpla
Offline
última acción: Hace 9 años 6 meses
alta: 04/04/2012 - 20:11
Puntos: 95
Re: Copiar formulario a otra hoja

Gracias por responder, solo que donde pongo el codigo? no se si me lo puedes subir el archivo modificado?

Gracias

 

Jesus

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 8 horas 45 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Copiar formulario a otra hoja

hay que ponerlo después de copiar los datos en Hoja2,

y justo antes de borrar el formulario

 

entre

Hoja2.Cells(x, 18).Value = TextBox10.Text 'OBS

y

ComboBox1 = ""


sólo he puesto un dato de ejemplo, tendrás que particularizar para todos los datos qeu quieras copiar a tu hoja de destino.

 

------
Ya sé Excel, pero necesito más.

jesusmarpla
Imagen de jesusmarpla
Offline
última acción: Hace 9 años 6 meses
alta: 04/04/2012 - 20:11
Puntos: 95
Re: Copiar formulario a otra hoja

Ahora quedo clarisimo, muy agradecido

 

Un abrazo

Jesus

Yari (no verificado)
Imagen de Yari
Actualizar datos

[comentario movido a tema nuevo en el foro https://www.necesitomas.com/actualizar-datos-0]