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

Résolu
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

6 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
Saurais-tu comment émettre un petit beep après avoir cliqué sur "Save & Add new one" ?
...Bon appétit
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
bonjour,

sub commandbutton1_click

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

end sub
0
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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
melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
Je place un fichier exemple à l'adresse suivante pour être plus précis :
https://www.cjoint.com/c/CKAmVTCfQte
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
Ipalgo Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Polux31,

La solution est parfaite. :)

Résolu !
0