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 -
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!
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:
- Liste déroulante + VBA, problèmes avec les majuscules
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Liste code ascii - Guide
- Site dangereux liste - Guide
3 réponses
Onglet "Données" et ensuite "Validation de données", dans "Options" choisir "Liste" et mettre "Oui;Non"
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.
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.