XL 2013 Résultat d'une liste déroulante suivant tableau

alain.raphael

XLDnaute Occasionnel
Bonjour à Tous,

Je recherche formule ou formule matricielle (peut-être VBA) pour un ou plusieurs résultats possibles suivant un champ d'une liste déroulante....

Ci-dessous un exemple...

En vous remerciant..
 

Pièces jointes

  • Résultat liste déroulante suivant tableau.xlsx
    12.2 KB · Affichages: 20

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans un module standard :
VB:
Option Explicit

Function Résult(ByVal RngTit As Range, ByVal RngTab As Range, ByVal L As Long) ' As Range)
Dim TTit(), TLig(), C As Long, TRés(1 To 6, 1 To 1)
TTit = RngTit.Value
TLig = RngTab.Rows(L).Value
L = 0
For C = 1 To 6
   If TLig(1, C) <> "" Then L = L + 1: TRés(L, 1) = TTit(1, C)
   Next C
While L < 6: L = L + 1: TRés(L, 1) = "": Wend
Résult = TRés
End Function
En E22:E25 validé par Ctrl+Maj+Entrée :
Code:
=Résult($E$2:$J$2;$E$4:$J$16;$A$1)
 

job75

XLDnaute Barbatruc
Bonjour alain.raphael, Bernard,

Cette formule matricielle en E22 est archi classique :
Code:
=SIERREUR(INDEX(A$2:J$2;;PETITE.VALEUR(SI(INDEX(E$4:J$16;A$1;)="Ok";COLONNE(E$4:J$16));LIGNES(E$22:E22)));"")
A valider par Ctrl+Maj+Entrée et tirer vers le bas.

A+
 

Pièces jointes

  • Résultat liste déroulante suivant tableau(1).xlsx
    17.9 KB · Affichages: 13

alain.raphael

XLDnaute Occasionnel
Merci à vous 2....cela marche très bien......

J'en profite pour vous demander quelquechose de similaire.......je pense aussi en matricielle.....

Le fichier- ci-dessous doit recenser un nom d'équipe dès qu'un joueur se trouve dans sa liste....mais il peut avoir plusieurs équipes.....


Merci à vous ........
 

Pièces jointes

  • Résultats selon tableau.xlsx
    17.1 KB · Affichages: 11

job75

XLDnaute Barbatruc
Re,

Formule matricielle en Résultats!D7 :
Code:
=SIERREUR(INDEX(Tableau!$A:$A;PETITE.VALEUR(SI(Tableau!$F$7:$P$21=$C7;LIGNE(Tableau!$F$7:$P$21));COLONNES($D7:D7)));"")
A tirer vers le bas et vers la droite tant que la colonne n'est pas vide.

Dans la feuille "Tableau" l'insertion de la colonne auxiliaire A (à masquer) est nécessaire.

Fichier joint.

A+
 

Pièces jointes

  • Résultats selon tableau(1).xlsx
    24.2 KB · Affichages: 17

alain.raphael

XLDnaute Occasionnel
Job75....en visu rapide.......... J'ai oublié quelquechose d'important :

Il ne faut pas qu'une même équipe se marque plusieurs fois sur une même ligne (si c'est le cas) !!:(;)
En gros une ligne doit comporter le nom de ou des équipes du joueur...mais juste une seule fois....
 

job75

XLDnaute Barbatruc
Re,

Toujours en Résultats!D7 :
Code:
=SIERREUR(INDEX(Tableau!$A:$A;PETITE.VALEUR(SI((Tableau!$F$7:$P$21=$C7)*NON(NB.SI($C7:C7;Tableau!$A$7:$A$21));LIGNE(Tableau!$F$7:$P$21));1));"")
Fichier (2).

A+
 

Pièces jointes

  • Résultats selon tableau(2).xlsx
    23.1 KB · Affichages: 17

job75

XLDnaute Barbatruc
Bonjour alain.raphael, Bernard,

On peut bien sûr utiliser une fonction VBA (plus de colonne auxiliaire dans la 1ère feuille) :
Code:
Function Equipe$(x$, r As Range, ordre)
Set r = Intersect(r, r.Parent.UsedRange)
If r Is Nothing Then Exit Function
Dim t, ub%, i&, y$, j%, n, k&
t = r 'matrice, plus rapide
ub = UBound(t, 2)
For i = 1 To UBound(t)
    If t(i, 1) <> "" Then y = t(i, 1)
    For j = 5 To ub '5 => numéro de colonne modifiable
        If t(i, j) = x Then
            n = n + 1
            If n = ordre Then Equipe = y: Exit Function
            For k = i + 1 To ub
                If t(k, 1) <> "" Then Exit For
            Next k
            i = k - 1
            Exit For
        End If
Next j, i
End Function
On suppose qu'il n'y a pas de doublon en colonne A de la 1ère feuille.

Fichier joint.

Le recalcul des 45 formules du tableau des résultats prend 5,5 millièmes de seconde.

Avec les formules matricielles du post #10 cela prend 2,2 millièmes de secondes...

A+
 

Pièces jointes

  • Résultats selon tableau VBA(1).xlsm
    30.3 KB · Affichages: 14
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 716
Messages
2 081 828
Membres
101 823
dernier inscrit
mohamed3s