Supprimer derniere ligne remplie

treizia Messages postés 24 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 10 décembre 2006 - 18 nov. 2006 à 17:15
treizia Messages postés 24 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 10 décembre 2006 - 19 nov. 2006 à 18:50
Bonjour,


Je vous explique rapidement mon probléme:

Je suis débutant en VBA et je souhaite faire un programme de facturation (études)


Pour cela, j'ai crée un formulaire dans lequel on choisit un article,
son tarif, le nombre et tout ceci doit se ranger dans une feuille excel
automatiquement.

Bon ma procédure fonctionne pour la 1ere ligne,
mais lorsque je clique sur le bouton "autre article" j'aimerais que ce
que selectionne la cassiére maintenant se rajoute à une autre ligne

 mais mes boutons de selection du type d'article et du tarif ne vont plus.


Ils reviennent toujours a la premiére ligne vide, donc si par exemple,
la caissiére choisit l'article 1 dans la liste, puis en fait se trompe
et selectionne l'article 2. Ces deux manipulations sont mises sur deux
lignes différentes, alors que je voudrais que ce le soit que sur une
seule (comme si par exemple je faisais range ... activesheets.cell(
1,1) , ca me mettrait mon choix dans la cellule un, et méme si je me
trompais et que je reselectionnais un autre article, ca me modifirait
la cellule un au lieu de me le mettre a la ligne suivante.)

Je ne sais pas si je suis bien clair ?


Voici le script que j'utilise :


Private Sub ComboBox1_Change()


If ComboBox1.ListIndex <> -1 Then


Sheets("Montant_Du").Cells(PremiereLigneVide(2), 2) = ComboBox1.Column(0, ComboBox1.ListIndex)


Sheets("Montant_Du").Cells(PremiereLigneVide(3), 3) = ComboBox1.Column(1, ComboBox1.ListIndex)


End If


End Sub


Public Function PremiereLigneVide(Colonne As Integer) As Long

    PremiereLigneVide = Columns(Colonne).Find("", , , , xlByRows, xlNext).Row

End Function


Private Sub CommandButton1_Click()

ActiveCell.Offset(1, 0).Select

End Sub


Private Sub TextBox1_Change()

ActiveSheet.Cells(PremiereLigneVide(4), 4) = TextBox1.Value

En sud


Voila en gros, je me doute que c'est un probléme par rapport au Premierelignevide, mais que mettre a la place ?

Merci beaucoup.


Ou alors si c'est impossible ce que je demande j'avais pensé a faire un
bouton annuler , qui effacerait la derniere ligne qui contient au moins
une valeur?


Merci d'avance et encore désolé du dérangement

3 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 nov. 2006 à 17:58
Bien sur que ton problème vient de là, puisque tu lui dit explicitement d'aller sur la première ligne vide.

C'est à toi de gérer la ligne ou tu dois faire la saisie, mais surtout, c'est à toi de gérer et à déterminer quel type de saisie tu fais :
- Ajout d'un article
- Correction d'un article déjà ajouter

Pour le premier cas, ton code est bon. Pour le second il faut que tu remplacer la valeur que te retourne PremiereLigneVide par le numéro de la ligne à modifier.

S'il s'agit systématiquement de la dernière ligne non vide, tu peux faire avec PremiereLigneVide(4)-1

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
treizia Messages postés 24 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 10 décembre 2006
19 nov. 2006 à 18:30
Ok merci c'est cool j'ai réussi.


Par contre, petite question béte, comment on fait pour vider le
formulaire une fois que l'on appuie sur un bouton, car moi j'ai
toujours les valeurs affichées dans les combox aprés avoir validé?


Merci
0
treizia Messages postés 24 Date d'inscription samedi 11 novembre 2006 Statut Membre Dernière intervention 10 décembre 2006
19 nov. 2006 à 18:50
En fait c bon merci j'ai trouvé tout seul
0
Rejoignez-nous