Userform

Résolu
mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   -  
baladur13 Messages postés 47331 Date d'inscription   Statut Modérateur Dernière intervention   -
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. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  2. mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   44
     
    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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      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. mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   44 > via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention  
       
      Super 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. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonsoir

      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. mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   44 > via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci 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