Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…