Eval, fonction

S’applique à
Access pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Vous pouvez utiliser la fonction Eval pour évaluer une expression qui génère une chaîne de texte ou une valeur numérique.

Vous pouvez construire une chaîne, puis la transmettre à la fonction Eval comme si la chaîne était une expression réelle. La fonction Eval évalue l’expression de chaîne et renvoie sa valeur. Par exemple, Eval("1 + 1") retourne 2.

Si vous transmettez à la fonction Eval une chaîne contenant le nom d’une fonction, la fonction Eval renvoie la valeur de retour de la fonction. Par exemple, Eval("Chr$(65)") retourne « A ».

Syntaxe

eval(stringexpr)

L’argument stringexpr est une expression qui prend la valeur d’une chaîne de texte alphanumérique. Par exemple, stringexpr peut être une fonction qui renvoie une chaîne ou une valeur numérique. Il peut également s’agir d’une référence à un contrôle figurant sur un formulaire. L’argument stringexpr doit être évalué à une chaîne ou à une valeur numérique ; il ne peut pas évaluer un objet Microsoft Access.

Remarque

Les exemples suivants illustrent l’utilisation de cette fonction dans un module Visual Basic pour Applications (VBA). Pour plus d’informations sur l’utilisation de VBA, sélectionnez Référence développeur dans la liste déroulante en regard de Rechercher , puis entrez un ou plusieurs termes dans la zone de recherche.

Remarque

Si vous passez le nom d’une fonction à la fonction Eval , vous devez inclure des parenthèses après le nom de la fonction dans l’argument stringexpr . Par exemple :

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")   

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

Remarques

Vous pouvez utiliser la fonction Évaluation dans un contrôle calculé figurant sur un formulaire ou état, ou dans une macro ou un module. La fonction Eval renvoie une variante qui est soit une chaîne, soit un type numérique.

L’argument stringexpr doit être une expression stockée dans une chaîne. Si vous transmettez à la fonction Eval une chaîne qui ne contient ni expression numérique ni nom de fonction, mais uniquement une simple chaîne de texte, une erreur d’exécution se produit. Par exemple, Eval("Smith") entraîne une erreur.

Vous pouvez utiliser la fonction Eval pour déterminer la valeur stockée dans la propriété Value d’un contrôle. L’exemple suivant transmet une chaîne contenant une référence complète à un contrôle de la fonction Eval . Il affiche ensuite la valeur actuelle du contrôle dans une boîte de dialogue.

Dim ctl As Control
Dim strCtl As String
Set ctl = Forms!Employees!LastName
strCtl = "Forms!Employees!LastName"
MsgBox ("The current value of " & ctl.Name & _
    " is " & Eval(strCtl))

Vous pouvez utiliser la fonction Eval pour accéder aux opérateurs d’expression qui ne sont pas normalement disponibles dans un module Visual Basic pour Applications (VBA). Par exemple, vous ne pouvez pas utiliser les opérateurs SQL Entre... Et ou In directement dans votre code, mais vous pouvez les utiliser dans une expression passée à la fonction Eval .

L’exemple suivant détermine si la valeur d’un contrôle RégionExpédition figurant sur un formulaire Commandes est l’une des abréviations d’état spécifiées. Si le champ contient une des abréviations, intState la valeur est True (–1). Notez que vous utilisez des guillemets simples (') pour inclure une chaîne dans une autre chaîne.

Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
    & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Exemples de requête

Expression Résultats
SELECT Eval(« 15+3 ») AS Expr1 FROM ProductSales GROUP BY Eval(« 15+3 ») ; Évalue la valeur de la chaîne et calcule le résultat. Résultat : 18.
SELECT Eval(« Date()+month(date()) ») AS NewDate FROM ProductSales Group by Eval(« Date()+month(date()) ») ; Évalue la valeur de la chaîne, identifie les fonctions et les exécute. Résultat : date système actuelle + mois en cours, affichés dans la colonne « NewDate ».

Exemples VBA

L’exemple suivant part de l’hypothèse que vous disposez d’une série de 50 fonctions définies comme A1, A2, etc. Cet exemple utilise la fonction Eval pour appeler chaque fonction de la série.

Sub CallSeries()
    Dim intI As Integer
    For intI = 1 To 50
        Eval("A" & intI & "()")
    Next intI
End Sub

L’exemple suivant déclenche un événement Clic comme si l’utilisateur avait cliqué sur un bouton dans un formulaire. Si la valeur de la propriété OnClick du bouton commence par un signe égal (=), signifiant qu’il s’agit du nom d’une fonction, la fonction Eval appelle la fonction, ce qui équivaut à déclencher l’événement Click . Si la valeur ne commence pas par un signe égal, elle doit nommer une macro. La méthode RunMacro de l’objet DoCmd exécute la macro nommée.

Dim ctl As Control
Dim varTemp As Variant
Set ctl = Forms!Contacts!HelpButton
If (Left(ctl.OnClick, 1) = "=") Then
    varTemp = Eval(Mid(ctl.OnClick,2))
Else
    DoCmd.RunMacro ctl.OnClick
End If