récupérer la valeur d'un tableau

EddyValier

XLDnaute Nouveau
Bonjour à tous,

J'expose mon problème:
J'ai un tableau de données avec 3 colonnes: Famille, Année et Indice
J'aimerai à partir d'un bouton, ouvrir un UserForm que j'ai déjà créer et récupérer l'indice en fonction de la famille et de l'année choisie (Utilisation de Combobox) !
La valeur devra être reportée en E1.
Je joint un fichier test pour une meilleure compéhension
Merci à ceux qui pourront m'aider

Bien à vous,
 

Pièces jointes

  • TestUF .xlsm
    23.6 KB · Affichages: 25
  • TestUF .xlsm
    23.6 KB · Affichages: 39
  • TestUF .xlsm
    23.6 KB · Affichages: 34

Robert

XLDnaute Barbatruc
Repose en paix
Re : récupérer la valeur d'un tableau

Bonjour Eddy, PierreJean, bonjour le forum,

Une autre proposition avec la fonction Find.
En dernier, il y a un code commenté qui pourrais s'appliquer à condition que tu sois sûr qu'il n'y ait pas de doublons dans la colonne A.
Le code :
Code:
Option Explicit 'oblige à déclarer toutes les variables
Private O As Object 'déclare la variable O (Onglet)
Code:
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Sheets("Men") 'définit l'onglet O
'Remplissage de la Combobox1 (Groupe) avec doublons
For I = 2 To O.Range("A65536").End(xlUp).Row
    ComboBox1 = O.Range("A" & I)
    If ComboBox1.ListIndex = -1 Then
        ComboBox1.AddItem O.Range("A" & I)
    End If
Next I
'Remplissage de la Combobox2 (Année) sans doublons
'Remplissage de la Combobox2 (Année) sans doublons
For I = 2 To DL = O.Range("B65536").End(xlUp).Row
    ComboBox2 = O.Range("B" & I)
    If ComboBox2.ListIndex = -1 Then
        ComboBox2.AddItem O.Range("B" & I)
    End If
Next I
End Sub
Code:
Private Sub CommandButton1_Click()
Dim R As Range 'déclare la variable R (Recherche)
Dim PA As String 'déclare la variable PA (Première Adresse)
Dim IND As String 'déclare la variable IND (INDice)

Set R = O.Columns(1).Find(Me.ComboBox1.Value, , xlValues, xlWhole) 'définit la recherche R (recherche la valeur de la ComboBox1 dans la colonne 1 (=A))
If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
    PA = R.Address 'définit l'adresse PA de la première occurrence trouvée
    Do 'exécute
        If CStr(R.Offset(0, 1).Value) = Me.ComboBox2.Value Then 'condition 2 : si la valeur en colonne B correspond à la valeur de la ComboBox2
            IND = R.Offset(0, 2).Value 'définit l'indice IND
            Exit Do 'sort de la boucle
        End If 'fin de la condition
        Set R = O.Columns(1).FindNext(R) 'redéfinit la recherche R (occurrence suivante)
    Loop While Not R Is Nothing And R.Address <> PA 'boucle tant qu'il existe de nouvelles occurrence ailleurs qu'en PA
End If 'fin de la condition 1
O.Range("E1").Value = IND 'récupère l'indice IND dans la cellule E1
Unload Me 'vide et ferme l'UserForm
End Sub

Code:
'Private Sub CommandButton1_Click()
'O.Range("E1").Value = O.Cells(Me.ComboBox1.ListIndex + 2, 3).Value 'récupère l'indice IND dans la cellule E1
'Unload Me 'vide et ferme l'UserForm
'End Sub

Génial le code pour les ComboBoxes sans doublons !
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16