Liste déroulante + VBA, problèmes avec les majuscules [Résolu/Fermé]

Signaler
Messages postés
185
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
21 juin 2020
-
Messages postés
643
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
10 juillet 2020
-
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

Messages postés
643
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
10 juillet 2020
63
Bonjour, pourquoi passer par VBA pour cela ?

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