Userform

Résolu/Fermé
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 - 9 déc. 2014 à 15:07
baladur13 Messages postés 46412 Date d'inscription mercredi 11 avril 2007 Statut Modérateur Dernière intervention 2 mai 2024 - 11 déc. 2014 à 23:47
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

via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024 2 703
9 déc. 2014 à 15:25
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
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 38
Modifié par pijaku le 10/12/2014 à 12:20
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
10 déc. 2014 à 12:20
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
via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024 2 703
10 déc. 2014 à 14:07
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
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 38 > via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024
Modifié par pijaku le 11/12/2014 à 07:43
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
via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024 2 703 > mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024
Modifié par pijaku le 11/12/2014 à 07:43
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
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 38 > via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024
11 déc. 2014 à 14:58
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