Remplir une cellule grace à 3 textbox : ligne, colone, valeur

Résolu
Ipalgo Messages postés 53 Statut Membre -  
Ipalgo Messages postés 53 Statut Membre -
Bonjour la communauté,

Situation :
1feuille excel, 1 userform, 3textbox, 1commandbutton et... une grande base de donnée... (exact, l'erreur à ne pas commettre ;) )

Quel serait le code VBA pour, au clic du commandbutton1 placé dans l'UserForm, activer la cellule à l'intersection ligne="TextBox1"/colonne="TextBox2" et la remplir avec la valeur de la "Textbox3" ?

A vous lire,
iPA

6 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Voilà qui doit satisfaire la demande ...

    Private Sub CommandButton1_Click()
    Dim DernCol As Long
    Dim i As Long
    
    If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then
        Msgbox "Vous devez renseigner les 3 champs", vbExclamation, "Saisie Obligatoire"
        Exit Sub
    End If
    
    DernCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    For i = 1 To DernCol
        If Cells(1, i) = CLng(TextBox1.Text) Then
            Cells(CLng(TextBox2.Text), i) = TextBox3.Text
            TextBox2.Text = ""
            TextBox3.Text = ""
            Exit Sub
        End If
    Next i
    
    
    End Sub

    1
    1. Ipalgo Messages postés 53 Statut Membre
       
      Polux, j'ai rajouté un "+ 1" dans le code qui cible la cellule ; comme ça l'écriture se fait à la bonne ligne.

      Cells(CLng(TextBox2.Text) + 1, i) = TextBox3.Text
      0
    2. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Je n'ai pas eu besoin d'ajouter + 1 dans mes tests pour écrire sur la ligne désirée !!!

      Lorsque j'ai mis la ligne 10 pour l'année 2014 dans le UF, j'avais bien en ligne 10 dans la colonne nommée "2014" la donnée du textbox3 ... et non pas à la ligne 9 comme il semblerait que ça se produit chez toi !!!
      0
    3. Ipalgo Messages postés 53 Statut Membre
       
      Ok, mais ça veut dire que si tu mets la ligne 1 pour l'année 2014 dans l'UF, tu écris en ligne 1 du tableur.. et tu effaces l'intitulé 2014 de la colonne non ?

      Chez moi la ligne 1 du tableur est réservée aux intitulés des colonnes, donc mon 1er n° client correspond à la 2ème ligne du tableur, d'où le +1.
      0
    4. Ipalgo Messages postés 53 Statut Membre
       
      Saurais-tu comment émettre un petit beep après avoir cliqué sur "Save & Add new one" ?
      ...Bon appétit
      0
    5. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Chez moi la ligne 1 du tableur est réservée aux intitulés des colonnes, donc mon 1er n° client correspond à la 2ème ligne du tableur

      Chez toi !!! ça tu ne l'as pas précisé, parce que chez moi, celui qui utilise ton UF, comme je l'ai fait, sait quelle ligne doit être renseignée et non quel client ... de ce fait, je ne mettrais jamais la ligne 1 dans le textbox2.

      Je ne sais pas si la commande Beep fonctionne en VBA.
      0
  2. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    sub commandbutton1_click

    cells(textbox1.value,textbox2.value) = textbox3.value

    end sub
    0
  3. Ipalgo Messages postés 53 Statut Membre
     
    Merci Mélanie,

    j'ai essayé la solution ce matin ; un message d'erreur apparait : "erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet "

    En lisant le vba on voit que les valeur des textbox sont bien réutilisés mais elles sont entre guillemets "". Peut être que la syntaxe Cells(1,2) ne convient pas ?

    En passant le curseur au dessus de la ligne de débogage j'ai l'impression que ça donne :
    cells("2015","2") = "6"
    0
    1. melanie1324 Messages postés 1561 Statut Membre 156
       
      Ok je m'en doutais un peu, modifie comme suis :

      sub commandbutton1_click

      cells(textbox1.value +1-1,textbox2.value+1-1) = textbox3.value+1-1

      end sub
      0
    2. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Parce que le retour du contenu d'un TextBox est de type string ...

      Faire:

      Cells(CLng(TextBox1.Text), CLng(TextBox2.Text)) = TextBox3.Text
      0
    3. Ipalgo Messages postés 53 Statut Membre
       
      J'ai essayé vos deux modifications, aucun message d'erreur n'apparait ce qui est plutôt bon signe, mais la case que je pense désigner ne se rempli pas. Je vous envoie un fichier exemple.
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Polux31 Messages postés 7219 Statut Membre 1 204
     
    En fait, ça fonctionne ... mais le problème exposé ne correspond pas à ce qu'il y a dans le fichier !!!

    l'intersection ligne="TextBox1"/colonne="TextBox2"

    Ca c'est que Mélanie et moi avons fait ...

    Mais en fait, il faut renseigner l'année et non la colonne ...
    0
  6. Ipalgo Messages postés 53 Statut Membre
     
    Merci Polux31,

    La solution est parfaite. :)

    Résolu !
    0