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...
Voici le code de la Userform dont je veux récupérer un paramètre.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Je cherche aussi à comprendre la différence entre .Initialize et .Activate d'une Userform
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Si vous avez des suggestions d'amélioration, n'hésitez surtout pas
Merci
Partager