procédures evenementielles

alainah

XLDnaute Nouveau
Bonjour,

pour la première fois je travaille avec un userform,
je voudrais savoir s'il existe une documentation ou un site sur les différentes procédures évenementielles
pour bien placer mes messages à l'intention de l'utilisateur
par exemple : champ < 6 caractères, champ obligatoire, conversion et affichage de la date saisie, etc

cordialement

Alain
 

Gardien de phare

XLDnaute Accro
Re : procédures evenementielles

Bonjour,

Il existe l'aide de Vba, déjà. + les archives de ce forum et les espaces tutos et leçons + un certains nombre d'excellents sites, je n'en cite que deux en me limitant aux francophones : Bienvenue sur Excelabo | www.excelabo.net (chez Misange) avec justement des nouveaux tutos tous frais sur les formulaires et le site de Boisgontier Formation Excel VBA JB

Edit : bonjour Robert
 

Dranreb

XLDnaute Barbatruc
Re : procédures evenementielles

Bonjour.
VB:
Option Explicit
Public Sub Init(ByVal Boss As GroupeDeContrôles, ByVal Obj As Object, _
   ByVal Col As Long, ByVal Désign As String, ByVal Options As Variant)
End Sub
Public Function MsgErr() As String
End Function
Public Property Let Valeur(V As Variant)
End Property
Public Property Let Enabled(ByVal E As Boolean)
End Property
Dans le but de délocaliser de plus en plus hors des Userform la complexité de leur programmation, j'ai écrit le module de classe TypeContrôle ci dessus, que je n'indique que parce que celui ci après en a besoin. Et ce dernier, TextBoxMembre, parce qu'il illustre assez complètement les possibilités des principales procédure évènement des TextBox :
VB:
Option Explicit
Implements TypeContrôle
Dim Patron As GroupeDeContrôles, WithEvents TBx As MSForms.TextBox, Colonne As Long, Dsgn As String, _
   MsgErr As String, Obligat As Boolean, Valeur As Variant, TypeDon As VbVarType, ClauseFrappe As Byte
'

Private Sub TypeContrôle_Init(ByVal Boss As GroupeDeContrôles, ByVal Obj As Object, _
   ByVal Col As Long, ByVal Désign As String, ByVal Options As Variant)
Dim P As Long
Set Patron = Boss: Set TBx = Obj: Colonne = Col: Dsgn = Désign
For P = 0 To UBound(Options)
   Select Case VarType(Options(P))
      Case vbString: ClauseFrappe = InStr("?? NOM PHR PRÉ VIR", UCase$(Left$(Options(P), 3))) \ 4
      Case vbBoolean: Obligat = Options(P)
      Case Else: TypeDon = Options(P): End Select
   Next P
End Sub
'

Private Property Let TypeContrôle_Valeur(RHS As Variant)
TBx.Text = CStr(RHS)
End Property
'

Private Function TypeContrôle_MsgErr() As String
Call Valoriser: TypeContrôle_MsgErr = MsgErr
End Function
'

Private Sub TBx_Change()
Call Valoriser: Patron.ActeurContrôleChange Colonne, Valeur, MsgErr
End Sub
'

Private Sub Valoriser()
MsgErr = ""
If TBx.Text <> "" Then
   On Error Resume Next
   Select Case TypeDon
      Case vbInteger, vbLong, vbByte: Valeur = CLng(TBx.Text):  If Err Then MsgErr = "nombre entier"
      Case vbSingle, vbDouble:        Valeur = CDbl(TBx.Text):  If Err Then MsgErr = "nombre décimal"
      Case vbCurrency:                Valeur = CCur(TBx.Text):  If Err Then MsgErr = "valeur monétaire"
      Case vbDate:                    Valeur = CDate(TBx.Text): If Err Then MsgErr = "date"
      Case Else:                      Valeur = TBx.Text
      End Select
   If Err Then Valeur = CVErr(xlErrValue): MsgErr = Dsgn & " """ & TBx.Text _
      & """ :" & vbLf & "Ne peut s'interpreter comme " & MsgErr & "."
   On Error GoTo 0
ElseIf Obligat Then
   Valeur = CVErr(xlErrNA): MsgErr = Dsgn & " obligatoire."
Else: Valeur = Empty: End If
End Sub
'

Private Sub TBx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim C As String * 1, PrécLettre As Boolean
On ClauseFrappe GoTo Nom, Phrase, Prénom, Virgule
Exit Sub
Nom: KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value)))
Exit Sub
Phrase: If TBx.SelStart = 0 Then KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value)))
Exit Sub
Prénom: If TBx.SelStart > 0 Then C = Mid$(TBx.Text, TBx.SelStart, 1)
If UCase$(C) <> LCase$(C) Then KeyAscii.Value = Asc(LCase$(Chr$(KeyAscii.Value))) _
                          Else KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value)))
Exit Sub
Virgule: If KeyAscii.Value = Asc(".") Then KeyAscii.Value = Asc(",")
End Sub
'

Private Property Let TypeContrôle_Enabled(ByVal RHS As Boolean)
TBx.Enabled = RHS
End Property
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 611
Messages
2 090 219
Membres
104 452
dernier inscrit
hamzamounir