FormulaireSimple2.xls
Fomulaire.zip
Pour créer un formulaire:
Affichage/Boîteà outils
Pour créer la zone de saisie du nom :
Pour créer le libellé Nom :
Pour alimenter un ComboBox ou une ListBox, on spécifie dans la propriété RowSource
Private Sub UserForm_Initialize()
Me.ComboBox1.RowSource = "B2:B" & [B65000].End(xlUp).Row
'Me.ComboBox1.RowSource = "Feuil2!B2:B5" ' autre feuille
'Me.ComboBox1.RowSource = "Feuil2!B2:B" & Sheets("Feuil2").[B65000].End(xlUp).Row
'Me.ComboBox1.RowSource = "liste4" ' nom de champ
End Sub
Private Sub UserForm_Initialize()
Me.Service.List = Array("Etudes", "Informatique",
"Marketing", "Production")
Me.Ville.List = Array("Boulogne", "Lyon",
"Paris", "Versailles")
End Sub
Si la liste est dans un autre classeur ouvert
Me.ComboBox1.RowSource = "'[ClasseurSource.xls]Feuil1'!A2:A10"
Me.ComboBox1.RowSource = "'[ClasseurSource.xls]Feuil1'!LaListe"
Récupération du choix :
Private Sub ComboBox1_Change()
Me.TextBox1 = Me.ComboBox1.Value
End Sub
Positionnement sur le premier élément de la liste
Private Sub UserForm_Initialize()
Me.ComboBox1.ListIndex = 0 "positionne sur le premier
élément
End Sub
Une case à cocher returne la valeur VRAI ou FAUX
Pour obtenir OUI ou NON, utiliser la fonction ci-dessous.
Function OuiNon(valeur)
OuiNon = IIf(valeur, "Oui", "Non")
End Function
Pour connaître l'option choisie dans un groupe, utiliser une boucle For Each x In Groupe.Controls.
Sur l'exemple, on récupère le libellé de l'option (propriété Caption)
Private Sub B_ok_Click()
temp = ""
For Each c In Me.Civilité.Controls
If c.Value Then temp = c.Caption
Next c
MsgBox temp
End Sub
Sub appel_Simple()
F_création_simple.Show
End Sub
Créer un bouton avec la barre d’outils Formulaires et lui affecter la macro
Clic-droit/Affecter une macro
Private Sub B_fin_Click()
Unload Me
End Sub
Positionner la propriété MatchRequery à true
Positionner la propriété StartUpPosition à Manual puis définir les valeurs des propriétés Left et Top
La commande Affichage / Ordre de tabulation permet de définir l’ordre de saisie.
Pour initialiser les menus déroulants avec l'événement Initialize du formulaire:
Private Sub b_validation_Click()
'--- Contrôles
If Me.nom = "" Then
MsgBox "Saisir un nom!"
Me.nom.SetFocus
Exit Sub
End If
If Me.Salaire = "" Then
MsgBox "Saisir un Salaire!"
Me.nom.SetFocus
Exit Sub
End If
'-- Date?
If Not IsDate(Me.date_naissance) Then
MsgBox "Saisir une date!"
Me.date_naissance = ""
Me.date_naissance.SetFocus
Exit Sub
End If
If Not IsNumeric(Me.Salaire) Then
MsgBox "Saisir du num!"
Me.Salaire = ""
Me.Salaire.SetFocus
Exit Sub
End If
'--- Positionnement dans la base
[A65000].End(xlUp).Offset(1, 0).Select
'--- Transfert Formulaire dans BD
ActiveCell.Offset(0, 1).Value = Application.Proper(Me!nom)
ActiveCell.Offset(0, 2).Value = Application.Proper(Me!prenom)
ActiveCell.Offset(0, 3).Value = OuiNon(Me.Marié)
ActiveCell.Offset(0, 4).Value = CVDate(Me.date_naissance)
ActiveCell.Offset(0, 5).Value = Me.Service
ActiveCell.Offset(0, 6).Value = Me.Ville
ActiveCell.Offset(0, 7).Value = CDbl(Me.Salaire)
'-- Civilité
temp = ""
For Each c In Me.Civilité.Controls
If c.Value = True Then
temp = c.Caption
End If
Next c
ActiveCell.Value = temp
'--
nettoie
End Sub
Sub nettoie()
Me.prenom = ""
Me.nom = ""
Me.date_naissance = ""
Me.Service = ""
Me.Ville = ""
Me.Salaire = ""
For Each c In Me.Civilité.Controls
c.Value = False
Next c
Me.Marié = False
End Sub
Private Sub b_fin_Click()
Unload Me
End Sub
Ajouter dans la validation:
Set result = Range("A9:A10000").Find(What:=Me.nom,
LookIn:=xlValues, lookat:=xlWhole)
If Not result Is Nothing Then
MsgBox "Existe déjà"
Exit Sub
End If
Me.Service.RowSource = "J2:" & "J"
& [B65000].End(xlUp).Row
Me.Service.RowSource =”Maliste” ' nom de champ
Me.ComboBox1.RowSource = "Additem!B2:B5" ' autre feuille
AddItem ajoute un élément à un comboBox ou ListBox.
Private Sub UserForm_Initialize()
Me.Service.AddItem "Etudes"
Me.Service.AddItem "Informatique"
Me.Service.AddItem "Marketing"
Me.Service.AddItem "Production"
'---
Me.Ville.AddItem "
Me.Ville.AddItem "
Me.Ville.AddItem "
Me.Ville.AddItem "
End Sub
RemoveItem supprime un élément d’un comboBox ou ListBox.
ListIndex donne la position de l’élément choisi.
MsgBox ListBox1.ListIndex
ListIndex=position positionne sur la position spécifiée.
Me.ListBox1.ListIndex = 3 ‘ positionne sur le 4eme
ListIndex=-1 supprime la sélection
Me.ListBox1.ListIndex = -1
Private Sub UserForm_Initialize()
Dim Tbl(1 To 7, 1 To 2)
For j = 1 To 7
Tbl(j, 1) = Format(Date + j - 1, "dddd")
Tbl(j, 2) = Date + j - 1
Next j
Me.ListBox1.ColumnCount = 2
Me.ListBox1.ColumnWidths = "40,60"
Me.ListBox1.List = Tbl
End Sub
List permet également de récupèrer dans un tableau la liste d’un ComboBox avec ListBox
Tbl = Me.ListBox1.List
MsgBox UBound(Tbl, 1)
MsgBox LBound(Tbl,
1)
Donne la valeur de la ligne et colonne spécifiées
Donne la valeur de la colonne spécifiée:
Me.TextBox1 = Me.ListBox1.Column(1)
Le no de première colonne est 0
Donne le nombre de lignes du ComboBox ou ListBox
MsgBox ListBox1.ListCount
Efface les options du ComboBox ou ListBox
Une boucle For Each c In Me.controls permet d’accéder à tous les contrôles du formulaire actif.
Dim c As Control
For Each c In Me.Controls
MsgBox c.Name & " " & TypeName(c)
Next
Private Sub B_raz_Click()
Dim c As Control
For Each c In Me.Controls
Select Case TypeName(c)
Case "TextBox"
c.Value = ""
Case "CheckBox"
c.Value = False
Case "ListBox", "ComboBox"
c.ListIndex = -1
End Select
Next c
End Sub
Private Sub UserForm_Initialize()
For i = 1 To Sheets.Count
Me.ComboBox1.AddItem Sheets(i).Name
Next i
End Sub