Bonsoir Gil,
voici une autre version, pour la saisie de plusieurs articles en série :
https://www.cjoint.com/c/LLktfsowzn0
* clique sur le bouton "Saisir un nouvel article" ➯ le formulaire s'affiche ;
j'ai remis le 2ème bouton "Fermer", car il sera utile en fin de saisie.
* appuie sur la touche Echap ➯ le formulaire se ferme ; rien n'a été fait ;
c'est utile si on change d'avis et qu'on veut abandonner la saisie ; bien sûr,
tu aurais pu aussi cliquer sur la croix du coin supérieur droit du UserForm,
ou cliquer sur le bouton "Fermer".
* clique de nouveau sur le bouton "Saisir un nouvel article" ; cette fois,
on va saisir une série exemple de 4 articles ; pour simplifier, les prix
seront tous des entiers ; mais bien sûr, c'est possible de saisir des
prix avec 2 chiffres après la virgule (séparateur décimal : point ou
virgule, au choix).
* tous les champs sont obligatoires ; un clic sur le bouton "Ajouter" ne fera
rien si un des champs est vide ; idem si la date est invalide ; après un clic
sur le bouton "Ajouter" : s'il y a un ou plusieurs champs vides, le curseur
sera sur le 1er champ vide ; si la date est invalide, le curseur sera sur
le champ de la date ; si tout est ok : ajout des données sur la feuille.
* pour passer d'un champ au champ suivant, le plus simple est d'utiliser
la touche Tab (Tabulation).
Date : 6/12
N° Art : 106
Casier : C6
Prix achat : 11
Prix vente : 21
Dsg : a
touche Tab ; ça va sur le bouton "Ajouter".
touche Entrée ; ça ajoute les données sur la feuille de calcul, puis ça
efface tous les champs du UserForm ; le curseur est sur le champ
Date : c'est prêt pour la saisie du 2ème article.
Date : 7/12
N° Art : 107
Casier : C7
Prix achat : 12
Prix vente : 22
Dsg : b
Tab ; Entrée (ou clic sur le bouton "Ajouter")
Date : 8/12
N° Art : 108
Casier : C8
Prix achat : 13
Prix vente : 23
Dsg : c
clic / Ajouter
Date : 9/12
N° Art : 109
Casier : C9
Prix achat : 14
Prix vente : 24
Dsg : d
clic / Ajouter
saisie terminée ➯ comme il n'y a plus d'articles
à ajouter, clique sur le bouton "Fermer".
note bien que tous les prix sont sur fond jaune :
plage i3:J9.
-----------------------------------------------------------------------------------------------------------------------
code VBA de Module1 : inchangé.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
code VBA du formulaire NouvArt :
Option Explicit
Dim lig&
Private Sub cbAjout_Click()
Application.ScreenUpdating = 0
If Not IsDate(tbDate) Then tbDate.SetFocus: Exit Sub
If tbNumArt = "" Then tbNumArt.SetFocus: Exit Sub
If tbCasier = "" Then tbCasier.SetFocus: Exit Sub
If tbPA = "" Then tbPA.SetFocus: Exit Sub
If tbPV = "" Then tbPV.SetFocus: Exit Sub
If tbDsg = "" Then tbDsg.SetFocus: Exit Sub
With Cells(lig, 1)
.Value2 = DateValue(tbDate)
.Offset(, 1) = tbNumArt
.Offset(, 6) = tbCasier
.Offset(, 8) = Val(Replace$(tbPA, ",", "."))
.Offset(, 9) = Val(Replace$(tbPV, ",", "."))
.Offset(, 16) = tbDsg
End With
tbDate = "": tbNumArt = "": tbCasier = "": tbPA = "": tbPV = "": tbDsg = ""
tbDate.SetFocus: lig = lig + 1: Application.ScreenUpdating = -1
End Sub
Private Sub tbDate_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 27 Then Unload Me
End Sub
Private Sub UserForm_Initialize()
lig = Cells(Rows.Count, 1).End(3).Row + 1
End Sub
Private Sub cbClose_Click()
Unload Me
End Sub
rhodo