none
Comment faire pour que les conditions (if...then...) n'ont pas d'ordre ? RRS feed

  • Question

  • Bonjour, je suis débutant, je pratique du visual basic, et ce que je voudrais savoir, c'est :

    comment fait on pour que les conditions (If [condition], then ...) ne soient pas ordonnées.

    Par exemple dans une application console, je voudrait que si l'utilisateur tape quelque chose, ça ne soit pas que la première condition que j'ai écrit ! Je veux que ça soit soit la 1e, soit la 2e, soit la 3e,... ou soit toutes les autres. 

    Exemple si l'utilisateur de l'application console tape "Salut", Rien ne se passe :

    Module Module1
    
        Sub Main()
    
            If Console.ReadLine = ("Boujour") Then
                Console.WriteLine("Bonjour")
            End If
    
            If Console.ReadLine = ("Salut") Then
                Console.WriteLine("Bonjour")
            End If
    
        End Sub
    
    End Module
    

    Pareil : j'ai essayé comme ceci et rien ne se passe :

    Module Module1
    
        Sub Main()
    
            If Console.ReadLine = ("Boujour") Then
                Console.WriteLine("Bonjour")
            End If
    
        End Sub
    
    End Module
    Module Module2
    
        Sub Main()
    
            If Console.ReadLine = ("Salut") Then
                Console.WriteLine("Bonjour")
            End If
    
        End Sub
    
    End Module

    Je n'arrive pas à savoir comment faire, merci de m'aider.

    PS : si vous savez comment faire pour que les majuscules, quand elles sont tapées, font le même effet que les minuscules, merci de me le dire.

    Antoine.

    mercredi 5 février 2014 20:08

Réponses

  • C'est bon ! J'ai compris ! J'ai procédé autrement,

    Ce que j'ai fais :

    Dim cmds as string
    cmds = console.readline()
    
          Select Case cmds
                
                Case "Bonjour"
                     Console.writeline("Bonjour Monsieur")
         
                Case "Salut"
                     Console.writeline("Bonjour Monsieur")
    
          End Select
    

    Voilà, et puis on peut en faire plein d'autre.

    Merci quand même !

    • Marqué comme réponse Aurel Bera lundi 10 février 2014 13:00
    jeudi 6 février 2014 20:41

Toutes les réponses

  • Bonjour Antoine,

    Si j'i bien compris votre problème la solution est d'utiliser une structure de type "choix multiples".

     En VBA cette structure est assurée par le "Select Case ... End Select".

    Un petit tuto ici ou encore .

    Bonne continuation


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    jeudi 6 février 2014 08:43
  • Bonjour,

    Avez-vous essayer d'utiliser la fonction 'OR'

    Pour moi ça doit fonctionner après si tu as beaucoup de possibilité le mieux est effectivement d'utiliser un SELECT CASE.

    If Console.ReadLine ='Boujour' Or Console.readLine = 'Salut' Then Console.WriteLine("Bonjour")

    end if

    jeudi 6 février 2014 10:08
  • Bonjour, merci MehdiH et Dev_72,

    Je crois que le "Select Case" c'est bien la bonne solution à mon problème, sauf que je ne sais pas si j'ai fais une erreur, mais ça marche que pour le premier choix ("case") : 

    Module Module1 Dim wr As Object Sub Main()

    If console.readline = "123456789" then ' c'est le mot de passe

    Console.clear Select Case (wr) Case wr If Console.ReadLine = "Bonjour" Then Console.WriteLine("Bonjour Antoine") Console.ReadLine() End If Case wr If Console.ReadLine = "Salut" Then Console.WriteLine("Bonjour Antoine") Console.ReadLine() End If Case wr If Console.ReadLine = "salut" Then Console.WriteLine("Bonjour Antoine") Console.ReadLine() End If End Select

    jeudi 6 février 2014 16:24
  • Bonjour,

    J'ai du mal à comprendre ton code !!

    essaye ceci :

    If console.readline = "Bonjour" then 
    Console.writeline("Bonjour Antoine")
    elseif console.readline = "Salut" then
    Console.writeline("Bonjour Antoine")
    elseif console.readline = "Yep kikoo"
    Console.writeline("Bonjour Antoine")
    else console.writeline = "Je n'ai pas compris ce que vous voulez me dire"
    end if
    

    Le select Case pour le faire il faudra affecter a t'es choix au préalable un index comme ceci, je pense que ca marche a tester :

    dim var as int
    
    if console.readline = "Bonjour" then
    var = 1
    elseif console.readline = "Salut" then
    var = 2
    elseif console.readline = " Hello" then
    var = 3
    else var = 4
    end if
    
    Select case var
     case 1 
    console.writeline("Bonjour Antoine")
    case 2 
    console.writeline("Bonjour Antoine")
    case 3
    console.writeline("Bonjour Antoine")
    case 4 
    console.writeline("Je n'ai pas compris ce que vous me dite")
    case else
    console.writeline("Je n'ai pas compris ce que vous avez ecrit")
    
    end select

    jeudi 6 février 2014 17:03
  • Bonsoir,

    Votre code est bon mais il faut taper 1 x "Bonjour" pour la 1e var (jusque là tout est normal), 2 x "Salut" pour la 2e, 3 x "Hello" pour la 3e, et 4 x autre chose pour la 4e var... (c'est un peu embêtant...) J'ai beau changer les nombres, rien ne change (évidemment).

    C'est d'ailleurs pareil pour le "ou" ("or"), ça me fait le même effet. Si je mets : 

         If Console.ReadLine = "Bonjour" Or Console.ReadLine = "salut" Then
         [commande(s)]

    Je dois taper 1x Bonjour, ou 2x salut pour que la commande marche.

    jeudi 6 février 2014 18:22
  • C'est bon ! J'ai compris ! J'ai procédé autrement,

    Ce que j'ai fais :

    Dim cmds as string
    cmds = console.readline()
    
          Select Case cmds
                
                Case "Bonjour"
                     Console.writeline("Bonjour Monsieur")
         
                Case "Salut"
                     Console.writeline("Bonjour Monsieur")
    
          End Select
    

    Voilà, et puis on peut en faire plein d'autre.

    Merci quand même !

    • Marqué comme réponse Aurel Bera lundi 10 février 2014 13:00
    jeudi 6 février 2014 20:41
  • Bonjour Ankr,

    Désolé de revenir aussi tard, je pense que vous avez assimilé l'utilisation de la structure choix multiples, toutefois je préfère quand même proposer ici un autre exemple.

    Voici la problématique, je souhaite que l'application réponde comme suit:

    • si o saisi bonjour ou salut, l'application affiche : Bonjour monsieur
    • si on saisi hola, l'application affiche : Hola señor
    • si on saisi hello, hi l'application affiche : Hello sir
    • si on saisi ciao, l'application affiche : Ciao sir
    • dans toutes les autres, l'application affiche : Pas compris
    Sub Main()
    
       Dim strSaisie As String
       Dim strMessage As String
    
       strSaisie = LCase(Console.ReadLine)
    
       Select Case strSaisie
           Case "bonjour","salut"
               strMessage="Bonjour Monsieur"
           Case "hi","hello"
               strMessage="Hello Sir"
           Case "hola"
               strMessage="Hola Señor"
           Case "Ciao"
               strMessage="Ciao Sir"
           Case Else
               strMessage="Pas compris"
        End Select
    
        Console.WriteLine(strMessage)
    
    End Sub      
    

    Voilà j'espère que ceci dicipera toute confusion

    Bonne continuation


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    dimanche 9 février 2014 22:09