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.
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
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
 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