Userform

Résolu
Bonjour

J'ai construit une userform pour un formulaire de saisie comprenant entr'autre une comboBox4 et une textBox16

ma demande
Pour alimenter ma comboBox4 j'ai une liste déroulante A-B-C-D etc..
Puis j'ai une textbox 16 qui devrait inscrire le tarif correspondant au tableau nommé "Tarif" ci dessous. ce tableau est dans une feuille excel

Catégories Tarif
A 2
B 2,5
C 3
D 4

Ainsi, si j'inscris A dans la comboBox4 , ma textbox16 devrait indiquer 2
puis si B, = 2.5 etc.;
Et cela dès que je renseigne ma comboBox4.
Malgré de nombreuses tentatives en essayant d'utiliser des formules divers de certains forum, je n'arrive pas à l'adapter à mon cas.
Si quelqu'un peut m'aider ce serait sympa.
Merci à tous

2 réponses

  1. Bonjour

    Dans l'editeurVBA ton userform affichée tu doubles clic sur ta combobox
    puis tu rentres le code suivant :
    Private Sub ComboBox1_Change()
    t = Application.WorksheetFunction.VLookup(ComboBox4.Value, Sheets("Feuil1").Range("A3:B6"), 2, 0) 'A ADAPTER
    TextBox16.Value = t
    End Sub


    Il faut adapter la référence au tableau tarif Sheets("Feuil1").Range("A3:B6"), 2, 0) avec le nom de ta feuille où il se trouve et les bonnes références de cellules

    Cdlmnt
    0
    1. merci Via55
      Il me semble avoir fait ce que tu m'as proposé, mais quand je rentre une lettre dans ma combobox4, j'ai un messager : "erreur de compilation, variable non définie".

      Tu trouveras ci dessous ma formule adaptée à mon fichier. J'ai sans doute omis quelque chose, mais quoi?
      faut-il adapté les 2,0

      Private Sub ComboBox4_Change()
      t = Application.WorksheetFunction.VLookup(ComboBox4.Value, Sheets("Constantes").Range("f33:g39"), 2, 0) 'A ADAPTER
      TextBox16.Value = t
      End Sub


      Désolé de te déranger à nouveau
      CDLMNT
      MC
      0
      1. Modérateur
        Bonjour,

        Lorsque vous placez du code sur notre forum, merci d'utiliser les balises code à votre disposition.
        Le mode d'emploi (au cas ou) est ICI.

        Cordialement,
        Pijaku
        0
      2. Bonjour mchotard

        La formule est bonne, le 2 va chercher la valeur en colonne 2 en recherchant une correspondance exacte (le 0)

        Si tu as ce message d'erreur c'est vraisemblablement (impossible d'en dire plus sans voir le fichier) que soit la variable t n'est pas définie alors que tu as mis Option explicit en tête de module soit qu'il ne reconnait pas le nom "Constantes"

        Commence par mettre en tête de module la déclaration :
        Dim t as single

        Si ça ne marche toujours pas vérifie la bonne écriture du nom de ta feuille Constantes

        Si malgré tout tu es toujours bloqué post un exemple allégé et anonymé de ton fichier sur cjoint.com et reviens indiquer le lien fourni

        Cdlmnt
        0
      3. @via55Super c'est bon avec Dim t as single, ça marche

        Une dernière demande si tu peux
        J'ai une textbox15 = nombre de billets
        et une textbox 16 = tarif
        dans une textbox 13 = montant dû, je voudrais qu'il me calcule le montant directement soit le nombre de billet * par le tarif
        J'ai entré essayé 2 formules mais aucune ne marche, pourquoi?

        Private Sub TextBox1_Change()
        If Val(TextBox3.Value) <> 0 Then TextBox13 = Val(TextBox15) * Val(TextBox16)
        End Sub
        
        Private Sub TextBox1_Change()
        If Val(TextBox3.Value) <> 0 Then TextBox13.Value = Format(Val(TextBox15.Value) * Val(TextBox16.Value)
        End Sub


        Merci
        Cdlmnt
        MC
        0
      4. @mchotardBonsoir

        et simplement
         If TextBox3.Value <> 0 Then TextBox13 = TextBox15 * TextBox16

        ne marche pas ?

        Sinon post un exemple de ton fichier sur cjoint.com comme demandé précédemment

        Cdlmnt
        0
      5. @via55Merci via55
        Comment je fais pour t'envoyer mon fichier car malgré de nombreuses tentatives je n'y arrive pas.
        Dans la fenêtre de réponse je ne trouve pas
        Cdlmnt
        0