Select case et interval numerique [Résolu]

Messages postés
29
Date d'inscription
dimanche 15 août 2004
Dernière intervention
15 mars 2007
- 15 nov. 2006 à 23:38 - Dernière réponse :
Messages postés
29
Date d'inscription
dimanche 15 août 2004
Dernière intervention
15 mars 2007
- 16 nov. 2006 à 19:21
Bonjour,

J'ai un ensemble de code que je voudrais simplifier en passant par un select case mais y un petit probléme qui se pose a moi.
Voici une parti de code:
 If (Val(Enerelec) < 0) And (Val(Enerelec) > 1 / 99) Then
            Calculateur.joule.Text = "J"
        End If
        If (Val(Enerelec) < (1 / 99)) And (Val(Enerelec) > (1 / 99999)) Then
            Calculateur.joule.Text = "mJ"
            Enerelec = Enerelec * 1000
        End If
Mon PB ce que je dois avoir un interval de valeur numerique a chaque fois, j'ai essayer ce code:
select case enerelec
    case (Val(Enerelec) < 0) And (Val(Enerelec) > 1 / 99)

            Calculateur.joule.Text = "J"
   case (Val(Enerelec) < (1 / 99)) And (Val(Enerelec) > (1 / 99999))

            Calculateur.joule.Text = "mJ"

            Enerelec = Enerelec * 1000
end select.
Mais le resultat est incorrect.
j'ai essayé:
select case enerelec

    case is < 0 And > 1 / 99


            Calculateur.joule.Text = "J"

   case is  < (1 / 99) And  > (1 / 99999)


            Calculateur.joule.Text = "mJ"


            Enerelec = Enerelec * 1000

end select.
et aussi
select case enerelec


    case is < 0  > 1 / 99



            Calculateur.joule.Text = "J"


   case is  < (1 / 99)   > (1 / 99999)



            Calculateur.joule.Text = "mJ"



            Enerelec = Enerelec * 1000


end select.
Mais idem.
Donc j'aimerais savoir  comment je peux réaliser cette fonction qui est  présent 9 fois pour 9 variable différentes et  qui contient 11 IF end IF pour réalisé la fonction demandé et qui fonction.
L'objectif et de gagner un peux de place et que le programme soit moin lourd.
Merci.
Cordialement.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 15 nov. 2006 à 23:59
3
Merci
Salut,

essaie comme ceci :

Select Case enerelec
    Case (1 / 99) To 0
        Calculateur.joule.Text = "J"
    Case (1 / 99999) To (1 / 99)
        Calculateur.joule.Text = "mJ"
        Enerelec = Enerelec * 1000
End Select

--Mortalino-- 

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--

Merci mortalino 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de mortalino
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 16 nov. 2006 à 00:20
0
Merci
    Select Case enerelec       Case Is >1 / 99: Calculateur.joule.Text "J"       Case Is >1 / 99999: Calculateur.joule.Text "mJ"
       Case Else:
       End Select

Daniel
Commenter la réponse de Gobillot
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 16 nov. 2006 à 00:35
0
Merci
Salut,

Gobillot, je suis désolé (à tord, peut-être) mais je ne suis pas d'accord, si enerelec possède une valeur de 3, le 1er Case s'exécutera, alors que gbawar ne veut pas que la valeur soit supérieure à 0.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 16 nov. 2006 à 00:42
0
Merci
Salut,
on sait pas trop ce qu'il veux parce qu'il a mis ses test inversés

case is < 0 And > 1 / 99   est impossible

j'ai donc fait une supposition:
de toutes façons il vaut mieux tester tous les cas pour ne pas avoir de surprise:



Select Case enerelec
       Case Is >= 0:  ???
       Case Is >= 1 / 99:
                Calculateur.joule.Text = "J"
       Case Is >= 1 / 99999:
                Calculateur.joule.Text = "mJ"
                Enerelec = Enerelec * 1000
       Case Else:   ???
       End Select

Daniel
Commenter la réponse de Gobillot
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 16 nov. 2006 à 00:43
0
Merci
Mon explication précédante ne tient pas la route^^,
mais en gros, la valeur est soit entre 0 et 1 / 9999, soit entre 1 / 9999 et 1 / 99

Donc ça donnerait plutôt ça :

Select Case enerelec
    Case 0 To(1 / 99999)
        Calculateur.joule.Text = "J"
    Case (1 / 99999) To (1 / 99)           
        Calculateur.joule.Text = "mJ"     
        Enerelec = Enerelec * 1000
End Select

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 16 nov. 2006 à 01:05
0
Merci
re,
le zéro est mal placé, mais j'ai pas encore compris ses intervals

il y a 3 points donc 4 intervals:
- 1    < 0   
- 2    0 à 1/99999   
- 3    1/99999 à 1/99
- 4    > 1/99
                                0                               1/99999                  1/99
   --------------------|-----------------------|-------------------|----------------------

dans un sens:
Select Case enerelec
       Case Is >= 1/99:           'cas 4
       Case Is >= 1 / 99999:   'cas 3
       Case Is >= 0:                'cas 2
       Case Else:                     'cas 1
       End Select

ou dans l'autre:

Select Case enerelec

       Case Is < 0:                'cas 1

       Case Is < 1 / 99999:   'cas 2

       Case Is < 1/99:           'cas 3

       Case Else:                   'cas 4

       End Select

Daniel
Commenter la réponse de Gobillot
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 16 nov. 2006 à 01:40
0
Merci
Belle description, avec ça, il ne peut pas se planter dans son explication.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
Messages postés
29
Date d'inscription
dimanche 15 août 2004
Dernière intervention
15 mars 2007
- 16 nov. 2006 à 19:01
0
Merci
Voici le code que j'ai mis et qui fonctionne:
 Select Case Enerelec
            Case (1 / 100) To 0
                Calculateur.joule.Text = "J"
            Case (1 / (99999 + 1)) To (1 / 101)
                Calculateur.joule.Text = "mJ"
                Enerelec = Enerelec * 1000
            Case (1 / (999999999 + 1)) To (1 / 100001)
                Calculateur.joule.Text = "µJ"
                Enerelec = Enerelec * 1000000
        End Select

Merci a vous tous cordialement.
Commenter la réponse de gbawar
Messages postés
29
Date d'inscription
dimanche 15 août 2004
Dernière intervention
15 mars 2007
- 16 nov. 2006 à 19:21
0
Merci
Aprés verification de ma par ce code et le bon : (Code de Mortalino)
Select Case enerelec
    Case (1 / 99) To 0
        Calculateur.joule.Text = "J"
    Case (1 / 99999) To (1 / 99)
        Calculateur.joule.Text = "mJ"
        Enerelec = Enerelec * 1000
End Select

ernoce merci@+
Commenter la réponse de gbawar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.