Lookup ? Match ? Equiv ?

  • Initiateur de la discussion Maxoverfred
  • Date de début
M

Maxoverfred

Guest
Bonjour à tous, voici mon problème..

J'ai un userform en excel avec un combox qui est alimenté par les données A1:A3 d'une sheet.
Quand je selectionne une valeur dans cette combobox, je veux qu'il me donne le numéro de row de la valeur qu'il aura comparer dans A1:A3

Autrement dit en exemple:

COLUMN_A
ROW1: BELGIUM
ROW2: FRANCE
ROW3: UK

Je selectionne mon combo la valeur 'FRANCE', il est donc censé me faire un lookup dans la matrice A1:A3 et me renvoyer la valeur: 2

Quelqu'un peut m'aider ? Quelle serait la fonction à utiliser dans mon code VBA ?

Merci à vous
 

Luki

XLDnaute Accro
Bonjour Maxo,

Tu peux directement utiliser la propriéte 'ListIndex' de ton combo. Attention toutefois au décalage : 0 étant le premier élément de la liste du combo.

Cela pourrrait donner par exemple:

Private Sub ComboBox1_Change()
MsgBox ComboBox1.ListIndex + 1
End Sub



EDITION!

A moins que tu n'aies réellement besoin du numéro de ligne dans ta feuille ?, peux-tu préciser le cas?

A+

Message édité par: luki, à: 24/04/2005 08:31
 
M

Maxoverfred

Guest
Bonjour Luki, je vais te préciser de quoi il s'agit.

Dans une sheet, j'ai une liste de données (plusieurs colonnes) qui sont groupées par pays avec comme nom de groupe le nom du pays.

J'ai sur cette sheet, un push buton, sur lequel j'active mon user form qui se compose d'un combo box qui est alimenter par l'ensemble des noms de la première colonne de la sheet.

Mon but est donc quand je cliques sur BELGIUM, qu'il aille rechercher la réference de la cellulle correspondant dans la première colonne et qu'ensuite il me donne le numéro de Row. Car pour activer(enfin je pense) les détails d'un group, je dois activer une row dedans, donc, ce que je vais faire c'est par exemple une fois que j'ai mon numéro de row, je fais tourner ma fonction (sur la row juste avant)

Maintenant, je suis en train de me dire que quand je charge mon combobox, je devrais sans doute stocker directement la reference de la row de chaque valeur.. et ensuite quand je clique, au lieu de prendre la valeur texte, prendre la valeur de la row stockée...

Voici un bout de mon code


1)Je charge mon combo:

Sub PopulateComboBox()

Dim MyArray As Variant
Dim Ctr As Integer
Dim lf As Long
lf = Range('A800').End(xlUp).Row
Cb_country.Clear
For Each cel In Range('A8:A' & lf)
If cel.Value <> '' Then Cb_country.AddItem cel.Value
Next cel
End Sub

2) J'active la row pour qu'il me montre le détail du groupe souhaité

Private Sub cmdReturnBtn_Click()
Dim vname As String
Dim vnbr As String
frmComboBoxExample2.Label3.Caption = ''
Worksheets('Locations Datas').Activate
Set myRange = ActiveCell.CurrentRegion
vname = frmComboBoxExample2.Cb_country.Value
vnbr = 29 ' (c'est ici que je devrais donner la reference de ma row -1

If vnbr > 0 Then
myRange.Rows(vnbr).ShowDetail = True
Else
frmComboBoxExample2.Label3.Caption = 'This country has no more records to correct'
frmComboBoxExample2.Label3.Visible = True
End If


End Sub


-----------

Merci
 

Luki

XLDnaute Accro
Bonsoir Maxo,

Désolé de ne reprendre le fil que ce soir...

Je pense que ton idée de stocker la ligne est bonne, puisque tu peux stocker plusieurs colonnes dans un combo, choisir a partir d'une d'elle et renvoyer la valeur d'une autre colonne. J'utilise plus les list box que les combo, mais je crois que c'est à peu près pareil.

j'ai fait un truc comme ça et c'est ok. Sauf erreur, il faut utiliser 'Boundcolumn' pour renvoyer la valeur dans la colonne choisie.

Bon courage
 

Discussions similaires

Réponses
17
Affichages
848

Statistiques des forums

Discussions
312 509
Messages
2 089 146
Membres
104 050
dernier inscrit
Pepito93100