Partager via

Formater une listbox

Anonyme
2022-06-23T12:38:17+00:00

Bonjour,

Dans un formulaire, je dois faciliter la saisie de données qui doivent être numériques, comprises entre 0 et 2,5. Je pense que le mieux est de créer une listbox avec un RowSource qui renvoie à une liste dans la feuille. Jusque là pas de problème, mais je souhaite aussi que l'on puisse saisir directement dans la listbox une valeur, car quand il y a beaucoup de saisies c'est plus rapide.

J'ai donc mis dans le code d'évènement Change ou Exit (c'est le même résultat) :

"Echanges1.Value = Format(Echanges1, "Standard")"

et la saisie se transforme : par exemple si je saisis 1,2 cela devient 0,04...?

Ce serait bien aussi que la saisie soit obligatoirement un chiffre entre 0 et 2,5

Merci de votre aide, cordialement.

Microsoft 365 et Office | Excel | Autres | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

13 réponses

  1. Anonyme
    2022-06-24T12:46:52+00:00

    Bonjour,

    Les valeurs saisies doivent être comparées car il ne doit pas y avoir un écart de plus de 0,3 entre les 2 listbox et les 2 valeurs doivent être additionnées dans une Textbox. Cela marche avec la manip indiquée dans mon dernier post, mais avec le "." comme séparateur.

    Je poste le fichier exemple : https://www.cjoint.com/c/LFymTrLw8yq

    Cordialement,

    André

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. DanielCo 107.7K Points de réputation
    2022-06-24T11:03:28+00:00

    Bonjour,

    la valeur saisie à la base étant du texte, tu ne peux lui appliquer la commande "Format". Qu'est-ce que tu cherches à faire ? Pourquoi ne pas laisser ce qui est saisi tel quel ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2022-06-24T07:08:07+00:00

    Bonjour,

    J'ai trouvé une piste de solution :

    • j'ai changé le séparateur décimal dans les options Excel pour prendre le "." La Rowsource est donc écrite maintenant 0.2 ou 1.2
    • quand j'affiche la liste déroulante de la combobox, elle affiche bien les nombres avec le point comme séparateur. Quand je sélectionne une valeur, la combo affiche par contre la valeur avec une virgule 0,2.
    • je peux aussi corriger ou saisir au clavier 0,2 (avec la virgule), et les calculs derrière sont exacts

    Curieux, non ? Il doit y avoir une explication, et je préfèrerais conserver le séparateur "," mais c'est déjà mieux comme cela !

    Merci de votre aide

    Cordialement, André

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2022-06-23T19:04:27+00:00

    Bonjour,

    J'ai essayé de chercher encore en enlevant les formatages pour contourner le problème. La listbox Echanges1 a donc un Rowsource (pas de problème), mais la liste source est formatée avec la virgule comme séparateur (par défaut dans Excel), et les nombres sont de la forme 0,10, ou 1,20 par exemple. Quand on utilise la liste déroulante, il s'affiche donc 0,1 ou 1,2 par exemple, et une Textbox qui additionne la valeur est bien renseignée.

    Pour une saisie manuelle dans la combo, je ne peux saisir 0,2 (la virgule ne s'affiche pas) et je dois saisir 0.2., ce qui occasionne une erreur dans le code pour la Textbox qui additionne la valeur.

    Voilà donc un premier souci : comment faire en sorte que les saisies dans la combo soient bien des nombres ?

    Par ailleurs

    Private Sub Echanges1_Exit(ByVal Cancel As MSForms.ReturnBoolean)'Echanges1.Value = Format(Echanges1, "General Number")
    'End Sub

    ne convient pas (résultats aberrants)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2022-06-23T17:35:26+00:00

    Bonjour,

    Mets "General" à la place de "Standard". Si ca ne fonctionne pas, poste le code.

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire