problème de select ..... if then else .... (je ne comprend pas!!!!! )

problème de select ..... if then else .... (je ne comprend pas!!!!! ) - VB/VBA/VBS - Programmation

Marsh Posté le 27-04-2004 à 13:57:38    

Bonjour
 
J'ai un problème vraiment incompréhensible, je fais un select (d'un parametre qui peut etre g1,g2,g3,g4) et dans chaque cas je teste si le deuxieme parametre est a vrai ou faux.
Donc voici mon code:
 
Select Case groupe
        Case "G1":
            If passe Then
                debx = der_ligne_G1
                x = der_ligne_G1
                MsgBox "argpresent"
            Else
                debx = der_ligne_kembs_G1
                x = der_ligne_kembs_G1
            End If
        Case "G2":
            If passe Then
                debx = der_ligne_G2
                x = der_ligne_G2
                MsgBox "argpresent"
            Else
                debx = der_ligne_kembs_G2
                x = der_ligne_kembs_G2
            End If
        Case "G3":
            If passe Then
                debx = der_ligne_G3
                x = der_ligne_G3
                MsgBox "argpresent"
            Else
                debx = der_ligne_kembs_G3
                x = der_ligne_kembs_G3
            End If
        Case "G4":
            If Not passe Then
                   MsgBox "c bon" & der_ligne_kembs_G4
                debx = der_ligne_kembs_G4
                x = der_ligne_kembs_G4
           Else
                debx = der_ligne_G4
                x = der_ligne_G4
                MsgBox " pas de kembs du g4"
            End If
        End Select
    ancienx = x
    MsgBox x
 
Et donc j'ai testé pour le g4 mais le problème serait le même pour les autres, si passe est à vrai x vaut bien der_ligne_g4 mais si jamais passe est a faux x vaut 0 (alors  que j'ai testé mon der_ligne_kembs_g4 vaut toujours 1) ce qui est du je crois au fait qu'il ne passe pas dans le THEN à ce moment là.
 
Si quelqu'un pouvait m'aider ce serait sympa (me dire où est mon erreur ou me donner une solution équivalente) parce que là ca fait kan meme un bout de temps que je suis la dessus.
 
Merci.
 
PS: J'ai testé aussi si par hasard mon paramètre booléen n'était pas bon mais sur un autre IF qui n'est pas dans le select ça fonctionne correctement.

Reply

Marsh Posté le 27-04-2004 à 13:57:38   

Reply

Marsh Posté le 27-04-2004 à 14:07:32    

Question idiote: passe est-il bien déclaré en boolean, explicitement ?


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
Reply

Marsh Posté le 27-04-2004 à 14:11:54    

Oui il est déclaré en booléen. Le problème c'est qu'il passe dans le else quand il faut et donc c'est bon mais il ne veux pas passer dans le then et mettre mon x=der_ligne_kembs_g4 ce qui laisse x=0 et lance le deboggeur.

Reply

Marsh Posté le 27-04-2004 à 15:59:42    

Et tu le remets bien à False a chaque fois, après chaque passage dans la boucle?


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
Reply

Marsh Posté le 27-04-2004 à 16:14:38    

Je crois que j'ai résolu le problème grâce à un autre forum.
Enfin pour le moment ça a l'air de marcher.
Apparemment, ce serait parce que j'avais pas mis en haut de mon module Option Explicit, mais vu que je ne sais pas à quoi ça sert la prochaine fois je le mettrais partout.

Reply

Marsh Posté le 27-04-2004 à 17:08:21    

Option Explicit ça sert à forcer la déclaration des variables, alors si tu ne l'avait pas et que tu me dis que la variable "passe" était déclarée Boolean, j'ai un gros doute...


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
Reply

Marsh Posté le 28-04-2004 à 16:10:09    

Je comprend que tu puisse avoir un doute mais bon maintenant ça marche alors tant mieux.

Reply

Marsh Posté le 28-04-2004 à 16:24:32    

En mettant option explicit, il considère que la variable est obligatoirement locale, alors que sinon, tu l'as peut-être déclarée globale ailleurs?


---------------
DaViSo http://daviso.free.fr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed