Accueil | Ce site | CV | Excel | Livre dor | Macros XL4 | Modèles | VBA
Un UserForm est une zone de dialogue. Il sagit dun des objets essentiels de l'interface dune application. Un UserForm contient des contrôles de différente nature (Textbox, ListBox, CheckBox, RadioButton, ControlButton, ) qui forment la collection Controls du UserForm
À chaque UserForm est associé un module destiné au code définissant les actions à exécuter lorsque survient tel ou tel événement.
Le terme contrôle est employé pour désigner tous les objets que lon peut trouver sur un UserForm
TextBox
ListBox
CheckBox
RadioButton
ControlButton

La fonction essentielle dun UserForm est de permettre à lutilisateur de fournir des informations réclamées par lapplication. Toutes ne sont pas nécessairement indispensables, mais en général, certaines au moins sont nécessaires à la poursuite du traitement.
Quand lutilisateur clique sur le bouton OK (ou un mode de validation équivalent), il est donc impératif de vérifier quaucune information nécessaire ne manque. Pour ce faire, 2 méthodes, qui se complètent, peuvent être employées :
Jai lhabitude de regrouper lensemble des appels à la fonction Controle dans un Sub que je nomme ControleInfos. En voici 2 exemples :
Le premier correspond à un UserForm très simple où la vérification ne concerne que 2 TextBox, nommés TNom et TClef. La routine ControleInfos consiste simplement à vérifier sils ont été toux deux renseignés.
Private Sub ControleInfos() Resultat = Controle(TNom = "", "le nom du " & Tiers & ".", TNom) If Resultat Then Resultat = Controle(TClef = "", "le mot-clef.", TClef) End Sub
Le second exemple est plus complexe
Private Sub ControleInfos() Resultat = Controle(TDate = "", "la date.", TDate) If Resultat Then Resultat = Controle(Not IsDate(TDate), , TDate, "La date indiquée est incorrecte. Elle doit être au format ""jj/mm/aa"".") If Resultat Then Resultat = Controle(TMontant = "", "le montant.", TMontant) If Resultat Then Resultat = Controle(TMontant <= 0, , TMontant, "Il n'est pas possible d'effectuer un règlement dont le montant est négatif ou nul !") If Resultat Then Resultat = Controle(TLibelle = "", "le libellé.", TLibelle) ' Controle que le mode de règlement a été précisé If Resultat Then Resultat = Controle(ModeReglement = "", "le mode de règlement.") If Resultat Then Resultat = Controle(NbFacSelectionnees = 0, , , "Il est impératif d'indiquer à quelle facture correspond le règlement." _ & Chr(10) & Chr(10) & "NB - Il existe un autre traitement, pour les règlements comptant.") End Sub
Par convention, je nomme BAnnuler et BOK les boutons Annuler et OK, en général présents sur un UserForm (le bouton OK pouvant parfois être remplacé par un bouton Suite et un bouton Fin).
Private Sub BAnnuler_Click() Unload Me End Sub Private Sub BOK_Click() ControleInfos If Resultat Then ReportDonnees Unload Me End If End Sub