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

  1. 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
    1. 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
  2. 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
  3. 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
  4. 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
    1. 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
  5. 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
  6. 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
    1. 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
  7. 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
  8. 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
    1. 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
    2. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      ¿2 decimales obligatorias o máximas?
      0
  9. 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
    1. 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
  10. 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