Accueil | Ce site | CV | Excel | Livre d’or | Macros XL4 | Modèles | VBA

 Code commenté de la fonction Controle (version complète)

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.

Le code de la fonction Controle (version complète)

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

Les arguments complémentaires de la version complète

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é n’existe que pour les TextBox et ComboBox. Seule la valeur True a une incidence : l’ensemble des caractères du contrôle sont alors sélectionnés, de façon à faciliter leur remplacement.

Optional ByRef ControleUnique

s’il est employé, doit être passé sous forme d’une variable de type Boolean (booléen). Il permet d’éviter de répéter un contrôle lorsque c’est 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. L’indication ByRef est ici un “pense-bête”, pour rappeler que c’est la variable passée à la fonction Controle qui est modifiée.

Le fonctionnement des éléments spécifiques à la version complète

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