Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Bonjour/Soir,
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les expressions, ce qui en plus peut mener à des problèmes dans d'autres cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai. 'Pourtant, il tente d'évaluer Toto.Valeur = 0 '=> Erreur puisque Toto est nothing Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
"Patrice Henrio" a écrit dans le message de news:Ogn6fEj%
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Pour l'autre exemple qui ne s'applique pas à chaque fois on peut écrire
Num=Iif(TYP="AIGG" and ori=1,Iif(dx="" and dy="b",3,1),2) C'est comme du LISP (ou Scheme pour ceux qui connaissent) ou encore If sous VBA en Excel.
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news:c1cun0$8uv$
Bonjour
Il est parfois possible de linéariser l'écriture de code. Exemple
Transformer
if toto=1 then rep else rep end if
en
if toto=1 then rep else rep
Est il possible d'en faira autant avec des elseif??? J'ai essayé je n'y suis pas arrivé : exemple
If TYP = "AIGG" And ori = 1 Then If dx = "" And dy = "b" Then num = 3 ElseIf dx = "" And dy = "h" Then num = 1 Else num = 2 End If End If
Merci
Bonjour/Soir,
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les
expressions, ce qui en plus peut mener à des problèmes dans d'autres cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai.
'Pourtant, il tente d'évaluer Toto.Valeur = 0
'=> Erreur puisque Toto est nothing
Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les expressions, ce qui en plus peut mener à des problèmes dans d'autres cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai. 'Pourtant, il tente d'évaluer Toto.Valeur = 0 '=> Erreur puisque Toto est nothing Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
Pour l'autre exemple qui ne s'applique pas à chaque fois on peut écrire
Num=Iif(TYP="AIGG" and ori=1,Iif(dx="" and dy="b",3,1),2) C'est comme du LISP (ou Scheme pour ceux qui connaissent) ou encore If sous VBA en Excel.
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news:c1cun0$8uv$
Bonjour
Il est parfois possible de linéariser l'écriture de code. Exemple
>>>Transformer if toto=1 then rep else rep end if
>>>en if toto=1 then rep else rep
Est il possible d'en faira autant avec des elseif??? J'ai essayé je n'y suis pas arrivé : exemple
If TYP = "AIGG" And ori = 1 Then If dx = "" And dy = "b" Then num = 3 ElseIf dx = "" And dy = "h" Then num = 1 Else num = 2 End If End If
Merci
ng
On peut créer son propre IIf mais ca ne résouds pas le problème évoqué par francois :
Private Sub Form_Load() Dim a As Long, b As Long a = 7 b = 8 MsgBox IIfX(a = b, "a vaut b", "a ne vaut pas b") End Sub
Public Function IIfX(bExpression As Boolean, vTruePart As Variant, vFalsePart As Variant) As Variant If bExpression Then IIfX = vTruePart Else IIfX = vFalsePart End Function
Pour l'optimiser davantage, on peut typer vTruePart, vFalsePart, IIfX en long/string... selon le besoin.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
François Picalausa a écrit :
Bonjour/Soir,
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les expressions, ce qui en plus peut mener à des problèmes dans d'autres cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai. 'Pourtant, il tente d'évaluer Toto.Valeur = 0 '=> Erreur puisque Toto est nothing Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
"Patrice Henrio" a écrit dans le message de news:Ogn6fEj%
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Pour l'autre exemple qui ne s'applique pas à chaque fois on peut écrire
Num=Iif(TYP="AIGG" and ori=1,Iif(dx="" and dy="b",3,1),2) C'est comme du LISP (ou Scheme pour ceux qui connaissent) ou encore If sous VBA en Excel.
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news:c1cun0$8uv$
Bonjour
Il est parfois possible de linéariser l'écriture de code. Exemple
Transformer
if toto=1 then rep else rep end if
en
if toto=1 then rep else rep
Est il possible d'en faira autant avec des elseif??? J'ai essayé je n'y suis pas arrivé : exemple
If TYP = "AIGG" And ori = 1 Then If dx = "" And dy = "b" Then num = 3 ElseIf dx = "" And dy = "h" Then num = 1 Else num = 2 End If End If
Merci
On peut créer son propre IIf mais ca ne résouds pas le problème évoqué par
francois :
Private Sub Form_Load()
Dim a As Long, b As Long
a = 7
b = 8
MsgBox IIfX(a = b, "a vaut b", "a ne vaut pas b")
End Sub
Public Function IIfX(bExpression As Boolean, vTruePart As Variant,
vFalsePart As Variant) As Variant
If bExpression Then IIfX = vTruePart Else IIfX = vFalsePart
End Function
Pour l'optimiser davantage, on peut typer vTruePart, vFalsePart, IIfX en
long/string... selon le besoin.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
François Picalausa <fpicalausa@chez.com> a écrit :
Bonjour/Soir,
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les
expressions, ce qui en plus peut mener à des problèmes dans d'autres
cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai.
'Pourtant, il tente d'évaluer Toto.Valeur = 0
'=> Erreur puisque Toto est nothing
Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
"Patrice Henrio" <patrice.henrio.pasdepub@laposte.net> a écrit dans le
message de news:Ogn6fEj%23DHA.220@TK2MSFTNGP09.phx.gbl
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Pour l'autre exemple qui ne s'applique pas à chaque fois on peut
écrire
Num=Iif(TYP="AIGG" and ori=1,Iif(dx="" and dy="b",3,1),2)
C'est comme du LISP (ou Scheme pour ceux qui connaissent)
ou encore If sous VBA en Excel.
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c1cun0$8uv$1@news-reader4.wanadoo.fr...
Bonjour
Il est parfois possible de linéariser l'écriture de code. Exemple
Transformer
if toto=1 then
rep
else
rep
end if
en
if toto=1 then rep else rep
Est il possible d'en faira autant avec des elseif??? J'ai essayé je
n'y suis pas arrivé : exemple
If TYP = "AIGG" And ori = 1 Then
If dx = "" And dy = "b" Then
num = 3
ElseIf dx = "" And dy = "h" Then
num = 1
Else
num = 2
End If
End If
On peut créer son propre IIf mais ca ne résouds pas le problème évoqué par francois :
Private Sub Form_Load() Dim a As Long, b As Long a = 7 b = 8 MsgBox IIfX(a = b, "a vaut b", "a ne vaut pas b") End Sub
Public Function IIfX(bExpression As Boolean, vTruePart As Variant, vFalsePart As Variant) As Variant If bExpression Then IIfX = vTruePart Else IIfX = vFalsePart End Function
Pour l'optimiser davantage, on peut typer vTruePart, vFalsePart, IIfX en long/string... selon le besoin.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
François Picalausa a écrit :
Bonjour/Soir,
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les expressions, ce qui en plus peut mener à des problèmes dans d'autres cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai. 'Pourtant, il tente d'évaluer Toto.Valeur = 0 '=> Erreur puisque Toto est nothing Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
"Patrice Henrio" a écrit dans le message de news:Ogn6fEj%
On peut même écrire dans ce cas
rep=Iif(Toto=1,10,12)
Pour l'autre exemple qui ne s'applique pas à chaque fois on peut écrire
Num=Iif(TYP="AIGG" and ori=1,Iif(dx="" and dy="b",3,1),2) C'est comme du LISP (ou Scheme pour ceux qui connaissent) ou encore If sous VBA en Excel.
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message de news:c1cun0$8uv$
Bonjour
Il est parfois possible de linéariser l'écriture de code. Exemple
Transformer
if toto=1 then rep else rep end if
en
if toto=1 then rep else rep
Est il possible d'en faira autant avec des elseif??? J'ai essayé je n'y suis pas arrivé : exemple
If TYP = "AIGG" And ori = 1 Then If dx = "" And dy = "b" Then num = 3 ElseIf dx = "" And dy = "h" Then num = 1 Else num = 2 End If End If
Merci
Patrice Henrio
Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois. Mais la question me semblait à la fois générale "peut-on linéariser .. ?" et particulière avec un exemple. Dans les deux exemples proposés la méthode fonctionne mais il est clair que ce n'est pas très lisible (je rappelle que pour certains programmeurs LISP, qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de Parenthèses) Ceci étant, je ne connais pas d'autres langages bénéficiant de la structure Cond qui remplace avantageusement les listes de "If then else" emboîtés.
"François Picalausa" a écrit dans le message de news:OwmA9Kj%
Bonjour/Soir,
> On peut même écrire dans ce cas > > rep=Iif(Toto=1,10,12)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les expressions, ce qui en plus peut mener à des problèmes dans d'autres cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai. 'Pourtant, il tente d'évaluer Toto.Valeur = 0 '=> Erreur puisque Toto est nothing Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
"Patrice Henrio" a écrit dans le message de news:Ogn6fEj% > On peut même écrire dans ce cas > > rep=Iif(Toto=1,10,12) > > Pour l'autre exemple qui ne s'applique pas à chaque fois on peut > écrire > > Num=Iif(TYP="AIGG" and ori=1,Iif(dx="" and dy="b",3,1),2) > C'est comme du LISP (ou Scheme pour ceux qui connaissent) > ou encore If sous VBA en Excel. > > "TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message > de news:c1cun0$8uv$ >> Bonjour >> >> Il est parfois possible de linéariser l'écriture de code. Exemple >> >>>>> Transformer >> if toto=1 then >> rep >> else >> rep >> end if >> >>>>> en >> if toto=1 then rep else rep >> >> >> Est il possible d'en faira autant avec des elseif??? J'ai essayé je >> n'y suis pas arrivé : exemple >> >> If TYP = "AIGG" And ori = 1 Then >> If dx = "" And dy = "b" Then >> num = 3 >> ElseIf dx = "" And dy = "h" Then >> num = 1 >> Else >> num = 2 >> End If >> End If >> >> >> Merci
Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de
plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois.
Mais la question me semblait à la fois générale "peut-on linéariser .. ?"
et particulière avec un exemple.
Dans les deux exemples proposés la méthode fonctionne mais il est clair que
ce n'est pas très lisible (je rappelle que pour certains programmeurs LISP,
qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de
Parenthèses)
Ceci étant, je ne connais pas d'autres langages bénéficiant de la structure
Cond qui remplace avantageusement les listes de "If then else" emboîtés.
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:OwmA9Kj%23DHA.2348@TK2MSFTNGP09.phx.gbl...
Bonjour/Soir,
> On peut même écrire dans ce cas
>
> rep=Iif(Toto=1,10,12)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les
expressions, ce qui en plus peut mener à des problèmes dans d'autres cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai.
'Pourtant, il tente d'évaluer Toto.Valeur = 0
'=> Erreur puisque Toto est nothing
Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
"Patrice Henrio" <patrice.henrio.pasdepub@laposte.net> a écrit dans le
message de news:Ogn6fEj%23DHA.220@TK2MSFTNGP09.phx.gbl
> On peut même écrire dans ce cas
>
> rep=Iif(Toto=1,10,12)
>
> Pour l'autre exemple qui ne s'applique pas à chaque fois on peut
> écrire
>
> Num=Iif(TYP="AIGG" and ori=1,Iif(dx="" and dy="b",3,1),2)
> C'est comme du LISP (ou Scheme pour ceux qui connaissent)
> ou encore If sous VBA en Excel.
>
> "TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
> de news:c1cun0$8uv$1@news-reader4.wanadoo.fr...
>> Bonjour
>>
>> Il est parfois possible de linéariser l'écriture de code. Exemple
>>
>>>>> Transformer
>> if toto=1 then
>> rep
>> else
>> rep
>> end if
>>
>>>>> en
>> if toto=1 then rep else rep
>>
>>
>> Est il possible d'en faira autant avec des elseif??? J'ai essayé je
>> n'y suis pas arrivé : exemple
>>
>> If TYP = "AIGG" And ori = 1 Then
>> If dx = "" And dy = "b" Then
>> num = 3
>> ElseIf dx = "" And dy = "h" Then
>> num = 1
>> Else
>> num = 2
>> End If
>> End If
>>
>>
>> Merci
Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois. Mais la question me semblait à la fois générale "peut-on linéariser .. ?" et particulière avec un exemple. Dans les deux exemples proposés la méthode fonctionne mais il est clair que ce n'est pas très lisible (je rappelle que pour certains programmeurs LISP, qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de Parenthèses) Ceci étant, je ne connais pas d'autres langages bénéficiant de la structure Cond qui remplace avantageusement les listes de "If then else" emboîtés.
"François Picalausa" a écrit dans le message de news:OwmA9Kj%
Bonjour/Soir,
> On peut même écrire dans ce cas > > rep=Iif(Toto=1,10,12)
Sauf que IIf est terriblement lent parce qu'il évalue toutes les expressions, ce qui en plus peut mener à des problèmes dans d'autres cas:
Dim Toto As UneClasse, Resultat As Boolean
'Toto Is Nothing est vrai. 'Pourtant, il tente d'évaluer Toto.Valeur = 0 '=> Erreur puisque Toto est nothing Resultat = IIf(Toto Is Nothing, False, Toto.Valeur = 0)
"Patrice Henrio" a écrit dans le message de news:Ogn6fEj% > On peut même écrire dans ce cas > > rep=Iif(Toto=1,10,12) > > Pour l'autre exemple qui ne s'applique pas à chaque fois on peut > écrire > > Num=Iif(TYP="AIGG" and ori=1,Iif(dx="" and dy="b",3,1),2) > C'est comme du LISP (ou Scheme pour ceux qui connaissent) > ou encore If sous VBA en Excel. > > "TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message > de news:c1cun0$8uv$ >> Bonjour >> >> Il est parfois possible de linéariser l'écriture de code. Exemple >> >>>>> Transformer >> if toto=1 then >> rep >> else >> rep >> end if >> >>>>> en >> if toto=1 then rep else rep >> >> >> Est il possible d'en faira autant avec des elseif??? J'ai essayé je >> n'y suis pas arrivé : exemple >> >> If TYP = "AIGG" And ori = 1 Then >> If dx = "" And dy = "b" Then >> num = 3 >> ElseIf dx = "" And dy = "h" Then >> num = 1 >> Else >> num = 2 >> End If >> End If >> >> >> Merci
Jean-Marc
"Patrice Henrio" a écrit dans le message de news:uBe17pj%
Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois. Mais la question me semblait à la fois générale "peut-on linéariser .. ?" et particulière avec un exemple. Dans les deux exemples proposés la méthode fonctionne mais il est clair
que
ce n'est pas très lisible (je rappelle que pour certains programmeurs
LISP,
qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de Parenthèses)
Hello,
on dit aussi "Longue et Insipide Suite de Parenthèses", qui se traduit en anglais avec les mêmes initiales et dans le même ordre :-)
Jean-marc
"Patrice Henrio" <patrice.henrio.pasdepub@laposte.net> a écrit dans le
message de news:uBe17pj%23DHA.1956@TK2MSFTNGP10.phx.gbl...
Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de
plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois.
Mais la question me semblait à la fois générale "peut-on linéariser .. ?"
et particulière avec un exemple.
Dans les deux exemples proposés la méthode fonctionne mais il est clair
que
ce n'est pas très lisible (je rappelle que pour certains programmeurs
LISP,
qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de
Parenthèses)
Hello,
on dit aussi "Longue et Insipide Suite de Parenthèses", qui se traduit en
anglais avec les mêmes initiales et dans le même ordre :-)
"Patrice Henrio" a écrit dans le message de news:uBe17pj%
Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois. Mais la question me semblait à la fois générale "peut-on linéariser .. ?" et particulière avec un exemple. Dans les deux exemples proposés la méthode fonctionne mais il est clair
que
ce n'est pas très lisible (je rappelle que pour certains programmeurs
LISP,
qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de Parenthèses)
Hello,
on dit aussi "Longue et Insipide Suite de Parenthèses", qui se traduit en anglais avec les mêmes initiales et dans le même ordre :-)
Jean-marc
Patrice Henrio
OK.
"Jean-Marc" a écrit dans le message de news:403a5223$0$7038$
"Patrice Henrio" a écrit dans le message de news:uBe17pj% > Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de > plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois. > Mais la question me semblait à la fois générale "peut-on linéariser ..
?"
> et particulière avec un exemple. > Dans les deux exemples proposés la méthode fonctionne mais il est clair que > ce n'est pas très lisible (je rappelle que pour certains programmeurs LISP, > qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de > Parenthèses)
Hello,
on dit aussi "Longue et Insipide Suite de Parenthèses", qui se traduit en anglais avec les mêmes initiales et dans le même ordre :-)
Jean-marc
OK.
"Jean-Marc" <nospamjean_marc_n2@yahoo.fr> a écrit dans le message de
news:403a5223$0$7038$ba620e4c@news.skynet.be...
"Patrice Henrio" <patrice.henrio.pasdepub@laposte.net> a écrit dans le
message de news:uBe17pj%23DHA.1956@TK2MSFTNGP10.phx.gbl...
> Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de
> plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois.
> Mais la question me semblait à la fois générale "peut-on linéariser ..
?"
> et particulière avec un exemple.
> Dans les deux exemples proposés la méthode fonctionne mais il est clair
que
> ce n'est pas très lisible (je rappelle que pour certains programmeurs
LISP,
> qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de
> Parenthèses)
Hello,
on dit aussi "Longue et Insipide Suite de Parenthèses", qui se traduit en
anglais avec les mêmes initiales et dans le même ordre :-)
"Jean-Marc" a écrit dans le message de news:403a5223$0$7038$
"Patrice Henrio" a écrit dans le message de news:uBe17pj% > Je suis bien d'accord que cela ne s'applique pas à chaque fois et que de > plus c'est plus lent. Nous en avions déjà discuté il y a quelques mois. > Mais la question me semblait à la fois générale "peut-on linéariser ..
?"
> et particulière avec un exemple. > Dans les deux exemples proposés la méthode fonctionne mais il est clair que > ce n'est pas très lisible (je rappelle que pour certains programmeurs LISP, > qui n'utilise que des fonctions, signifiait Liste Insipide et Stupide de > Parenthèses)
Hello,
on dit aussi "Longue et Insipide Suite de Parenthèses", qui se traduit en anglais avec les mêmes initiales et dans le même ordre :-)
Jean-marc
TouTenN
C'est bien ce que je pensais : Il n'est pas toujours possible de linéariser du code
Merci pour vos mises en garde
Guy
C'est bien ce que je pensais : Il n'est pas toujours possible de linéariser
du code