Rellenar celdas con un TextBox

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

10 respuestas

Paf
 
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
0
dudulleray
 
Buenas noches Paf,

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
0
Paf
 
hola,

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+
0
dudulleray
 
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

 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 
0
eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
 
Hola,

también tienes el objeto refEdit que permite al usuario hacer clic en la celda deseada.
Haz clic derecho en la caja de herramientas para añadir un elemento ausente.

eric
0
dudulleray
 
Hola eriiic,

Gracias por esta respuesta, también vi esta posibilidad pero prefiero el Combobox, no sé si es lo mejor pero funciona bien para mi necesidad.

Gracias de todos modos por haber tomado el tiempo para leer mi post

Buenas tardes

hasta pronto, sin duda

Saludos cordiales Ray
0
Paf
 
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+
0
dudulleray
 
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

 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
0
Paf
 
¿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
0
dudulleray
 
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
0
eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
 
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
0
dudulleray
 
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
0
eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
 
¿2 decimales obligatorias o máximas?
0
dudulleray
 
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
0
eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
 
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
0
dudulleray
 
Hola Eric

Viendo así, una pequeña verificación para saber que solo son números basta, ¿verdad?

gracias por tu respuesta y por la información sobre la coma y el punto

te deseo una buena tarde y gracias por tu ayuda

hasta luego probablemente

Cordialmente Ray
0