IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème dans les successions de Sub avec SELECT [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Par défaut Problème dans les successions de Sub avec SELECT
    Bonjour, mon programme comporte dans un module trois procédures SUB

    La procédure SUB BONJOUR()

    La procédure SUB EXAMINE()

    La procédure SUB PARTIE()


    La procédure Bonjour contient un SELECT ET END SELECT. Une variable déclarée public prends la valeur vraie lorsque l'un des case est respectée.

    La procédure EXAMINE fonctionne exactement comme la procédure Bonjour. Elles sont quasiment identiques à part que les variables changent ainsi que les cases



    Venons au problème...

    Dans ma procédure SUB PARTIE, nous trouvons le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub partie_en_cours()
     
            If validation(0) = False Then
                bonjour()
            End If
            examine()
        End Sub
    Le problème est que ça ne marche pas ! En faites, il me renvoie dans la première procédure l'instruction CASE ELSE même si le mot cherché est le bon. Si le mot cherché est le bon, la variable passe malgré tout à TRUE et du coup la procédure EXAMINE() démarre...

    Ensuite, si dans le code ci-dessus, j'enlève la procédure EXAMINE(), la procédure BONJOUR() fonctionne parfaitement !

    En résumé : Sans EXAMINE aucun problème ! Avec EXAMINE, le sub BONJOUR fait un peu ce qu'il veut... loool

    C'est grave docteur ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Le code que tu as posté ne suffit pas à répondre, montre tout le code concerné...

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Par défaut
    D'accord...

    Alors voici le SUB BONJOUR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     Sub bonjour()
     
            Select Case ecran1.box_utilisateur.Text.ToUpper
     
                Case "BONJOUR"
                    ecran1.box_utilisateur.Text = ""
                    ecran1.chat_parle.Text = discours_chat(2)
                    validation(0) = True
     
                Case "SALUT"
                    ecran1.box_utilisateur.Text = ""
                    ecran1.chat_parle.Text = discours_chat(3)
                    validation(0) = True
     
                Case "BONJOURNO"
                    ecran1.box_utilisateur.Text = ""
                    ecran1.chat_parle.Text = discours_chat(5)
                    validation(0) = True
     
                Case "HELLO"
     
                    ecran1.chat_parle.Text = discours_chat(6)
                    validation(0) = True
     
                Case Else
                    ecran1.box_utilisateur.Text = ""
                    ecran1.chat_parle.Text = discours_chat(4)
     
            End Select
     
     
     
     
     
     
        End Sub '1er élement de la partie

    Le Sub Examine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Sub examine()
     
            Select Case ecran1.box_utilisateur.Text.ToUpper.ToUpper
     
                Case "EXAMINE POUBELLE"
                    vu(0) = True
                    ecran1.chat_parle.Text = discours_chat(8)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE BOITE AUX LETTRES"
                    vu(1) = True
                    validation(1) = True
                    ecran1.chat_parle.Text = discours_chat(7)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE SONNETTE"
                    vu(4) = True
                    ecran1.chat_parle.Text = discours_chat(10)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE PORTE"
                    vu(3) = True
                    ecran1.chat_parle.Text = discours_chat(9)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE VOLETS"
                    vu(2) = True
                    ecran1.chat_parle.Text = discours_chat(11)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE SERRURE"
                    vu(6) = True
                    validation(3) = True
                    ecran1.chat_parle.Text = discours_chat(15)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE VOLET"
                    ecran1.chat_parle.Text = discours_chat(18)
                    ecran1.box_utilisateur.Text = ""
     
     
                Case "EXAMINE BOITES AUX LETTRES"
                    ecran1.chat_parle.Text = discours_chat(18)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE BOITE AU LETTRES"
                    ecran1.chat_parle.Text = discours_chat(18)
                    ecran1.box_utilisateur.Text = ""
     
                Case Else
                    ecran1.chat_parle.Text = discours_chat(4)
                    ecran1.box_utilisateur.Text = ""
     
            End Select
     
        End Sub '2éme élement de la partie

    Et le tout dernier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
        Sub partie_en_cours()
     
            If validation(0) = False Then
                bonjour()
            End If
            examine()
     
     
     
     
     
        End Sub

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai pas tout compris, mais je vois au moins 2 problèmes évidents :

    - Dans bonjour, tu mets toujours box_utilisateur.Text = "", donc forcément quand tu regardes ensuite la valeur de box_utilisateur.Text dans examine, c'est vide et ça va donc dans le Else... je ne suis pas sûr que ce soit ça que tu veux

    - Tu mets validation(0) à True à différents endroits, mais tu ne le remets jamais à False, donc une fois que c'est à True, ça y reste...

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Par défaut
    En faites, l'instruction ecran1.box_utilisateur.Text = "" sert à vider le textbox où tape l'utilisateur. C'est lui qui donne des ordres comme "EXAMINE POUBELLE" !

    Et effectivement, la valeur passée à True doit le rester !

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK... mais j'ai toujours pas compris ce qui n'allait pas. Peux-tu essayer d'expliquer, le plus précisément possible :
    - ce que tu veux qu'il se passe
    - ce qu'il se passe réellement

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    En gardant
    Citation Envoyé par toutoune95800 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     Sub bonjour()
     
            Select Case ecran1.box_utilisateur.Text.ToUpper
     
                Case "BONJOUR"
                    ecran1.box_utilisateur.Text = ""
                    ecran1.chat_parle.Text = discours_chat(2)
                    validation(0) = True
     
                Case "SALUT"
                    ecran1.box_utilisateur.Text = ""
                    ecran1.chat_parle.Text = discours_chat(3)
                    validation(0) = True
     
                Case "BONJOURNO"
                    ecran1.box_utilisateur.Text = ""
                    ecran1.chat_parle.Text = discours_chat(5)
                    validation(0) = True
     
                Case "HELLO"
     
                    ecran1.chat_parle.Text = discours_chat(6)
                    validation(0) = True
     
                Case Else
                    ecran1.box_utilisateur.Text = ""
                    ecran1.chat_parle.Text = discours_chat(4)
     
            End Select
     
        End Sub '1er élement de la partie
    et
    Citation Envoyé par toutoune95800 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Sub examine()
     
            Select Case ecran1.box_utilisateur.Text.ToUpper.ToUpper
     
                Case "EXAMINE POUBELLE"
                    vu(0) = True
                    ecran1.chat_parle.Text = discours_chat(8)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE BOITE AUX LETTRES"
                    vu(1) = True
                    validation(1) = True
                    ecran1.chat_parle.Text = discours_chat(7)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE SONNETTE"
                    vu(4) = True
                    ecran1.chat_parle.Text = discours_chat(10)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE PORTE"
                    vu(3) = True
                    ecran1.chat_parle.Text = discours_chat(9)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE VOLETS"
                    vu(2) = True
                    ecran1.chat_parle.Text = discours_chat(11)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE SERRURE"
                    vu(6) = True
                    validation(3) = True
                    ecran1.chat_parle.Text = discours_chat(15)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE VOLET"
                    ecran1.chat_parle.Text = discours_chat(18)
                    ecran1.box_utilisateur.Text = ""
     
     
                Case "EXAMINE BOITES AUX LETTRES"
                    ecran1.chat_parle.Text = discours_chat(18)
                    ecran1.box_utilisateur.Text = ""
     
                Case "EXAMINE BOITE AU LETTRES"
                    ecran1.chat_parle.Text = discours_chat(18)
                    ecran1.box_utilisateur.Text = ""
     
                Case Else
                    ecran1.chat_parle.Text = discours_chat(4)
                    ecran1.box_utilisateur.Text = ""
     
            End Select
     
        End Sub '2éme élement de la partie
    Tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Sub partie_en_cours()
     
                    If Not Validation(0) Then bonjour() Else examine()
     
        End Sub
    Normalement tu obtiendras ce que tu souhaites.
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    J'ai tout de même une question.

    Dans quel contexte appelles-tu ta procedure partie_en_cours() ?

    Dans mes tests, je l'appelle après une action utilisateur sur un bouton.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            partie_en_cours()
        End Sub
    Ce qui permet qu'une fois que l'utilisateur a validé la première partie (saisie d'un bonjour traité par bonjour()) il n'aura plus que la deuxième partie en accés (saisie d'un autre texte traité par examine()).
    Est-ce bien cela que tu souhaites ?
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Par défaut
    En faites, "Partie en cours" reprend dans des structures conditionnelles les différents SUB ! ! !

    Enfin bref, j'ai tout de même réussi... J'ai crée un nouveau projet et j'ai recommence et ça marche ... Alors, maintenant je cherche ce que j'ai pu faire pour faire dérailler le reste !

    En tout cas merci à tous pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème sur les critères de filtre avec une variable dans Array
    Par badege3378 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/08/2014, 11h36
  2. problème dans un livre d'or avec php et mysql
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/12/2005, 18h04
  3. Requête SELECT problème dans les résultats trouvés ...
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/10/2005, 12h46
  4. [HVMenu] problème dans les pages ASPX (urgent svp)
    Par hatembr dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/01/2005, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo