Option bouton permet de changer un tableau qui alimente combobox

Bonjour à tous,

Un nouveau problème se présente à moi : j'avais un tableau à 3 entrées (voir capture) que j'ai décomposé en 3 tableaux à double entrée pour pouvoir sélectionner les valeurs plus facilement. (tableau 1, 2 et 3). J'ai donc créé 3 boutons d'options (bouton d'option 1, 2 et 3) que j'aimerais associer au tableau 1, 2 et 3.

Avec la capture, on comprendra un peu mieux, le problème...

Concrètement, j'aimerais que si on sélectionne le bouton d'option 1, il soit associé au tableau 1, même chose pour le 2 et 3

La valeur qui apparaitra dans la textbox sera l'intersection des deux combobox remplies juste avant en fonction du bouton d'option coché

Exemple : si je sélectionne compost/fumier en bouton d'option, 1-2 ans dans la combobox du dessous puis toujours enlevées ou brûlées dans la dernière combobox, il apparaisse la valeur 1.05 dans la textbox. Mais que si je sélectionne autres, 3-4 ans et enfouis 1 fois sur 2, la textbox affiche 1

Je souhaite que selon le bouton d'option, la valeur qui apparait dans la textbox vienne du bon tableau

Merci d'avance à ceux qui pourront m'aider =)

probleme 1 probleme

Bonjour,

Le classeur et des explications plus claires sur le besoin semblent nécessaires ...

A+

Bonsoir Algoplus,

J'ai mis ci-joint mon fichier en .xlsm

J'ai un tableau à 3 dimensions avec "Habitude de restitution des pailles" en colonne. En ligne, j'ai "l'apport réalisé" avec sa "fréquence". C'est le choix conjoint des 3 facteurs qui me donnent une valeur.

J'ai donc "converti" mon tableau à 3 dimensions en 3 tableaux à 2 dimensions.

J'ai créé 3 options button qui me permettent de choisir quel apport est réalisé. Je veux que par la suite, l'utilisateur renseigne dans la combobox 1 la fréquence et dans la combobox 2 la restitution des pailles.

A l'issue de ces saisies, dans la textbox doit apparaître la valeur du tableau qui fait référence au tableau choisi par l'option button.

9test.xlsm (19.07 Ko)

ben ! c'est le même principe que dans ton autre discussion:

https://forum.excel-pratique.com/viewtopic.php?f=2&t=139368&p=855114#p855114

à la différence que le tableau T n'est plus initialisé dans Private Sub UserForm_Initialize(), mais dans l'évènement click de chaque optionbutton

pour les indices du tableau T, c'est identique: détermination par rapport à la propriété ListIndex de chaque combobox

A+

J'ai compris qu'il fallait initialiser dans les option bouton mais je ne vois pas comment ça change de tableau en fonction du choix de mon option bouton.

Pouvez vous faire un exemple dans mon document car je ne vois pas comment ça marche...

Dans le module de l'userform , rajouter l'initialisation du tableau T selon l'option choisie :

Private Sub Op_Auc_Click()
 'ici
End Sub

Private Sub Op_Aut_Click()
 'ici
End Sub

Private Sub Op_Cf_Click()
'ici
End Sub

Donc j'initialise bien le tableau qui possède les 3 dimensions et pas chacun des trois tableaux ?

probleme 2

On initialise avec le tableau 1, 2 ou 3 en fonction de l'optionbutton cliqué.

Exemple pour" compost fumier" :

Private Sub Op_Cf_Click()
T = WorkSheets("Feuil1").Range("C9:E11")
End Sub

On pourrait partir sur l'initialisation à l'aide du tableau "complet", mais ce serait "délicat" pour retrouver les bonnes valeurs à partir des ListIndex des combobox.

Par ailleurs, la combobox Cb_Fréapporg propose toujours les mêmes valeurs, ce qui pose souci pour le choix "Aucun" puisqu'à ce moment on ne devrait pas avoir de choix possible.

Je ne vois pas comment adapter le code suivant :

Private Sub Cb_Fréapporg_Change()

i = Cb_Fréapporg.ListIndex + 1

If j > 0 Then T_Msc.Value = T(i, j)

End Sub

Private Sub Cb_Rp_Change()

j = Cb_Rp.ListIndex + 1

If i > 0 Then T_Msc.Value = T(i, j)

End Sub

Ici, je garde toujours la même formule ?

Voici mon fichier corrigé, le problème est presque résolu car ce que tu m'as conseillé marche MAIS lorsque je sélectionne les combobox, les valeurs renvoyées par la textbox sont parfois erronées. Ces valeurs erronées proviennent des bons tableaux mais quelques fois la valeur est celle de la ligne ou la colonne d'à côté...

Le problème est présenté sur la capture d'écran ci-dessous

Merci de ton aide

probleme 3
4test.xlsm (21.54 Ko)

tout dépend de la façon dont le tableau est initialisée et de la façon dont sont initialisées les variables i et j. ( a priori que vous avez inversé )

probleme 2

soit vous inversez i et j , soit vous écrivez ........ T_Msc.Value = T(j, i)

si je suppose bien le code que vous avez écrit ?

Voici mon code, je ne vois pas où ca bug...

Dim T, i As Byte, j As Byte
Private Sub Op_Auc_Click()
T = Worksheets("Feuil1").Range("C14:C16")
End Sub
Private Sub Op_Aut_Click()
T = Worksheets("Feuil1").Range("C19:E21")
End Sub
Private Sub Op_Cf_Click()
T = Worksheets("Feuil1").Range("C9:E11")
End Sub
Private Sub Cb_Fréapporg_Change()
i = Cb_Fréapporg.ListIndex + 1
If j > 0 Then T_Msc.Value = T(i, j)
End Sub
Private Sub Cb_Rp_Change()
j = Cb_Rp.ListIndex + 1
If i > 0 Then T_Msc.Value = T(j, j)
End Sub

Je crois que vous ne comprenez pas comment fonctionne un tableau.

En simplifiant, pour lire dans un tableau, il faut lui préciser la ligne et la colonne : T(ligne, colonne)

Dans votre

La combobox Cb_Fréapporg détermine la colonne (votre code : i = Cb_Fréapporg.ListIndex + 1 ) Donc i représente la colonne

La combobox Cb_Rp détermine la ligne (votre code : j = Cb_Rp.ListIndex + 1 ) Donc j représente la ligne.

Pour obtenir la bonne lecture du tableau T:

T_Msc.Value = T(ligne , colonne) => T_Msc.Value = T( j , i)

Problème résolu, voici le code pour ceux qui souhaitent :

Dim T, i As Byte, j As Byte
Private Sub Op_Auc_Click()
T = Worksheets("Feuil1").Range("C14:C16")
End Sub
Private Sub Op_Aut_Click()
T = Worksheets("Feuil1").Range("C19:E21")
End Sub
Private Sub Op_Cf_Click()
T = Worksheets("Feuil1").Range("C9:E11")
End Sub
Private Sub Cb_Rp_Change()
i = Cb_Rp.ListIndex + 1
If j > 0 Then T_Msc.Value = T(i, j)
End Sub
Private Sub Cb_Fréapporg_Change()
j = Cb_Fréapporg.ListIndex + 1
If i > 0 Then T_Msc.Value = T(i, j)
End Sub

Un énorme merci à Algoplus ! C'est super sympa d'avoir pris un peu de ton temps et de m'avoir fait réfléchir =)

Rechercher des sujets similaires à "option bouton permet changer tableau qui alimente combobox"