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

Résolu
Anthelm Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   -  
Yoyo01000 Messages postés 1639 Date d'inscription   Statut Membre Dernière intervention   -
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!
A voir également:

3 réponses

Yoyo01000 Messages postés 1639 Date d'inscription   Statut Membre Dernière intervention   168
 
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   Statut Membre Dernière intervention   168
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   168
 
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   Statut Membre Dernière intervention   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...
0
Yoyo01000 Messages postés 1639 Date d'inscription   Statut Membre Dernière intervention   168
 
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   Statut Membre Dernière intervention   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.
0