Accueil
Controls
TotalChampIndices
ModuleClasse
Création checkbox
Changement de zone automatique
Saisie limitée à 5 options
Controls(nomContrôle)
Permet de référencer dans une boucle une
liste de contrôles qui ont des noms génériques.
Sur l’exemple, les champs ont pour nom note1,note2,......
x="note2"
Controls(x) ou Me(x) donne
le contenu du champ note2
Champs
Indicés
TotalClasseSaisie
TotalClasseSaisie2
FormComboBox
Private Sub b_ok_Click()
'--- ' contrôles
For i = 1 To 5
If Not IsNumeric(Controls("note" & i))
Then
MsgBox "Erreur!"
Me("note" & i).SetFocus
Exit Sub
End If
Next i
'---transfert BD
[A65000].End(xlUp).Offset(1, 0).Select
ActiveCell = Me.nom
For i = 1 To 5
ActiveCell.Offset(0, i) = CDbl(Me("note"
& i))
Next i
raz
End Sub
Sub raz()
Me.nom = ""
For i = 1 To 5
Me("note" & i) = ""
Next i
End Sub
Affichage du total de
plusieurs textbox indicés
On veut obtenir le total de TextBox indicés au fur
et à mesure de la saisie
TotalZonesIndices

Private Sub TextBox1_AfterUpdate()
total
End Sub
Private Sub TextBox2_AfterUpdate()
total
End Sub
Private Sub TextBox3_AfterUpdate()
total
End Sub
Private Sub TextBox4_AfterUpdate()
total
End Sub
Sub total()
For i = 1 To 4
If IsNumeric(Me("textbox" & i))
Then
t = t + CDbl(Me("textbox"
& i))
End If
Next i
Me.TextBoxTotal = t
End Sub
Avec Module de classe
Dim Txt(1 To 4) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 4: Set Txt(b).GrSaisie = Me("textbox" & b):
Next b
End Sub
Module de classe ClasseSaisie
Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_change()
For i = 1 To 4
If IsNumeric(UserForm1("textbox" & i))
Then
t = t + CDbl(UserForm1("textbox"
& i))
End If
Next i
UserForm1.TextBoxTotal = t
End Sub
Changement de zone automatique
si 3 caractères saisis
FormSaisie3Caractères

Module de classe:
Public WithEvents GrSaisie As MSForms.TextBox
Private Sub GrSaisie_Change()
If Len(GrSaisie.Value) = 3 Then
temp = GrSaisie.Name
Position = ""
For i = 1 To Len(temp)
If IsNumeric(Mid(temp, i, 1)) Then
Position = Position & Mid(temp, i, 1)
Next i
If Val(Position) = 12 Then Position = 0
UserForm1("textbox"
& Position + 1).SetFocus
End If
End Sub
Formulaire:
Dim Txt(1 To 12) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 12: Set Txt(b).GrSaisie = Me("textbox" & b):
Next b
End Sub
Création de checkBox
Permet de cacher les colonnes cochéés.
FormCréeChekBox

Module de classe nommé classeSaisie
Public WithEvents GrSaisie As MSForms.CheckBox
Private Sub GrSaisie_Change()
nomcheck = GrSaisie.Name
col = Val(Mid(GrSaisie.Name, 9))
Columns(col).Hidden = UserForm1.Controls(nomcheck).Value
End Sub
Formulaire
Dim n
Dim Chk(1 To 100) As New ClasseSaisie
Private Sub UserForm_Initialize()
n = 26
For b = 1 To n
retour = Me.Controls.Add("Forms.Label.1",
"Label" & b, True)
Me("Label" & b).Caption
= Split(Cells(1, b).Address, "$")(1)
Me("Label" & b).Top
= 50
Me("Label" & b).Left
= 12 + (b - 1) * 12
retour = Me.Controls.Add("Forms.Checkbox.1",
"CheckBox" & b, True)
Me("CheckBox" & b).Top
= 60
Me("CheckBox" & b).Left
= 10 + (b - 1) * 12
Next
'--
For b = 1 To n: Set Chk(b).GrSaisie = Me("Checkbox"
& b): Next b
End Sub
Private Sub b_result_Click()
For b = 1 To n
On Error Resume Next
If Me("CheckBox" & b) Then MsgBox
b
Next
End Sub
Private Sub B_sup_Click()
For b = 1 To n
On Error Resume Next
Me.Controls.Remove "Checkox" & b
Next
End Sub
Saisie limitée à
5 options
FormCheckBox
Dim Chk(1 To 24) As New ClasseSaisie
Private Sub UserForm_Initialize()
For b = 1 To 24: Set Chk(b).GrSaisie = Me("Checkbox"
& b): Next b
Me.b_ok.Enabled = False
End Sub
Private Sub b_ok_Click()
ligne = 8
For i = 1 To 24
If Me("checkbox" & i) Then
Cells(ligne, 6) = Me("checkbox"
& i).Caption
ligne = ligne + 1
End If
Next i
End Sub
Module de classe ClasseSaisie:
Public WithEvents GrSaisie As MSForms.CheckBox
Private Sub GrSaisie_Change()
n = 0
For i = 1 To 24
If Selection_titres("Checkbox"
& i) Then n = n + 1
Next i
Selection_titres.TextBox1.Value = n
If n > 5 Then Selection_titres(GrSaisie.Name) = False
Selection_titres.b_ok.Enabled = IIf(n > 0, True,
False)
End Sub
|