VBA excel formulaire de saisie - aide

Résolu/Fermé
Alexandre613 Messages postés 1 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 5 juin 2008 - 5 juin 2008 à 08:22
 Utilisateur anonyme - 18 janv. 2009 à 21:14
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120
5 juin 2008 à 09:24
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
5 juin 2008 à 10:28
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > Alexandre613
5 juin 2008 à 10:31
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
5 juin 2008 à 11:22
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 mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > Alexandre613
5 juin 2008 à 13:54
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
5 juin 2008 à 14:34
ça marche

merci
0
Utilisateur anonyme
18 janv. 2009 à 21:14
salam
qq1 peut m'aider pour démarrer vba excel please
0