Exécuter une formule de format string avant affichage

Résolu
djgarlick Messages postés 42 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 29 mai 2014 - 16 août 2007 à 10:40
djgarlick Messages postés 42 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 29 mai 2014 - 16 août 2007 à 14:02
Bonjour,

J'ai un petit soucis et j'aimerai savoir ce que vous en pensez...

Je voudrai monter une formule qui dépend de qq champs de formulaire access (dans un string...), executer ce string avant de l'envoyer en tant que value dans une textbox de ce formulaire... j'ai monté le code suivant mais je ne sais pas comment executer ma formule avant de renvoyer la valeur... merci de me dire ce que vous feriez (c'est pour mon taf et j'avoue que je suis bien emmerd....!!!)

Dim  tempo2 As Double
Dim tempo As String

tempo = "80 * (((" & Text224.Value & " * " & Text218.Value & ") + (" & Text225.Value & " * " & Text219.Value & ") + (" & Text226.Value & " * " & Text220.Value & ") + (" & Text227.Value & " * " & Text221.Value & ") + (" & Text228.Value & " * " & Text222.Value & ")) - ("

If Not IsNull(List183.ItemData(0)) Then
    tempo = tempo & "(" & CDbl(List183.ItemData(0)) & " * " & CDbl(List177.ItemData(0)) & ") + "
End If

If Not IsNull(List184.ItemData(0)) Then
    tempo = tempo & "(" & CDbl(List184.ItemData(0)) & " * " & CDbl(List178.ItemData(0)) & ") + "
End If

If Not IsNull(List185.ItemData(0)) Then
    tempo = tempo & "(" & CDbl(List185.ItemData(0)) & " * " & CDbl(List179.ItemData(0)) & ") + "
End If

If Not IsNull(List186.ItemData(0)) Then
    tempo = tempo & "(" & CDbl(List186.ItemData(0)) & " * " & CDbl(List180.ItemData(0)) & ") + "
End If

If Not IsNull(List187.ItemData(0)) Then
    tempo = tempo & "(" & CDbl(List187.ItemData(0)) & " * " & CDbl(List181.ItemData(0)) & ") + "
End If

tempo = Left(tempo, Len(tempo) - 3)
tempo = tempo & "))"
tempo2 = CDbl(tempo)
MsgBox tempo                'test de la formule qui est normalement bien écrite...
Text243.Value = tempo2

J'ai besoin de vos connaissances... help help...




DJGarlick

4 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
16 août 2007 à 11:58
Oui je n'est pas répondu au besoin, Pardon
Mais je dois avoué que puisque tu as la valeur : "tempo" si tu ne veux pas l'afficher dans Text243 tout de suite , MsgBox utilise un 2ème paramètre qui peut te permettre d'assurer la validation

i = MsgBox tempo, vbOkCancel
if i= vbOK then
Text243.Value = tempo2

end if
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
16 août 2007 à 11:17
Bonjour

La solution est peut-être du coté de l'objet "ScriptControl" avec l'une des méthodes "Eval" ou "ExecuteStatement"

Set ScripControL1 = CreateObject("ScriptControl")
ScriptControl1.Language = "VBScript"
ScriptControl1.ExecuteStatement (sCode2) ' rem "a=2+3")
EvalStatement = ScriptControl1.Eval("a")
MsgBox(EvalStatement)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 23 août 2018 21
16 août 2007 à 11:31
Si je me fie au sujet du message "... avant affichage ..."
tu ne peux pas utiliser ton code puisque justement l'affichage n'est pas encore créé, donc les contrôles sont vides...
C'est du moins ce que j'en comprends.

MPi
0
djgarlick Messages postés 42 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 29 mai 2014
16 août 2007 à 14:02
Merci.

Grace à vos réponses, j'ai trouvé une autre technique : il me suffisait de faire mes opérations de calcul étape par étape et de les stocker dans la variable tempo.
Une fois calculer, text243.value = tempo !!!

Aussi simple que ça, mais je cherchais trop compliqué !!!

Merci pour votre aide messieurs
A charge de revanche !!!

DJGarlick  vous salue.......
0