XL 2016 affecter une valu à une combobox

  • Initiateur de la discussion Initiateur de la discussion eloiiid
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eloiiid

XLDnaute Nouveau
Bonjour,

Petite question, J'ai une userform avec 2 combobox.
Chaque combobox prend une valeur non numérique.


critical (>6)
1​
high ( 3<x<6)
3​
med(1,5<x<3)
5​
low(<1,5)
7​

un des combobox prend sois la valeur critical, high, med ou low (par exemple). Ce que je souhaite faire c'est affecter les valeurs numériques aux combobox sans qu'elle s'affiche afin de faire une multiplication des 2 combobox pour afficher un résultat dans un autre userform.

Merci d'avance de votre aide

Cordialement
Eloiiid
 
Solution
dans la feuille de code de l'userform1:

effacer tout puis y copier:

VB:
Dim T 'déclaration d'un tableau en global, accessible depuis toutes les sub

Private Sub CommandButton1_Click() 'bouton generate
If ComboBox1.ListIndex > -1 And ComboBox2.ListIndex > -1 Then 'si selection dans les 2 CB
    'initialisation de la textbox de l'USF Base
    base.TextBox5 = T(ComboBox2.ListIndex + 1, ComboBox1.ListIndex + 1)
    'Sortie de l'Usf UserForm1
    Unload Me
Else
    MsgBox "selectionner les combo"
End If
End Sub

Private Sub UserForm_Initialize()
ComboBox1.RowSource = ""
ComboBox2.RowSource = ""

With Worksheets("Feuil1") 'à adapter
ComboBox1.List = .Range("A2:A5").Value
ComboBox2.Column = .Range("B6:E6").Value
End With

'création du tableau...
Bonjour,

une solution pourrait consister à charger chaque combobox avec deux colonnes : une texte (critical ...) et l'autre les valeurs correspondantes et n'afficher que la première.

Mais je ne vois pas comment multiplier (par exemple) ">6" par "3<x<6". il faut bien, à un moment, saisir la valeur réelle ?

A+
 
bonjour Paf,


Merci de ta réponse,

"3<x<6" fais partie du label "high ( 3<x<6)"

1571728671546.png


ma rowsource prend le label complet de ma case.

Du coup je ne pense pas avoir compris ta réponse. Comment faire pour mettre une combobox sans l'afficher?

en fait pour tout dire et pour bien comprendre, il y a 4 choix possibles par combobox et une valeur affecter par choix. a muliplication des deux "termes" permet de deteminer une priorité (une sorte de matrice des priorités)


Cordialement
 
Du coup c'est moi qui ne comprends pas trop bien le besoin.....

Ce n'est pas la combobox qui ne s'afficherait pas, mais la deuxième colonne....

S'il ne s'agit pas de multiplication, il faudrait connaitre le résultat attendu suivant les choix dans les combobox

Il y a , à priori, 16 "combinaisons. Pour chaque "combinaison" quelle est la valeur attendue ?

Matrice.jpg



à partir de ces données, on peut créer un tableau (array) qui permettra de savoir quelle valeur transmettre à l'autre Userform.
 
Du coup c'est moi qui ne comprends pas trop bien le besoin.....

Ce n'est pas la combobox qui ne s'afficherait pas, mais la deuxième colonne....

S'il ne s'agit pas de multiplication, il faudrait connaitre le résultat attendu suivant les choix dans les combobox

Il y a , à priori, 16 "combinaisons. Pour chaque "combinaison" quelle est la valeur attendue ?

Regarde la pièce jointe 1044033




à partir de ces données, on peut créer un tableau (array) qui permettra de savoir quelle valeur transmettre à l'autre Userform.




C'est exactement ça que je cherche mais je ne sais pas comment faire :/
 
sur le principe: on crée un tableau contenant les valeurs attendu, puis on va lire dans le tableau à l'aide de l'indice de chaque combobox, du genre :

VB:
MaVariable=Tableau(combobox1.listindex + 1, combobox2.listindex + 1)

Un classeur contenant des données non confidentielles serait bien pratique pour quelques tests et connaitre l'ordre des données dans chaque combo

Le résultat doit être transmis à un autre Userform pour affichage dans quoi ?

cet autre Userform doit être afficher dès la sélection dans les 2 combobox ou bien quand ? (le code ne sera pas le même)

A+
 
ma base est le premier userform qui est affiché. ensuite, lorsque je selectionne mes combobox sur ma userform1 et que je clique sur generate, cela dois m'afficher le resultat sur ma textbox dans le premier userform "base".

Par soucis de confidentialité je ne peux vous transmettre quelquechose de plus propre et j'en suis désolé

Bien cordialement
 

Pièces jointes

Ha ben moi qui voulais éviter de créer un jeu d'essai ....

pouvez vous donner l'ordre d'apparition des données pour chaque combobox. (les RowSource pour ces deux combo pointent sur une feuille qui n'existe pas)

l'ordre dans la combo a une importance puisque c'est sa position (ListIndex) qui permettra de lire dans le tableau ...
 
Dernière édition:
Ha ben moi qui voulais éviter de créer un jeu d'essai ....

pouvez vous donner l'ordre d'apparition des données pour chaque combobox. (les RowSource pour ces deux combo pointent sur une feuille qui n'existe pas)

l'ordre dans la combo a une importance puisque c'est sa position (ListIndex) qui permettra de lire dans le tableau ...


ci joint le modifié :

PS : Pb 1 la selection de la rowsource en ligne ne se fait pas...
 

Pièces jointes

dans la feuille de code de l'userform1:

effacer tout puis y copier:

VB:
Dim T 'déclaration d'un tableau en global, accessible depuis toutes les sub

Private Sub CommandButton1_Click() 'bouton generate
If ComboBox1.ListIndex > -1 And ComboBox2.ListIndex > -1 Then 'si selection dans les 2 CB
    'initialisation de la textbox de l'USF Base
    base.TextBox5 = T(ComboBox2.ListIndex + 1, ComboBox1.ListIndex + 1)
    'Sortie de l'Usf UserForm1
    Unload Me
Else
    MsgBox "selectionner les combo"
End If
End Sub

Private Sub UserForm_Initialize()
ComboBox1.RowSource = ""
ComboBox2.RowSource = ""

With Worksheets("Feuil1") 'à adapter
ComboBox1.List = .Range("A2:A5").Value
ComboBox2.Column = .Range("B6:E6").Value
End With

'création du tableau des valeurs
T = [{"P2","P1","P0","P0";"P2","P2","P1","P0";"P3","P2","P2","P1";"P3","P3","P2","P2"}]
End Sub



A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
1 K
Retour