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

Macros et VBA Excel Discussion :

SELECT CASE sortie multiple


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Matthieu_12 Voir le message
    je ne comprends plus rien à l'utilité du Select Case.
    Bin... comme son nom l'indique, ça sert à sélectionner un cas (et un seul).

    La plupart du temps, ça s'utilise ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select Case MonChoix
    Case 1
        Action1
    Case 2 To 5
        Action2
    Case < 100
       Action3
    Case Else
       Action4
    End Select
    Utiliser Select Case True est une sorte de perversion de ce principe, même si ça reste fonctionnel et syntaxiquement valable.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
      2  0

  2. #22
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Matthieu_12 Voir le message
    [...]
    Ensuite, non, je ne pense pas que c'était à visée pédagogique car cela a tout naturellement produit l'exact effet inverse : je ne comprends plus rien à l'utilité du Select Case.[...]
    Je me doute que ce n'est pas à visée pédagogique, puisque la "pédagogie" est absente de cet exercice inepte.

    Lis mon billet de blog, il explique à quoi sert le Select Case, qui est utilisé pour éviter une suite de If lorsque le test porte sur les valeurs possibles d'une seule expression
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      1  0

  3. #23
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Re bonjour, Matthieu
    Garde-toi de tirer trop vite des conclusions.
    La vocation de cet exercice n'est pas celle que tu penses (résoudre une difficulté par tel ou tel autre moyen) mais celle de vérifier que tous les mécanismes d'utilisation de Select Case ont bien été appréhendés.
    Ce n'est sans doute pas par hasard qu'ont été définies les clauses montrées (de chaque cas).
    Je vais te donner deux indices (mais pas faire ton devoir, dont je ne donnerai la solution que dans quelques jours, comme dit plus haut et pour les raisons exposées plus haut) :
    - tout est dans cette affaire l'art de déterminer intelligemment l'ordre dans lequel traiter les cas. Et c'est cet ordre là, qui permettra de parvenir en une seule instruction Select Case à traiter la totalité - 1 des cas exposés. C'est à mon humble avis cela (cette aptitude-là), que ton professeur veut tester. Et je suis à ce propos persuadé de ce qu'il a déjà exposé, à un instant ou à l'autre, l'intérêt de bien déterminer cet ordre de traitement.
    - le traitement du cas manquant (si > 10 caractères) se fait ensuite de la manière la plus simple in fine (juste avant le msgbox)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      1  4

  4. #24
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    C'est juste du blabla. On peut arriver au même résultat, souhaité par Mathieu, avec des if sans dénaturer la construction du Select Case, à moins que tu n'arrives à montrer une solution avec Select que l'on ne pourrait avoir avec des If (dans le cas présent)..

    Select Case est fait pour tester les différentes valeurs d'une même expression. Point. Tout autre utilisation est déviée et relève pour moi d'une mauvaise façon de programmer qui va amener de la confusion au moment de la maintenance et de l'évolution du code. Select Case a été créé uniquement pour éviter de devoir répéter l'expression dont on teste les valeurs. En fait, on peut très bien se passer de Select case qui est juste une construction de confort (et qui permet un "gain" de performances puisque l'expression n'est évaluée qu'une fois, sur la ligne Select.

    Et je précise que c'est une spécificité du VBA que de ne tester les cas que jusqu'au cas valide, en ne passant pas sur les suivants. Dans les autres langages, il faut mettre un Break; pour que les autres cas ne soient pas évalués après le premier validé.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      3  0

  5. #25
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Du "blabla" ?
    Ah ... Sans doute, mais uniquement si l'on corrige ceci :
    que l'on ne pourrait avoir avec des If
    par
    "que l'on ne pourrait avoir avec des If .. elseif .."
    sauf, bien évidemment, à ne pas se préoccuper du nombre (toujours total) des comparaisons à faire
    Mais alors : -->> si l'on y va à coups de elseifs, on n'échappera pas à la nécessité (idem que pour les case de select case) de bien choisir l'ordre de traitement des clauses. Et si l'on fait harakiri des elseifs, on sombre alors forcément dans la lenteur inhérente à l'examen systématique de tous les cas !

    A ce propos : je ne crois pas avoir vu jusqu'ici une proposition à coups de elseifs ... Me trompe-je ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      1  4

  6. #26
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par unparia Voir le message
    Du "blabla" ?[...]
    "que l'on ne pourrait avoir avec des If .. elseif .."[...]
    Mathieu veut justement plusieurs cas (et donc pas de If... ElseIf). C'est JUSTEMENT de sa demande de pouvoir/devoir évaluer plusieurs cas avec Select qu'est né ce "débat".

    La demande de Mathieu ne peut être VALABLEMENT rencontrée que par une succession de IF... End If et justement pas par des If... ElseIf... Endif qui ne permet de répondre qu'à une condition rencontrée, tout comme le bloc Select ... End Select, si l'on veut en tout cas utiliser CORRECTEMENT les constructions mises à notre disposition par le langage.

    Mercatog puis Menhir ont donné LA réponse (unique, à mon sens si on veut une solution professionnelle) à la demande de Mathieu tout au début de la discussion. C'est à pleurer, quand même, d'en arriver à autant d'imbécilité dans les réponses proposées.

    Citation Envoyé par unparia Voir le message
    [...]
    A ce propos : je ne crois pas avoir vu jusqu'ici une proposition à coups de elseifs ... Me trompe-je ?
    Comment une réponse sensée pourrait-elle être formulée avec If... ElseIf... End If puisque cette construction NE PERMET PAS de répondre à la question de Mathieu qui veut pouvoir "empiler" les cas possibles. Le cas qu'il a cité est suffisamment explicite, non?

    Toute construction à coup de Select pour se pavaner n'est que pollution du forum. Pauvre de nous!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      3  0

  7. #27
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    La demande de Mathieu ne peut être VALABLEMENT rencontrée que par une succession de IF... End If et justement pas par des If... ElseIf... Endif qui ne permet de répondre qu'à une condition rencontrée, tout comme le bloc Select ... End Select, si l'on veut en tout cas utiliser CORRECTEMENT les constructions mises à notre disposition par le langage.
    Comment une réponse sensée pourrait-elle être formulée avec If... ElseIf... End If puisque cette construction NE PERMET PAS de répondre à la question de Mathieu qui veut pouvoir "empiler" les cas possibles. Le cas qu'il a cité est suffisamment explicite, non?
    HA ...
    A dans une semaine, donc . Et je serai à ce rendez-vous (traitement par select case déjà fait dans mon humble demeure).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  5

  8. #28
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Matthieu_12 Voir le message
    Par ailleurs, il nous a également été demandé de créer un menu[...]
    Il faut créer une autre discussion pour cela, si tu as un problème avec ce cas qui n'est pas identique à celui évoqué dans ton post initial. Parce que dans le cas évoqué dans ton message de 18:09, la construction Select Case... End Select est tout à fait valide, puisque tu évalues les valeurs possibles d'une même expression ( Val(q) ). C'est JUSTEMENT pour ce genre de cas que la construction Select Case a été imaginée (voir mon billet de blog déjà cité).

    Ta construction à coup de If... ElseIf... End If est parfaitement fonctionnelle, mais dans ce cas (différent du premier cas que tu évoques), tu pourrais utiliser Select Case qui est juste une construction de confort, apte à remplacer le bloc If X then.. ElseIf X Then End If, car elle évite la répétition (et les multiples évaluations) de X.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

  9. #29
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par unparia Voir le message
    HA ...
    A dans une semaine, donc . Et je serai à ce rendez-vous (traitement par select case déjà fait dans mon humble demeure).
    Ben alors crache ta valda maintenant, sinon c'est du vent, du blabla, du bullshit, parce que personne ne reviendra dans une semaine voir si tu tiens ta parole, que tu ne tiendras pas, comme à maintes reprises sur nos forums.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      1  0

  10. #30
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Ben alors crache ta valda maintenant,
    Il me semble avoir été assez clair sur ce point: en aucun cas avant remise des devoirs.
    Moi, je serai là dans une semaine. Et le sujet "montera" alors suffisamment pour que ceux (dont toi ) ne le ratent pas ... (ce que je ne crois pas, en fonction de l'expérience que j'ai acquise de tes présences "préférées" ).
    Mais si tu le veux : je pourrais toujours t'adresser un MP pour que ne t'échappe pas cette intervention
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      1  4

  11. #31
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par unparia Voir le message
    Il me semble avoir été assez clair sur ce point: en aucun cas avant remise des devoirs.
    Moi, je serai là dans une semaine. Et le sujet "montera" alors suffisamment pour que ceux (dont toi ) ne le ratent pas ... (ce que je ne crois pas, en fonction de l'expérience que j'ai acquise de tes présences "préférées" ).
    Mais si tu le veux : je pourrais toujours t'adresser un MP pour que ne t'échappe pas cette intervention
    C'est celàààà, ouiiiii
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

  12. #32
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Saluts,
    un tas de broutilles pour si peu.
    Citation Envoyé par Matthieu_12 Voir le message
    Salut, voici un petit bout de code fonctionnel.

    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 j()
    Dim r, q As String
    r = InputBox("entrez une valeur")
    Select Case True
        Case r Like "bateau": MsgBox ("Mot bateau")
        Case r Like "velo": MsgBox ("Mot velo")
        Case Left(r, 1) = "f": MsgBox ("commence par la lettre f")
        Case Right(r, 1) = "e": MsgBox ("termine par la lettre e")
        Case Len(r) > 10: MsgBox ("+ 10 lettres")
        Case r Like "*ed*": MsgBox ("contient ed")
        Case Else: MsgBox ("terminado pepito")
    End Select
    Call menu
    End Sub
    Pourriez-vous, je vous prie, m'orienter vers une méthode simple et efficace pour que le programme liste en sortie les cas vérifiés ?

    Par exemple, si l'utilisateur entre la valeur "acfkedmlpse" en entrée, ça doit lui afficher en sortie :
    Tel que posée, en effet il n'y avait pas lieu de spéculer. Les deux premières réponses étaient suffisantes.
    Les interrogations suivantes faisaient sortir du cadre et auraient pu être formulées comme suggestion de cas d'exercice intéressant.
    Elles éloignent de la cible du besoin, tout comme la remarque discourtoise qui s'y réfère. Les comptes se règlent autrement.

    ------

    Citation Envoyé par Matthieu_12 Voir le message
    Salut.

    Merci pour vos réponses.

    Menhir, j'avais pensé faire quelque-chose d'exactement similaire à ce que tu as fait mais je ne pensais pas que c'était valide d'un point de vue syntaxique. Concernant le Select Case, je précise qu'il s'agit d'une demande de notre professeur : ça nous est imposé.

    Par ailleurs, en relisant mon code, je ne comprends même pas comment il se fait que la sortie n'indique pas tous les cas vérifiés — ou alors je ne le comprends que trop bien : le Select Case ignore les Case suivant celui qui s'est avéré positif. Est-ce cela ?
    Voila qu'il confirme le besoin : A savoir pouvoir afficher a la sortie 3 lignes de texte correspondant aux tests.
    On comprend qu'il n'a pas suivi/compris le cours, en remarquant un peu la déclaration de deux variables, dont une seule est utilisée.
    Il ne doit y avoir qu'une seule ligne de MsgBox a la fin des tests. La 2eme variable texte qui concatène les différents cas.
    Le Select Case est exigée, mais pas comme il l'a composée. Voir pourquoi ci-dessous.


    ------

    Citation Envoyé par Matthieu_12 Voir le message
    Par ailleurs, il nous a également été demandé de créer un menu. Je cite :



    Voici mon humble production, bien évidemment fonctionnelle :

    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
    Sub menu()
    Dim q As String
    q = InputBox("1 = exercice 1" & Chr(13) & "2 = exercice 2" & Chr(13) & "3 = quitter")
    If Val(q) = 1 Then
        MsgBox ("ex1")
        Call j
    ElseIf Val(q) = 2 Then
        MsgBox ("ex2")
        Call k
    Else
        MsgBox ("hasta la vista baby")
        Exit Sub
    End If
    End Sub
     
     
    Sub j()
    Dim r, q As String
    r = InputBox("entrez une valeur")
    Select Case True
        Case r Like "bateau": MsgBox ("Mot bateau")
        Case r Like "velo": MsgBox ("Mot velo")
        Case Left(r, 1) = "f": MsgBox ("commence par la lettre f")
        Case Right(r, 1) = "e": MsgBox ("termine par la lettre e")
        Case Len(r) > 10: MsgBox ("+ 10 lettres")
        Case r Like "*ed*": MsgBox ("contient ed")
        Case Else: MsgBox ("terminado pepito")
    End Select
    Call menu
    End Sub
     
    Sub k()
        MsgBox ("exo 2 aqui")
        Call menu
    End Sub
    Auriez-vous, à tout hasard, non pas des conseils d'optimisation mais des suggestions alternatives de menu ? J'entends par là : une fonction menu ou un procédé bien différent du mien.

    En espérant ne pas déclencher un nouveau conflit intergalactique !
    Enfin tout est dit. Une déplorable récursivité inter procédures : j, k, menu, a la place d'une boucle While True pour afficher un menu ... pas la peine de détailler, ni discourir sur le reste. On voit bien que le demandeur a des pistes données par son prof qu'il exploite mal.
    Il faut juste rester sur l'essentiel.
    Tout le reste
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.
      0  2

  13. #33
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Matthieu_12 Voir le message
    [...]je n'ai pas mal compris la demande du professeur ![...]
    Citation Envoyé par NVCfrm Voir le message
    [...]
    On comprend qu'il n'a pas suivi/compris le cours[...]
    M'enfin, Mathieu, puisqu'on te dit que tu n'as pas suivi le cours et que tu n'as rien compris...


    Citation Envoyé par NVCfrm Voir le message
    [...]tout comme la remarque discourtoise[...]
    Je me demande s'il est discourtois de dire à quelqu'un qu'il n'a pas compris un cours... ^^
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      4  1

  14. #34
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Les codes postés sont assez parlant pour dire qu'il n'a pas compris son cours
    Et cette affirmation n'est nullement discourtois, en plus c'est la raison pour laquelle, il est venu poser des questions.
    Si vous trouvez qu'il a bien suivi et compris le cours, comment expliquer son code ?
    Voilà
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.
      2  2

  15. #35
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    Je vous remercie pour vos tergiversations inutiles qui ont eu pour résultat :

    Ensuite, non, je ne pense pas que c'était à visée pédagogique car cela a tout naturellement produit l'exact effet inverse : je ne comprends plus rien à l'utilité du Select Case.
    Je ferme la discussion.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation
      3  0

Discussions similaires

  1. select case avec multiple test (variables)
    Par surfeur2 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 13/11/2016, 09h31
  2. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  3. [XL-2003] Problème Select Case multiples
    Par Estimea dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/01/2011, 10h29
  4. erreur select case
    Par maximedrouet dans le forum ASP
    Réponses: 4
    Dernier message: 15/05/2006, 14h40
  5. vérification de passage dans un select case
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h05

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