[Catégorie modifiée VB6 --> VBA] vba copier les valeurs de textbox dans cellule

jerhen Messages postés 3 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 20 septembre 2010 - 19 sept. 2010 à 23:40
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 20 sept. 2010 à 12:25
Bonjour à tous,

je suis debutant en vb et je cherche à faire une caisse enregistreuse pour un petit commerce.

j'ai fait la calculette et des textbox (avec le nom du produit, la quantité, le prix unitaire et le total) sur une Userform, et je desir faire le ticket de caisse.
j'ai un bouton "ajouter" qui me permet de faire mon calcul et pour envoyer mes données sur une excelsheet et chaque fois que je modifie mon formulaire et clic sur "ajouter" j'aimerais ajouter les nouvelles valeur dans une nouvelle ligne de mon excel sheet.

J'ai deja fait cela en vitesse mais je coince pour la variable de la ligne.


Private Sub CommandButton18_Click()

If TextBox4 "" Then TextBox3 (TextBox6 * TextBox1) Else TextBox3 = (TextBox6 * TextBox1) * ((100 - TextBox4) / 100)
    
Cells(1, 1) = UserForm1.TextBox6.Value
Cells(1, 2) = UserForm1.TextBox2.Value
Cells(1, 3) = UserForm1.TextBox1.Value
Cells(1, 4) = UserForm1.TextBox3.Value

TextBox1 = ""
TextBox4 = ""

End Sub


TextBox1 : prix unitaire
TextBox2 : nom du probuit
TextBox3 : montant total
TextBox6 : Quantité

si je me suis bien expliqué, j'éspère que quelqu'un saura m'aider.

Merci...

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 sept. 2010 à 09:02
Salut

Manuellement, pour trouver la dernière cellule d'un groupe de cellule (c'est à dire se placer sur le dernier item d'une colonne), il suffit de se placer sur le premier élément puis de taper Control+Flèche_Bas

Si tu reprosuit cette manip pendant que tu enregistres une macro, le code fourni est
Selection.End(xlDown).Select

Il est donc facile, ensuite, de descendre d'une cellule pour y écrire tes nouvelles données.
Exemple mis en forme proprement :
    Dim oRange As Range
    Set oRange = Range("A1").End(xlDown)
    Set oRange = oRange.Offset(1, 0)
    oRange.Value = "Et voilà"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jerhen Messages postés 3 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 20 septembre 2010
20 sept. 2010 à 10:07
merci pour votre aide, mais ça fonctionne pas...

il y a une erreur dans la troisieme ligne

Dim oRange As Range
Set oRange = Range("A1").End(xlDown)
Set oRange = oRange.Offset(1, 0)
oRange.Value = "Et voilà"
0
jerhen Messages postés 3 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 20 septembre 2010
20 sept. 2010 à 11:48
j'ai réussi a resoudre l'erreur, mais je vois pas command on change de ligne an cliquant une deuxieme fois sur le bouton.
il faudrait une variable sur le numéros de ligne je crois
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 sept. 2010 à 12:22
Et quelle erreur y avait-il ?
Chez moi, cela fonctionne.

Quel code utilises-tu maintenant ?
Parce que si ta question porte sur un autre code que celui qu'on a sous les yeux, on va palabrer pour rien.

Le numéro de ligne de la première cellule vide découverte par ce bout de programme, c'est simplement
oRange.Row

Je te conseille de 'jouer' avec les objets Range plutôt que les Cells et de bien voir comment fonctionne .Offset, c'est très pratique.
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 sept. 2010 à 12:25
exemple :
Plutôt que d'utiliser
Cells(1, 3) = UserForm1.TextBox1.Value
qui t'oblige à définir le numéro de la ligne, utilise
oRange.Offset(0, 2).Value = UserForm1.TextBox1.Value
après que oRange ait été recherché avec .End puis .Offset ligne +1
0
Rejoignez-nous