Liste déroulante + VBA, problèmes avec les majuscules

Résolu
Bonjour,

J'ai une liste déroulante avec "Oui" et "Non" comme choix
J'ai le code suivant:
If Worksheets("Options").Range("B2") = ("Oui") Then
option1 = "oui"

Quand l'utilisateur clique sur "Oui" dans la liste, j'ai bien la majuscule donc pas de soucis.
Mais si il écrit "oui" au clavier, la cellule l'accepte, mais pas la macro (qui considère que "oui" n'est pas = à "Oui")

J'ai pensé à If Worksheets("Options").Range("B2") = ("Oui") OR (la même chose) = ("oui") Then (etc etc)
cela marcherait si l'utilisateur saisi "oui" avec ou sans majuscule.

Mais c'est un peu naze, parcequ'on peut toujours, sur une faute de frappe, écrire "ouI" ou "oUi"... J'exagère un peu mais en soi c'est pas optimal. Surtout que l'utilisateur ne se rendra pas compte que le resultat en VBA ne renverra pas le bon truc!

à votre avis, quel est la piste à revoir?
1) la liste déroulante est un mauvais choix (plutot un bouton à cocher, par exemple?)
2) La macro est trop simple et avec une autre écriture, on peut éviter cette "sensibilité à la casse"?

Merci de me donner une piste si vous avez eu un cas de figure comme ça...

Bonne journée à tous!

3 réponses

  1. Bonjour, pourquoi passer par VBA pour cela ?

    Il suffirait de créer un menu déroulant sans VBA !
    0
    1. Onglet "Données" et ensuite "Validation de données", dans "Options" choisir "Liste" et mettre "Oui;Non"
      0
      1. Je crois que tu n'as pas lu le sujet en entier :) Mais merci quand même!
        0
      2. Si, je l'ai lu en entier. Un menu déroulant sans VBA avec un blocage, si la casse n'est pas respectée, est faisable.
        0
      3. Ma liste déroulante est faite depuis la validation de donnée et je n'ai aucun moyen de forcer à respecter la casse, justement, il faudrait peut être que je la fasse en vba plutôt...
        0
      4. Dans "Validation de données" tu as un onglet "Alerte d'erreur" qui permet de palier à ça !
        0
    2. Ok la solution est avec UCASE à mon avis.
      Cela passe le résultat en majuscules.

      If Worksheets("Options").Range("B2") = ("Oui")
      le test est si = "Oui"
      Donc si "oui", le résultat est faux à cause de la majuscule qui manque.

      Mais si on fait:

      If UCase(Worksheets("Options").Range("B2")) = ("OUI")
      Autrement dit si le résultat en majuscules = OUI

      Peu importe ce que l'utilisateur entre: "oUi" devient "OUI" et il est égal à "OUI", le résultat est vrai.
      0