Passage de paramètres entre Userform
Bonjour,
Je suis nouveau en VBA, et je cherche à faire un classeur pour gérer un compte via des Userform. Pour se faire, j'ai besoin de récupérer des paramètres d'une Userform (choix de l'utilisateur, remplissage de TextBox) pour les utiliser dans une autre (notamment pour activer ou non un champ).
Après moults recherches, j'en suis au même point, nulle part... :aie:
Voici le code de la Userform dont je veux récupérer un paramètre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| Public strModePaiement As String
Private Sub CB_Enr_ope_Ok_Click()
Enr_ope.Hide
'Je dois envoyer ici strModePaiement (ou de quoi identifier le choix) à la Userform Ope_donnees
Ope_donnees.Show
End Sub
Private Sub OB_Enr_ope_CB_Click()
strModePaiement = OB_Enr_ope_CB.Name
CB_Enr_ope_Ok.Enabled = True
End Sub
Private Sub OB_Enr_ope_Vir_Click()
strModePaiement = OB_Enr_ope_Vir.Name
CB_Enr_ope_Ok.Enabled = True
End Sub
Private Sub OB_Enr_ope_Chq_Click()
strModePaiement = OB_Enr_ope_Chq.Name
CB_Enr_ope_Ok.Enabled = True
End Sub
Private Sub OB_Enr_ope_Esp_Click()
strModePaiement = OB_Enr_ope_Esp.Name
CB_Enr_ope_Ok.Enabled = True
End Sub
Private Sub Userform_Activate()
CBx_Enr_ope_Type_ope.AddItem "Type d'opération"
CBx_Enr_ope_Type_ope.AddItem "Débit immédiat"
CBx_Enr_ope_Type_ope.AddItem "Débit différé"
CBx_Enr_ope_Type_ope.AddItem "Débit programmé"
CBx_Enr_ope_Type_ope.AddItem "Crédit"
CBx_Enr_ope_Type_ope.Text = CBx_Enr_ope_Type_ope.List(0)
End Sub
Private Sub CB_Enr_ope_Annul_Click()
Enr_ope.Hide
Demande_ppale.Show
End Sub
Private Sub CBx_Enr_ope_Type_ope_Change()
CB_Enr_ope_Ok.Enabled = False
OB_Enr_ope_CB.Value = 0
OB_Enr_ope_Vir.Value = 0
OB_Enr_ope_Chq.Value = 0
OB_Enr_ope_Esp.Value = 0
subDisponibiliteBoutons
End Sub
Private Sub subDisponibiliteBoutons()
Select Case CBx_Enr_ope_Type_ope
Case "Type d'opération"
OB_Enr_ope_CB.Enabled = False
OB_Enr_ope_Vir.Enabled = False
OB_Enr_ope_Chq.Enabled = False
OB_Enr_ope_Esp.Enabled = False
Case "Débit immédiat"
OB_Enr_ope_CB.Enabled = True
OB_Enr_ope_Vir.Enabled = True
OB_Enr_ope_Chq.Enabled = True
OB_Enr_ope_Esp.Enabled = False
Case "Débit différé"
OB_Enr_ope_CB.Enabled = True
OB_Enr_ope_Vir.Enabled = False
OB_Enr_ope_Chq.Enabled = False
OB_Enr_ope_Esp.Enabled = False
Case "Débit programmé"
OB_Enr_ope_CB.Enabled = False
OB_Enr_ope_Vir.Enabled = True
OB_Enr_ope_Chq.Enabled = False
OB_Enr_ope_Esp.Enabled = False
Case "Crédit"
OB_Enr_ope_CB.Enabled = False
OB_Enr_ope_Vir.Enabled = True
OB_Enr_ope_Chq.Enabled = True
OB_Enr_ope_Esp.Enabled = True
End Select
End Sub |
Maintenant, le code de la Userform Ope_donnees. Le paramètre récupéré doit me permettre de savoir si je peux activer ou non le champs TB_Ope_donnees_Chq
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Private Sub Userform_Activate()
If strModePaiement = "OB_Enr_ope_Chq" Then
TB_Ope_donnees_Chq.Enabled = True
End If
End Sub
Private Sub TB_Ope_donnees_Montant_Change()
If IsNumeric(TB_Ope_donnees_Montant.Value) And TB_Ope_donnees_Montant.Value >= 0 Then
subOKDisponible
Else
TB_Ope_donnees_Montant.Value = ""
End If
End Sub
Private Sub TB_Ope_donnees_Motif_Change()
subOKDisponible
End Sub
Private Sub TB_Ope_donnees_Jour_Change()
If IsNumeric(TB_Ope_donnees_Jour.Value) And (TB_Ope_donnees_Jour.Value > 0 And TB_Ope_donnees_Jour.Value < 32) Then
subOKDisponible
Else
TB_Ope_donnees_Jour.Value = ""
End If
End Sub
Private Sub TB_Ope_donnees_Mois_Change()
If IsNumeric(TB_Ope_donnees_Mois.Value) And (TB_Ope_donnees_Mois.Value > 0 And TB_Ope_donnees_Mois.Value < 13) Then
subOKDisponible
Else
TB_Ope_donnees_Mois.Value = ""
End If
End Sub
Private Sub TB_Ope_donnees_An_Change()
If IsNumeric(TB_Ope_donnees_An.Value) Then
subOKDisponible
Else
TB_Ope_donnees_An.Value = ""
End If
End Sub
Private Sub TB_Ope_donnees_Chq_Change()
If IsNumeric(TB_Ope_donnees_Chq.Value) Then
subOKDisponible
Else
TB_Ope_donnees_Chq.Value = ""
End If
End Sub |
Je cherche aussi à comprendre la différence entre .Initialize et .Activate d'une Userform
Si vous avez des suggestions d'amélioration, n'hésitez surtout pas :)
Merci