Accueil | Ce site | CV | Excel | Livre dor | Macros XL4 | Modèles | VBA
La version complète de la fonction Controle est reproduite ici, mais seuls les éléments spécifiques à cette version sont commentés. Les explications relatives aux parties du code communes aux 2 versions sont fournies avec la version simplifiée.
Option Explicit Public Resultat As Boolean Function Controle(ByVal Expression As Boolean, Optional ComplTexte, Optional CellActive, _ Optional TexteMessage, Optional VideoInverse As Boolean, Optional ControleUnique) If Not IsMissing(ControleUnique) Then If ControleUnique Then Exit Function End If End If ' Test si anomalie If Expression Then If IsMissing(TexteMessage) Then TexteMessage = "Vous n'avez pas indiqué " & ComplTexte End If MsgBox TexteMessage, 48, "Information manquante ou anormale." ' MAJ Curseur If Not IsMissing(CellActive) Then CellActive.SetFocus End If End If ' Sélection de l'info à modifier If VideoInverse And Not IsMissing(CellActive) Then CellActive.SelStart = 0 CellActive.SelLength = Len(CellActive) End If ' MAJ Contrôle déjà effectué If Not IsMissing(ControleUnique) And Not Expression Then ControleUnique = True End If ' Résultat du contrôle If Expression Then Controle = False Else Controle = True End Function
Par rapport à la version simplifiée, la version complète comporte 2 arguments supplémentaires, tous deux optionnels.
Optional VideoInverse As Boolean
est un booléen. Cette propriété nexiste que pour les TextBox et ComboBox. Seule la valeur True a une incidence : lensemble des caractères du contrôle sont alors sélectionnés, de façon à faciliter leur remplacement.
Optional ByRef ControleUnique
sil est employé, doit être passé sous forme dune variable de type Boolean (booléen). Il permet déviter de répéter un contrôle lorsque cest inutile. Cela concerne les OptionButton.
L'argument ByRef pourrait être omis, car il s'agit de la valeur par défaut. Seul ByVal doit être indiqué explicitement. Lindication ByRef est ici un pense-bête, pour rappeler que cest la variable passée à la fonction Controle qui est modifiée.
La version complète gère en plus la sélection du texte saisi dans un TextBox ou un ComboBox lorsque celui-ci est erroné et doit être corrigé.
' Sélection de l'info à modifier If VideoInverse And Not IsMissing(CellActive) Then CellActive.SelStart = 0 CellActive.SelLength = Len(CellActive) End If ' MAJ Contrôle déjà effectué If Not IsMissing(ControleUnique) And Not Expression Then ControleUnique = True End If ' Résultat du contrôle If Expression Then Controle = False Else Controle = True End Function