Réponse acceptée !
Je n'ai pas retrouvé le code mais je l'ai recréé. Ca donne la petite fonction suivante.
Le seul problème est le type de tes variables LS, LT, ... et le type de résultat que tu veux obtenir.
Il faut savoir que le type Boolean, en VB, c'est VRAI (valeur : -1) ou Faux (valeur 0). Si tu codes LS=1 ou LS=TRUE, en réalité il y aura -1 dedans. Donc, dans ma fonction j'utilise abs() pour supprimer le signe et je renvoie de l'integer. Ainsi, si tes LS,LT,... sont boolean ou integer ça marchera pareil. A toi de savoir comment tu traites le résultat.
dim r as boolean
r=resultat(TaChaine) te renvoie FAUX ou VRAI (0 ou -1)
dim r as integer
r=resultat(TaChaine) te renvoie 0 ou 1
Je suis parti du principe que ta chaine d'origine ne comportait aucune erreur (du genre nb de parenthèses ouvertes et fermées inégal ou autre). La, c'est à toi de voir.
Public Function Resultat(ByVal s As String) As Integer
Dim sResult As String
'pour la commodité du traitement, suppression de tous les espaces
sResult = UCase(Replace(s, " ", ""))
'transformation de la chaine
sResult = Replace(sResult, "LS", Abs(LS))
sResult = Replace(sResult, "LT", Abs(LT))
sResult = Replace(sResult, "LU", Abs(LU))
sResult = Replace(sResult, "LV", Abs(LV))
'évaluation de la chaine, dans l'ordre de priorité
Do While InStr(sResult, "(") > 0
'NOT
sResult = Replace(sResult, "NOT0", "1")
sResult = Replace(sResult, "NOT1", "0")
'AND
sResult = Replace(sResult, "0AND0", "0")
sResult = Replace(sResult, "0AND1", "0")
sResult = Replace(sResult, "1AND0", "0")
sResult = Replace(sResult, "1AND1", "1")
'OR
sResult = Replace(sResult, "0OR0", "0")
sResult = Replace(sResult, "0OR1", "1")
sResult = Replace(sResult, "1OR0", "1")
sResult = Replace(sResult, "1OR1", "1")
'XOR
sResult = Replace(sResult, "0XOR0", "0")
sResult = Replace(sResult, "0XOR1", "1")
sResult = Replace(sResult, "1XOR0", "1")
sResult = Replace(sResult, "1XOR1", "0")
'suppression des parenthèses obsolètes
sResult = Replace(sResult, "(0)", "0")
sResult = Replace(sResult, "(1)", "1")
Loop
End Function
Loup Gris