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

Résolu/Fermé
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 - 10 févr. 2019 à 14:11
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 - 10 févr. 2019 à 20:59
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

Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
10 févr. 2019 à 14:16
Bonjour, pourquoi passer par VBA pour cela ?

Il suffirait de créer un menu déroulant sans VBA !
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
10 févr. 2019 à 14:21
Onglet "Données" et ensuite "Validation de données", dans "Options" choisir "Liste" et mettre "Oui;Non"
0
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 1
10 févr. 2019 à 15:41
Je crois que tu n'as pas lu le sujet en entier :) Mais merci quand même!
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
10 févr. 2019 à 16:40
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
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 1
10 févr. 2019 à 19:40
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
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
10 févr. 2019 à 20:59
Dans "Validation de données" tu as un onglet "Alerte d'erreur" qui permet de palier à ça !
0
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 1
10 févr. 2019 à 19:59
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