Rellenar celdas con un TextBox
dudulleray
-
dudulleray -
dudulleray -
Hola a todos, foro, buen día
Configuración: Windows 7 / Excel 2007
Tengo una hoja llamada Feuil1 que me sirve como “base de datos” y un UserForm1 con un TextBox1
Me gustaría que con el TextBox1, al introducir solo números y coma, pueda rellenar una de las celdas que se encuentra en mi Feuil1 en la zona E21:P21
¿Cómo, por favor, seleccionar ANTERIORMENTE una de las celdas de la zona E21:P21 donde se copiará lo que voy a escribir en el TextBox1?
Ej.: Selecciono G21, escribo 125 en el TextBox1 y lo transfiero a la celda G21
PD: había pensado hacer la selección con un combobox pero no sé hacer el código
Gracias a todos y por vuestro tiempo, abierto a todas las ideas
Que tengan buena tarde a todos
Saluditos
Configuración: Windows 7 / Excel 2007
Tengo una hoja llamada Feuil1 que me sirve como “base de datos” y un UserForm1 con un TextBox1
Me gustaría que con el TextBox1, al introducir solo números y coma, pueda rellenar una de las celdas que se encuentra en mi Feuil1 en la zona E21:P21
¿Cómo, por favor, seleccionar ANTERIORMENTE una de las celdas de la zona E21:P21 donde se copiará lo que voy a escribir en el TextBox1?
Ej.: Selecciono G21, escribo 125 en el TextBox1 y lo transfiero a la celda G21
PD: había pensado hacer la selección con un combobox pero no sé hacer el código
Gracias a todos y por vuestro tiempo, abierto a todas las ideas
Que tengan buena tarde a todos
Saluditos
10 respuestas
hola
varias soluciones:
-Seleccionar la celda antes de activar el UserForm: la más simple de implementar
-una ventana de diálogo (inputbox) donde el usuario introducirá la celda: inconveniente hay que gestionar el formato y la validez de las referencias introducidas
-como dijiste una combobox que contiene la elección de las celdas: simple (relativamente) y seguro.
- y tal vez otras a las que no he pensado ....;
En función de la elección, ¡solo queda hacerlo!
Hasta pronto
varias soluciones:
-Seleccionar la celda antes de activar el UserForm: la más simple de implementar
-una ventana de diálogo (inputbox) donde el usuario introducirá la celda: inconveniente hay que gestionar el formato y la validez de las referencias introducidas
-como dijiste una combobox que contiene la elección de las celdas: simple (relativamente) y seguro.
- y tal vez otras a las que no he pensado ....;
En función de la elección, ¡solo queda hacerlo!
Hasta pronto
hola,
en la Sub Initialize() de la Userform:
para evitar agregar las referencias de celda una por una, hacemos un bucle:
luego crear un CommandButton y en su Sub Click():
ajustar al nombre de la Combobox.
Bonne suite ou A+
en la Sub Initialize() de la Userform:
para evitar agregar las referencias de celda una por una, hacemos un bucle:
For i = 1 To 12 ComboBox1.AddItem Chr(68 + i) & 21 ' crea de E21 a P21 Next
luego crear un CommandButton y en su Sub Click():
If ComboBox1.Value <> "" Then Range(ComboBox1.Value) = TextBox1.Value Else Msgbox "Vous devez choisir une référence de cellule ...." End If
ajustar al nombre de la Combobox.
Bonne suite ou A+
Hola Paf, foro
Gracias por tu respuesta y por el pequeño código, es muy amable de tu parte, he probado y me aparece correctamente las referencias de las celdas en el combobox2, que puedo seleccionar OK
después no logro colocar el valor introducido en el TextBox2 en la
celda elegida.
Te agradezco por tu ayuda, que tengas un buen día esperando el sol.
Atentamente Ray
SVP, Si tienes tiempo de corregirme, no yo (LOL) el código hihihihi, gracias
Gracias por tu respuesta y por el pequeño código, es muy amable de tu parte, he probado y me aparece correctamente las referencias de las celdas en el combobox2, que puedo seleccionar OK
después no logro colocar el valor introducido en el TextBox2 en la
celda elegida.
Te agradezco por tu ayuda, que tengas un buen día esperando el sol.
Atentamente Ray
SVP, Si tienes tiempo de corregirme, no yo (LOL) el código hihihihi, gracias
Private Sub Commandbutton5_Click() If ComboBox2.Value <> "" Then Range(ComboBox2.Value) = TextBox2.Value Else MsgBox "Choisir une référence de cellule." End If End Sub '*** Set Ws = Sheets("Compte") est le nom de ma Feuil1 Private Sub TextBox2_Change() Ws.Cells(21, ComboBox2.Value) = TextBox2.Value ' Erreur a cette ligne End Sub
Hola,
Seguramente hay detalles que no especificaste al principio. Lo que se desprende del primer post: una hoja, un userform, una combobox. Se eligen las referencias de celda en la combobox y se escribe en la misma hoja, en la celda elegida, lo que acabas de ingresar en el textbox.
Si es así, el código propuesto funciona si se usa en un commandbutton, como presumiblemente lo hiciste.
Querer lanzar la escritura en la celda elegida desde la Sub TextBox2_Change() no es buena idea, ya que se dispara con la primera carácter ingresado (de ahí la idea de activar el código mediante un botón tras la escritura en el textbox).
Por otra parte, en Ws.Cells(21, ComboBox2.Value), ComboBox2.Value contiene E21 o F21 o G21 o …, es como si escribiras: Ws.Cells(21, E21). La sintaxis no es correcta.
El principio es, por lo tanto, el dado en mi post anterior con las modificaciones necesarias:
Private Sub Commandbutton5_Click()
If ComboBox2.Value <> "" Then
Sheets("Compte").Range(ComboBox2.Value) = TextBox2.Value
Else
MsgBox "Choisir une référence de cellule."
End If
End Sub
A+
Hola Paf,
Gracias por la modificación y por tus explicaciones no menos enriquecedoras, entonces prueba concluyente todo funciona bien.
Otra pequeña solicitud por favor para afinar el código si me haces el favor
tengo varias Textboxs del 1 al 5 por ahora.
me gustaría por favor hacer que las entradas en esas TextBoxs sean solo números con el punto o la coma.
¿Te sería posible (si tienes tiempo disponible) hacer un bucle de las 5 TextBoxs para controlar que realmente solo se introducen números?
Para evitar códigos repetitivos en cada TextBoxs
Ej: una sub que se llamaría cuando haga falta una prueba
Te agradezco mucho por la ayuda, además he aprendido un par de cosas, incluido este código que no conocía ni había visto en la red
me será muy práctico en el futuro
Buenas tardes a ti
Hasta luego Ray
Gracias por la modificación y por tus explicaciones no menos enriquecedoras, entonces prueba concluyente todo funciona bien.
Otra pequeña solicitud por favor para afinar el código si me haces el favor
tengo varias Textboxs del 1 al 5 por ahora.
me gustaría por favor hacer que las entradas en esas TextBoxs sean solo números con el punto o la coma.
¿Te sería posible (si tienes tiempo disponible) hacer un bucle de las 5 TextBoxs para controlar que realmente solo se introducen números?
Para evitar códigos repetitivos en cada TextBoxs
Ej: una sub que se llamaría cuando haga falta una prueba
Te agradezco mucho por la ayuda, además he aprendido un par de cosas, incluido este código que no conocía ni había visto en la red
ComboBox1.AddItem Chr(68 + i) & 21 ' crea de E21 a P21
me será muy práctico en el futuro
Buenas tardes a ti
Hasta luego Ray
¿Sería posible (si tienes tiempo disponible) hacer un bucle de los 5 TextBox para controlar que solo se introduzcan números? Con el fin de evitar códigos repetitivos en cada TextBox.
Para evitar tener que escribir el mismo código en cada textbox, es mucho menos sencillo.
Te aconsejo que veas las ayudas de lermite222 en los siguientes enlaces:
http://www.commentcamarche.net/faq/12862-vba-ecrire-lire-une-serie-de-textbox-en-une-seule-sub
http://www.commentcamarche.net/faq/31279-vba-ajouter-des-controles-dynamiquement-dans-un-userform
buena continuación y buen progreso
RE
He mirado los enlaces que me enviaste, efectivamente no es tan sencillo
pensaba en una pequeña macro Sub que se llame cuando estemos en un Textbox y que
controle si solo se ingresan números.
Bueno, ya está
te agradezco haber mostrado interés por mis pequeños problemas, es muy amable
y gracias a ti mi archivo avanza poco a poco.
Hasta luego, sin duda, y otra vez gracias
Cordialmente Raymond
He mirado los enlaces que me enviaste, efectivamente no es tan sencillo
pensaba en una pequeña macro Sub que se llame cuando estemos en un Textbox y que
controle si solo se ingresan números.
Bueno, ya está
te agradezco haber mostrado interés por mis pequeños problemas, es muy amable
y gracias a ti mi archivo avanza poco a poco.
Hasta luego, sin duda, y otra vez gracias
Cordialmente Raymond
Hola,
Más simple: puedes controlar la entrada en tiempo real y, si es numérica, conservarla en la etiqueta para restituirla; si la entrada no es numérica, tras un mensaje de alerta.
Private Sub TextBox1_Change() If IsNumeric(TextBox1) Or TextBox1 = "" Then Tag = TextBox1 Else MsgBox ("valor numérico únicamente") TextBox1 = Tag End If End Sub
También puedes hacer un control más fino: máximo 2 decimales, límites mínimo y máximo, etc.
eric
Hola Eric
Gracias por tu respuesta y por el pequeño código, funciona; falta afinarlo un poco.
Me dices esto: "Puedes hacer un control más fino también: 2 decimales máximo, límites mínimo y máximo, etc."
¿Podrías por favor hacerme un ejemplo de estas posibilidades? me interesa porque estoy en pleno aprendizaje; dos decimales me bastan, así como el punto o la coma.
Cuando tengas un momento, claro. Por mi parte voy a comer ahora, buen provecho para ti.
Hasta luego y de nuevo gracias por tu ayuda.
Saludos cordiales, Ray
Hola Eric
Es para mi contabilidad personal, así que dos decimales como máximo es más que suficiente para mí
Por cierto, no es fácil usar coma o punto, porque no sé por qué a veces funciona la coma o el punto
Para información, por ahora tengo 5 TextBox en las que solo ingreso números
Gracias por tu ayuda, buen día
Saluditos, Ray
Es para mi contabilidad personal, así que dos decimales como máximo es más que suficiente para mí
Por cierto, no es fácil usar coma o punto, porque no sé por qué a veces funciona la coma o el punto
Para información, por ahora tengo 5 TextBox en las que solo ingreso números
Gracias por tu ayuda, buen día
Saluditos, Ray
Hola,
Es para mi contabilidad personal
¿Crees que realmente vale la pena? Yo no lo creo...
Siempre miras tu entrada antes de validarla, y los casos en los que tendrás 3 decimales deben ocurrir 1 vez cada 30 años...
Vale la pena para controlar una referencia tipo 3 letras-2 números-1 letra, pero ahí sería añadir código innecesario.
Por otro lado, la coma o el punto no es fácil porque no sé por qué a veces funciona la coma o el punto
Depende de la máquina, de su configuración predeterminada de separador decimal en el panel de control.
eric
Es para mi contabilidad personal
¿Crees que realmente vale la pena? Yo no lo creo...
Siempre miras tu entrada antes de validarla, y los casos en los que tendrás 3 decimales deben ocurrir 1 vez cada 30 años...
Vale la pena para controlar una referencia tipo 3 letras-2 números-1 letra, pero ahí sería añadir código innecesario.
Por otro lado, la coma o el punto no es fácil porque no sé por qué a veces funciona la coma o el punto
Depende de la máquina, de su configuración predeterminada de separador decimal en el panel de control.
eric
Gracias por tu respuesta, efectivamente he pensado en (inputbox) no mucho por.
Si quieres ayudarme por favor con el código y si tienes tiempo, el Combobox
me parece bastante bien
pensaba poner los valores de las celdas de E21 a C21 en el combo
luego seleccionar la celda de destino, después pensaba mediante
un TextBox introducir el valor Ej 125,75 € enter y transferir a través de la celda preseleccionada
Lo veo así, pero lo dejo a un lado sin duda LOL
Te digo nos vemos más tarde y gracias a ti
Saludos cordiales