Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

pogote

XLDnaute Nouveau
Bonjour, j'aurais besoin de créer une liste grâce à la fonction Données --> Validation --> Option : Liste, mais :
1. regroupant des données de plusieurs colonnes
2. N'indiquant dans liste déroulante que les valeurs différentes de vide

[modification de mon post]
LA SOLUTION EST -->LA
[fin modification de mon post]

Petit exemple pour expliquer :

Colonne A : Valeur de la case A1 à A10, de A11 à A20 Vide
Colonne B : Valeur de la case A1 à A15, de A16 à A20 Vide
Colonne C : Valeur de la case A5 à A6, de A1 à A4 et de A7 à A20 Vide

Ma liste déroulante devrait être composée uniquement des valeurs suivante :

Valeur de la case A1 à A10
Valeur de la case A1 à A15
Valeur de la case A5 à A6

Qui aurait une idée, une solution ?
Merci d'avance pour vos lumières

Damien
 
Dernière édition:

pogote

XLDnaute Nouveau
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

j'ai vu qu'il y avait une possibilité avec insertion --> Nom --> Définir.

C'est peut être une piste mais il me manque encore l'essentiel... que ca fonctionne.

A plus
 

Tibo

XLDnaute Barbatruc
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Bonjour,

Tu peux définir tes listes déroulantes en les nommant.

Insertion - Nom - Définir

Nom : liste_1
Fait référence à : =DECALER(A1;;;NBVAL($A$1:$A$20)

Nom : liste_2
Fait référence à : =DECALER(B1;;;NBVAL($B$1:$B$20)

etc.

Ensuite, dans ta liste déroulante, tu fais appel aux noms ainsi définis.

Dans ton message, tu ne parles que de la colonne A. J'ai supposé qu'il s'agissait des colonnes A, B et C

Si pas ça, reviens en nous joignant un petit bout de fichier exemple.


Bon WE

@+
 

pogote

XLDnaute Nouveau
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Salut Tibo et merci pour ta réponse

tu as bien fait de supposer qu'il sagissait des colonnes A B C

Donc j'ai bien défini des noms de listes : (j'ai rajouté une deuxième parenthèse en fin de fonction : en rouge)
Insertion - Nom - Définir

Nom : liste_1
Fait référence à : =DECALER(A1;;;NBVAL($A$1:$A$20))

Nom : liste_2
Fait référence à : =DECALER(B1;;;NBVAL($B$1:$B$20))
Ensuite, comment fait-on appel (dans Données --> Validation --> Option : Liste) à ces listes ? J'ai toujours des erreurs !!!
J'ai essayé toutes ces possibilités :
=et(liste_1;liste_2;liste_3)
=liste_1;liste_2;liste_3
=(liste_1;liste_2;liste_3)
...
Je vous joint un fichier exemple, en espérant trouver une solution.

Et si en plus vous pouvez m'aider à comprendre comment mettre en application un bouton "recherche" en fonction de la valeur indiquée à partir de ma liste déroulante, qui renverait à la ligne correspondante, cela serait plus que parfait... en espérant bien sur que mon explication soit claire.
 

Pièces jointes

  • XLD_demo.xls
    15 KB · Affichages: 184

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Bonsoir,

-Sélectionner le champ résultat
=fusiontriée3(A1:A20;B1:B20;C1:C20)
-Valider avecMaj+Ctrl+Entrée

Code:
Function FusionTriée3(taa As Range, tbb As Range, tcc As Range)
 Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In taa
    If c <> "" And Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
    For Each c In tbb
    If c <> "" And Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
  For Each c In tcc
    If c <> "" And Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
  temp = MonDico.items
  Call tri(temp, 0, UBound(temp, 1) )
  FusionTriée3 = Application.Transpose(temp)
End Function

Sub tri(a, gauc, droi)          ' Quick sort
 ref = a((gauc + droi) \ 2)
 g = gauc: d = droi
 Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
       temp = a(g): a(g) = a(d): a(d) = temp
       g = g + 1: d = d - 1
     End If
 Loop While g <= d
 If g < droi Then Call tri(a, g, droi)
 If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
Formation Excel VBA JB


[/CODE]
 

Pièces jointes

  • Fonction_FusionListeTriee3Listes.xls
    29.5 KB · Affichages: 227
Dernière édition:

pogote

XLDnaute Nouveau
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Salut BOISGONTIER, Salut forum,

Effectivement le fichier joint fonctionne parfaitement et correspond à mes besoins... Bref : Parfait.

Juste une petite remarque, le code Macro ci dessus correspond à quoi ?
- Au fonctionnement de ma liste déroulante ?
ou
- Au fonctionnement du bouton recherche, deuxième partie de ma question ?

Merci encore Forum
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Bonsoir,

Le code correspond à la fusion triée de 3 champs sans les vides:

>1. regroupant des données de plusieurs colonnes
>2. N'indiquant dans liste déroulante que les valeurs différentes de vide

La liste Données/Validation contient :
=DECALER($F$3;;;NB.SI($F$3:$F$29;"<>#N/A"))

JB
 

pogote

XLDnaute Nouveau
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Ok et bien c'est super. Il ne me reste plus qu'à faire des recherches sur le forum pour savoir comment mettre en application un bouton "recherche" en fonction du resultat de ma cellule. D'ailleurs si tu as une idée, n'hésite pas.

MERCI
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Je ne suis pas sûr de comprendre la question:


Le code ci dessous est activé après le choix dans la liste:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$E$1" Then
    MsgBox Target
  End If
End Sub

JB
 

Pièces jointes

  • Fonction_FusionListeTriee3Listes(1).xls
    33 KB · Affichages: 139

pogote

XLDnaute Nouveau
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Oui pour ça je suis d'accord, mais le résultat que je souhaiterais obtenir serait un renvoi à la ligne correspondant à la valeur choisi dans ma liste.

J'obtiens grâce a ton fichier, quand je choisi dans ma liste, une fenêtre de dialogue excel avec la lettre correspondante.

PS : Comment fait-on pour modifier les paramêtres de tes calculs ?

Merci
 
Dernière édition:

pogote

XLDnaute Nouveau
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Je pensais avoir quelques bases de excel mais je me rends compte que pas du tout... Je n'arrive pas à réadapter la macro et les informations contenues dans le fichier Fonction_FusionListeTriee3Listes(1).xls à mon propre tableur.

C'est logique vu que je ne sais pas comment cela fonctionne.

Je met un lien pour télécharger le fichier zippé (les capacités de XLD étant trop faible) :
Base_de_donnees.zip

Explication du fichier :
- en H3, j'ai ma liste déroulante de recherche par nom
- en I3, j'ai ma liste déroulante de recherche par N° Ident.
- dans mes colonne IA à IO, j'ai mes noms et prénoms regroupés
(O12 = Jacques ; P12 = Martin , donc OA12 = Jacques Martin)
- dans ma colonne HY, j'ai ma fonction de classement de N° Ident.
- dans ma colonne HZ, j'ai ma fonction de classement de Nom

Le but des 2 boutons "Rechercher par Nom" et Rechercher par N° Ident." (en tête colonnes H et I) serait de renvoyer l'utilisateur à la ligne correpondante à la recherche.

Merci pour votre aide
J'espère qu'un jour cela fonctionne
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste déroulante de valeurs de plusieurs colonnes, Comment faire ?

Bonjour,

En réalité, il y a fusion de plusieurs listes et non pas 3 comme spécifié dans la demande d'origine.

Voici une fonction matricielle qui permet de fusionner et trier N zones discontinues.

Dans le tableur:

Sélectionner F3:F30
=Fusiontrimz((A1:A20;B1:B20;C1:C20))
valider avec maj+ctrl+entrée

Code:
Function FusionTriMZ(nom)
  Set mondico = CreateObject("Scripting.Dictionary")
  For i = 1 To nom.Areas.Count
    For j = 1 To nom.Areas(i).Count
      c = Trim(nom.Areas(i)(j))
      If c <> "" And c <> 0 Then
        If c <> "" And Not mondico.Exists(c) Then mondico.Add c, c
      End If
    Next j
  Next i
  temp = mondico.items
  Call tri(temp, 0, UBound(temp, 1))
  FusionTriMZ = Application.Transpose(temp)
End Function

Sub tri(a, gauc, droi)          ' Quick sort
 ref = a((gauc + droi) \ 2)
 g = gauc: d = droi
 Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
       temp = a(g): a(g) = a(d): a(d) = temp
       g = g + 1: d = d - 1
     End If
 Loop While g <= d
 If g < droi Then Call tri(a, g, droi)
 If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
Formation Excel VBA JB
 

Pièces jointes

  • Fonction_FusionListeTrieeListes.xls
    32 KB · Affichages: 144
  • Fonction_FusionListeTrieeListes.xls
    32 KB · Affichages: 143
  • Fonction_FusionListeTrieeListes.xls
    32 KB · Affichages: 152
Dernière édition:

Discussions similaires

Réponses
8
Affichages
363

Statistiques des forums

Discussions
311 723
Messages
2 081 932
Membres
101 844
dernier inscrit
pktla