XL 2016 affecter une valu à une combobox

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...

Paf

XLDnaute Barbatruc
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+
 

eloiiid

XLDnaute Nouveau
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
 

Paf

XLDnaute Barbatruc
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.
 

eloiiid

XLDnaute Nouveau
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 :/
 

Paf

XLDnaute Barbatruc
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+
 

eloiiid

XLDnaute Nouveau
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

  • Classeur1.1.xlsm
    15.4 KB · Affichages: 5

Paf

XLDnaute Barbatruc
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:

eloiiid

XLDnaute Nouveau
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

  • Classeur1.1.xlsm
    17.3 KB · Affichages: 4

Paf

XLDnaute Barbatruc
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+
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 402
Membres
103 536
dernier inscrit
komivi