Bonjour à toutes et à tous,

Je suis tout nouveau sur ce forum, et débutant sur VBA.
Je cherche aujourd'hui de l'aide sur un formulaire UserForm pour lequel je rencontres plusieurs difficultés.
Ce formulaire sert à compléter un tableau Excel sur plusieurs onglets et est (censé être) construit de la manière suivante :

Un bouton pour lancer le formulaire (contrôle ActiveX), qui insert une ligne afin d'y effectuer la saisie.

- Une zone de liste modifiable (ComboBox) permettant de rentrer une information selon le choix sélectionné (dans une cellule particulière).
- Une zone de saisie afin de rentrer des informations (appliquée sur une cellule particulière).
- Deux OptionButton afin de rentrer des informations (appliquée sur une cellule particulière).
- Encore deux OptionButton afin de rentrer des informations (appliquée sur une cellule particulière).
- Une zone de liste modifiable (ComboBox) permettant de rentrer une information selon le choix sélectionné (dans une cellule particulière également).
- Une CheckBox afin de déverrouiller le bouton valider (permet de bien vérifier la saisie de ses informations).
- Un bouton "valider" (CommandButton) qui va tout simplement valider l'entrée et lui appliquer une mise en forme (bouton accessible sous condition d'avoir valider la CheckBox précédente).
- Un bouton "annuler" (CommandButton) qui va effacer les informations saisie en supprimant la ligne insérée et en remettant à zéro le formulaire.

Voilà à quoi il ressemble :

Nom : Untitled.jpg
Affichages : 242
Taille : 49,3 Ko

Pour infos, les sources pour les liste déroulantes se situent dans un onglet spécifique.

Je rencontre plusieurs problèmes sur les point suivants :

- Lorsque je lance le UserForm via le bouton sur la feuille Excel (ActiveX), le checkbox "Données vérifiées" permettant d'accéder au bouton valider est bien décoché, mais le bouton validé est accessible. Comment régler ce problème ?
- Lorsque je sélectionne une option sur mes OptionButton, la première ligne insérée (lors de la première utilisation du userform lorsqu'on ouvre le fichier) ne les prends pas en compte, mais celle d'après oui. Je vous laisse regarder le code et éventuellement trouver mon erreur mais là je bloque.
- Comment entrer les informations des listes déroulantes dans les macros ?



Voilà mon code appliqué au bouton ActiveX :

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
Private Sub CommandButton1_Click()
'Ouvrir le formulaire de saisie
 
 
Worksheets("Tableau").Rows(6).Select
Selection.Insert
With UserForm1
    .Famille_Produit.Text = ""
    .Part_Number.Text = ""
    .SMT.Value = False
    .TMT.Value = False
    .RA.Value = False
    .V.Value = False
    .Plating.Text = ""
 
End With
Range("C6") = False
Range("D6") = False
UserForm1.Show
 
End Sub
Le code me permettant d'avoir la checkbox décoché tout le temps :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Private Sub Workbook_Open()
 
UserForm1.CommandButton1.Enabled = False
 
End Sub


Voilà mon code 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
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Private Sub CheckBox1_Click()
 
'Permet d'activer le bouton "Valider"
 
If Me.CheckBox1.Value = True Then
        Me.CommandButton1.Enabled = True
    Else
        Me.CommandButton1.Enabled = False
    End If
End Sub
 
 
Private Sub CommandButton1_Click()
 
'Conditions appliquées sur le bouton "valider" (Mise en forme, fermeture userform etc.)
 
UserForm1.Hide
 
If Range("C6") = True Then
Range("C6") = "SMT"
Else
Range("C6") = "TMT"
End If
 
If Range("D6") = True Then
Range("D6") = "Right Angle"
Else
Range("D6") = "Vertical"
End If
 
    Range("A6:N31").Select
    Range("N31").Activate
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("A4:N5").Select
    Range("N4").Activate
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
 
UserForm1.CommandButton1.Enabled = False
CheckBox1.Value = False
 
End Sub
 
Private Sub CommandButton2_Click()
 
'Conditions appliquées sur le bouton "Annuler".
 
UserForm1.Hide
Worksheets("Tableau").Rows(6).Select
Selection.Delete
 
End Sub
 
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 
'Bouton croix = bouton annuler
 
If CloseMode = 0 Then Cancel = False
 
UserForm1.CommandButton1.Enabled = False
CheckBox1.Value = False
Worksheets("Tableau").Rows(6).Select
Selection.Delete
 
 
End Sub

J'espère trouver de l'aide, et que vous aurez le courage de lire ce (long) message. J'espère ne pas être trop exigent pour un premier message haha.

Merci par avance,
Cordialement.

JulienFBR