Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche sur 2 colonne

14 réponses
Avatar
Fredo(67)
Bonjour

j'ai un tableau d'ouvrier
J'ai cr=E9=E9 une liste d=E9roulante, o=F9 je s=E9lectionne un nom parmis m=
a
liste
la liste d=E9roulante renvoie en A5 la valeur s=E9lectionn=E9e
EN fonction de cette valeur, je fait une rechercheV pour r=E9cup=E9rer des
information concernant mes ouvrier

Le Gros probl=E8me est que j'ai des fr=E8res (m=EAme nom).
LA fonction RechercheV me renvoie la premi=E8re valeur trouv=E9e
comment int=E9grer un 2=E8me param=E8tre de choix avec rechercheV ?

Par exemple
TERTRE MICHEL 3 ALLEE DES ALOUETTE
MARTIN SERGE 2 RUE DES LILAS
MULLER ETIENNE 6 IMPASSE NEUVE
SCHMITT FRANCIS 12 RUE DES ARTILLEURS
MARTIN ROGER 36 ALLEE ANCIENNE
GUETTAS MOHAMED 12 RUE HAUTE
MARTIN FREDERIC 48 RUE DE RIBEAUVILLE


Ma liste box ressemble =E0 =E7a :
(je l'ai param=E9tr=E9e pour voir apparaitre le contenu des 2 premi=E8res
colonnes)
TERTRE MICHEL
MARTIN SERGE
MULLER ETIENNE
SCHMITT FRANCIS
MARTIN ROGER
GUETTAS MOHAMED
MARTIN FREDERIC

Mais si je s=E9lectionne Martin Roger
la fonction rechercheV va me renvoyer la premi=E8re valeur......

10 réponses

1 2
Avatar
ChristianM
Bonjour,
la liste déroulante, c'est que le nom ou le nom et le prénom ?
et dans la seconde liste, tout dans une seule cellule (nom prénom adresse)
ou dans 3 ou 4 cellules côte à côte ?


--
ChristianM


"Fredo(67)" a écrit dans le message de news:

Bonjour

j'ai un tableau d'ouvrier
J'ai créé une liste déroulante, où je sélectionne un nom parmis ma
liste
la liste déroulante renvoie en A5 la valeur sélectionnée
EN fonction de cette valeur, je fait une rechercheV pour récupérer des
information concernant mes ouvrier

Le Gros problème est que j'ai des frères (même nom).
LA fonction RechercheV me renvoie la première valeur trouvée
comment intégrer un 2ème paramètre de choix avec rechercheV ?

Par exemple
TERTRE MICHEL 3 ALLEE DES ALOUETTE
MARTIN SERGE 2 RUE DES LILAS
MULLER ETIENNE 6 IMPASSE NEUVE
SCHMITT FRANCIS 12 RUE DES ARTILLEURS
MARTIN ROGER 36 ALLEE ANCIENNE
GUETTAS MOHAMED 12 RUE HAUTE
MARTIN FREDERIC 48 RUE DE RIBEAUVILLE


Ma liste box ressemble à ça :
(je l'ai paramétrée pour voir apparaitre le contenu des 2 premières
colonnes)
TERTRE MICHEL
MARTIN SERGE
MULLER ETIENNE
SCHMITT FRANCIS
MARTIN ROGER
GUETTAS MOHAMED
MARTIN FREDERIC

Mais si je sélectionne Martin Roger
la fonction rechercheV va me renvoyer la première valeur......
Avatar
Fredo(67)
Je vais essayer de clarifier :
en A les noms
en B les prénoms
en C, D, E et F les renseignements
chaque colonne est nommée du nom du type (nom, prenom, adresse1...)
La zone A:B se nomme liste_nom_complets

J'ai changer ma listbox pour ne voir apparaitre que les noms.
Mais en fait, je pense qu'il faut que je repense entièrement ce
tableau.
Imaginons, que la listbox renvoie en A10 le contenu de la sélection
Il faut que je fasse une recherche sur les prénoms pour créer une
listbox des prénoms possibles en fonction des noms sélectionnés.

Ma question : Comment remplir une listbox avec le résultat d'un
filtre ?
Avatar
Daniel.C
Bonjour.
Pourquoi ne pas faire une listbox multicolonnes ? Cela te permet de
choisir directement le bon nom - prénom :
Le code pour remplir la listbox (je l'ai mis à l'ouverture du fichier,
dans le module "thisworkbook"; à toi de voir :

Private Sub Workbook_Open()
Dim c As Range
With Sheets("Feuil1")
.ListBox1.Clear
For Each c In Range(.[A2], .[A65000].End(xlUp))
.ListBox1.AddItem c
.ListBox1.List(.ListBox1.ListCount - 1, 1) = c.Offset(, 1)
Next c
End With
End Sub

La listbox a les propriétés suivantes :
- ColumnCount=2
- ColumnWidths = 60 pt;60 pt

La macro évenementielle suivante recopie les infos dans les cellules
G18:L18 :

Private Sub ListBox1_Click()
Dim Ligne As Long, c As Range
Ligne = ActiveSheet.ListBox1.ListIndex + 1
[G18:L18].ClearContents
For i = 0 To 5
[G18].Offset(, i) = Application.Index(Range([A2],
[F65000].End(xlUp)), _
Ligne, i + 1)
Next i
End Sub

Le classeur se trouve à l'adresse :
http://www.cijoint.fr/cjlink.php?file=cj200902/cijLp4an82.xls
Cordialement.
Daniel

Je vais essayer de clarifier :
en A les noms
en B les prénoms
en C, D, E et F les renseignements
chaque colonne est nommée du nom du type (nom, prenom, adresse1...)
La zone A:B se nomme liste_nom_complets

J'ai changer ma listbox pour ne voir apparaitre que les noms.
Mais en fait, je pense qu'il faut que je repense entièrement ce
tableau.
Imaginons, que la listbox renvoie en A10 le contenu de la sélection
Il faut que je fasse une recherche sur les prénoms pour créer une
listbox des prénoms possibles en fonction des noms sélectionnés.

Ma question : Comment remplir une listbox avec le résultat d'un
filtre ?


Avatar
Fredo(67)
Merci beaucoup de ta réponse Daniel

Pour le remplissage de la list box j'ai appelé une zonne de 2 colonne
nommée NoM_PrénoM
donc je n'ai pas utilisé le code suivant :
Private Sub Workbook_Open()
    Dim c As Range
    With Sheets("Feuil1")
        .ListBox1.Clear
        For Each c In Range(.[A2], .[A65000].End(xlUp))
            .ListBox1.AddItem c
            .ListBox1.List(.ListBox1.ListCount - 1, 1) = c. Offset(, 1)
        Next c
    End With
End Sub



En fait j'ai besoin que, si je sélectionne le couple NOM1 - PRENOM 1,
la listbox1 me renvoie en g18 NOM1
et en H18 prénom1.

Comment faire ca ??
Avatar
Daniel.C
Oui, mais dans le cas présent, "NoM_PrénoM" n'apporte pas grand-chose;
modifie le code comme suit :

Private Sub Workbook_Open()
Dim c As Range
With Sheets("Feuil1")
.ListBox1.Clear
For Each c In [NoM_PrénoM].Resize(, 1)
.ListBox1.AddItem c
.ListBox1.List(.ListBox1.ListCount - 1, 1) = c.Offset(, 1)
Next c
End With
End Sub

Private Sub ListBox1_Click()
Dim Ligne As Long, c As Range
Ligne = ActiveSheet.ListBox1.ListIndex + 1
[G18] = Application.Index([NoM_PrénoM], Ligne, 1)
[H18] = Application.Index([NoM_PrénoM], Ligne, 2)
End Sub

Daniel

Merci beaucoup de ta réponse Daniel

Pour le remplissage de la list box j'ai appelé une zonne de 2 colonne
nommée NoM_PrénoM
donc je n'ai pas utilisé le code suivant :
Private Sub Workbook_Open()
    Dim c As Range
    With Sheets("Feuil1")
        .ListBox1.Clear
        For Each c In Range(.[A2], .[A65000].End(xlUp))
            .ListBox1.AddItem c
            .ListBox1.List(.ListBox1.ListCount - 1, 1) = c.Offset(, 1)
        Next c
    End With
End Sub



En fait j'ai besoin que, si je sélectionne le couple NOM1 - PRENOM 1,
la listbox1 me renvoie en g18 NOM1
et en H18 prénom1.

Comment faire ca ??


Avatar
michdenis
Pour le plaisir, lorsque l'on veut remplir des combobox
avec des listes où on a des doublons et que l'on veut
retenir pour le second combobox les entrées correspondant
à la sélection du premier combobox.

Il y a la bibliothèque "Microsoft Activex Data Object 2.x Librairy"
d'ajouter au fichier.
http://cjoint.com/?cwoH4IhdAM



"Fredo(67)" a écrit dans le message de groupe de discussion :

Bonjour

j'ai un tableau d'ouvrier
J'ai créé une liste déroulante, où je sélectionne un nom parmis ma
liste
la liste déroulante renvoie en A5 la valeur sélectionnée
EN fonction de cette valeur, je fait une rechercheV pour récupérer des
information concernant mes ouvrier

Le Gros problème est que j'ai des frères (même nom).
LA fonction RechercheV me renvoie la première valeur trouvée
comment intégrer un 2ème paramètre de choix avec rechercheV ?

Par exemple
TERTRE MICHEL 3 ALLEE DES ALOUETTE
MARTIN SERGE 2 RUE DES LILAS
MULLER ETIENNE 6 IMPASSE NEUVE
SCHMITT FRANCIS 12 RUE DES ARTILLEURS
MARTIN ROGER 36 ALLEE ANCIENNE
GUETTAS MOHAMED 12 RUE HAUTE
MARTIN FREDERIC 48 RUE DE RIBEAUVILLE


Ma liste box ressemble à ça :
(je l'ai paramétrée pour voir apparaitre le contenu des 2 premières
colonnes)
TERTRE MICHEL
MARTIN SERGE
MULLER ETIENNE
SCHMITT FRANCIS
MARTIN ROGER
GUETTAS MOHAMED
MARTIN FREDERIC

Mais si je sélectionne Martin Roger
la fonction rechercheV va me renvoyer la première valeur......
Avatar
Fredo(67)
Merci.

j'ai adapté à mon cas précis, et ça marche super...
Avatar
isabelle
Bonjour Fredo,

Private Sub ListBox1_Click()
[G18] = ActiveSheet.ListBox1.Text
[H18] = ActiveSheet.ListBox1.Value
End Sub

=INDEX(C1:C100;EQUIV(1;(nom=$G$18)*(prenom=$H$18);0))

Valider avec Maj+Ctrl+entrée

isabelle

Fredo(67) a écrit :
Merci beaucoup de ta réponse Daniel

Pour le remplissage de la list box j'ai appelé une zonne de 2 colonne
nommée NoM_PrénoM
donc je n'ai pas utilisé le code suivant :

Private Sub Workbook_Open()
Dim c As Range
With Sheets("Feuil1")
.ListBox1.Clear
For Each c In Range(.[A2], .[A65000].End(xlUp))
.ListBox1.AddItem c
.ListBox1.List(.ListBox1.ListCount - 1, 1) = c.Offset(, 1)
Next c
End With
End Sub




En fait j'ai besoin que, si je sélectionne le couple NOM1 - PRENOM 1,
la listbox1 me renvoie en g18 NOM1
et en H18 prénom1.

Comment faire ca ??




Avatar
Fredo(67)
Merci à vous tous de vous être penché (sans tomber) sur mon problèm e
et de m'avoir apporté tous ces conseils.
Avatar
isabelle
ps/

j'ai oublié de te dire que j'ai mis la propriété BoundColumn = 2 et
ColumnCount=2
pour que .Value soit = au prenon et .Text = nom

isabelle

Fredo(67) a écrit :
Merci à vous tous de vous être penché (sans tomber) sur mon problème
et de m'avoir apporté tous ces conseils.



1 2