VBA excel formulaire de saisie - aide

Résolu
Alexandre613 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

je suis débutant en VBA excel, et j'ai construis un formulaire de saisie (userform).

Malheureusement je n'arrive pas à le finaliser... il me manque :

a/
le numéro de transaction (TRANID) ne change pas lorsque j'appuie sur OK
mais uniquement lorsque je ferme le formulaire et l'ouvre à nouveau.

b/
pour le champs du numéro d'opération, la date et les commentaires (OPSID,DDID,COMMENTS) je souhaiterais
avoir par défaut la dernière valeur utilisée dans ce champs.

merci pour votre aide
Alex

==========

Private Sub UserForm()

End Sub

Private Sub UserForm_Show()

End Sub

Private Sub USERID_Change()

End Sub


Private Sub Label1_Click()

End Sub

Private Sub Label6_Click()

End Sub

Private Sub TRANID_Change()

End Sub

Private Sub OPSID_Change()

End Sub

Private Sub BKID1_Change()

End Sub
Private Sub QTID_Change()

End Sub
Private Sub INVESTID_Change()

End Sub
Private Sub DDID_Change()

End Sub
Private Sub COID_Change()

End Sub
Private Sub COMMENTS_Change()

End Sub

Private Sub OKBUTTON_Click()

Dim NextLine As Long

' Vérification que la feuille est active
Sheets("Database").Activate

' Vérification que la saisie du numéro de transaction à été faite
If TRANID.Text = "" Then
MsgBox "Please enter a transaction number to validate your record!"
Exit Sub
End If

' Vérification que la saisie du numéro est inférieure à 50'000
If TRANID.Text > 50000 Then
MsgBox "LESS THAN 50'000 INPUTS PER DATABASE!"
Exit Sub
End If

' Détermination de la ligne suivante
NextLine = Application.WorksheetFunction. _
CountA(Range("A:A")) + 1

' Transfert de l'identifiant
If OptionButton1 Then Cells(NextLine, 1) = "Alex"
If OptionButton2 Then Cells(NextLine, 1) = "Raquel"
If OptionButton3 Then Cells(NextLine, 1) = "Chloé"

' Transfert du numéro de transaction
Cells(NextLine, 2) = TRANID.Text

' Transfert du numéro d'opération
Cells(NextLine, 3) = OPSID.Text

' Transfert du nom du bookmaker
Cells(NextLine, 4) = BKID1.Text

' Transfert de la quote
Cells(NextLine, 5) = QTID.Text

' Transfert du montant investit
Cells(NextLine, 6) = INVESTID.Text

' Transfert de la date du contrat
DDID.Value = CDate(Format(Now, "dd mm yy"))
Cells(NextLine, 7) = DDID.Text

' Transfert de la date de saisie
COID.Value = CDate(Format(Now, "dd mmmm yyyy h:mm:ss"))
Cells(NextLine, 8) = COID.Text

' Transfert du commentaire
Cells(NextLine, 9) = COMMENTS.Text


End Sub

Private Sub UserForm_Initialize()

' Réinitialisation pour la prochaine saisie
OptionButton1 = True
OPSID.Text = ""
TRANID.Text = Application.WorksheetFunction.CountA(Range("A:A")) + 5
BKID1.Text = "188 bet"
QTID.Text = ""
INVESTID.Text = ""
COMMENTS.Text = ""
OPSID.SetFocus
DDID.Text = Format("")
COID.Text = Format(Now(), "dd mmmm yyyy h:mm:ss")


' Remplissage de la zone de liste des bookmakers
With BKID1
.AddItem "188 bet"
.AddItem "5 Dimes"
.AddItem "888 Sport"

End With

End Sub
A voir également:

3 réponses

onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120
 
a/
le numéro de transaction (TRANID) ne change pas lorsque j'appuie sur OK
mais uniquement lorsque je ferme le formulaire et l'ouvre à nouveau.


Applique le code que tu appliques dans ta procédure UserForm_Initialize() pour récupérer le TRANID et applique la dans ta procédure OKBUTTON_Click() après que tu aies remplis les champs dans ta feuille.

TRANID.Text = Application.WorksheetFunction.CountA(Range("A:A")) + 5 


b/
pour le champs du numéro d'opération, la date et les commentaires (OPSID,DDID,COMMENTS) je souhaiterais
avoir par défaut la dernière valeur utilisée dans ce champs.


Il suffit de récupérer les valeurs de la dernière ligne du tableau excel
2
Alexandre613
 
a/ merci j'ai réussi

b/ comment je récupère les données de la ligne précédente?

merci
Alex
0
onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > Alexandre613
 
Ben tu fais bien Cells(NextLine, x) pour écrire après la dernière ligne du tableau ... La ligne d'avant c'est NextLine - 1

Tu récupères le contenu en faisant Cells(NextLine-1,x).Value
0
Alexandre613 > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
 
J'essaie donc de donner l'instruction pour un champ spécifique et la macro plante :

OPSID.Text = Cells(NextLine - 1, x).Value
0
onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > Alexandre613
 
Tu as mis cette ligne là dans ton UserForm_Initialize()

NextLine = Application.WorksheetFunction. _
CountA(Range("A:A")) + 1

?

Et remplacé x par la colonne qui correspond ?
0
Alexandre613
 
ça marche

merci
0
Utilisateur anonyme
 
salam
qq1 peut m'aider pour démarrer vba excel please
0