Recherche complexe

legaulois69

XLDnaute Nouveau
Bonjour,

je réalise actuellement un fichier excel dans lequel nous encodons les distributions de loots/récompenses lors de nos raid avec ma guilde World of Warcraft.

J'ai donc un fichier avec plusieurs feuilles correspondant à chaque classe. Dans ces feuilles nous retrouvons sur la première ligne, les dates des raids, sur les lignes suivantes les noms des joueurs, et dans les colonnes le loot si un joueur en reçoit un.

J'ai également une feuille formulaire qui devrait servir à retrouver la date de dernier loot d'un joueur.

Pour ce faire l'utilisateur doit sélectionner dans une première liste déroulante la classe du joueur, ensuite (par validation de données) il choisit le joueur (uniquement ceux de la classe sélectionnée).

Après avoir sélectionné un joueur, il devrait y avoir une recherche qui me retourne la date maximum des cellules de la première ligne de la feuille correspondant à la classe, si et seulement si, dans la ligne correspondant au nom du joueur sélectionné le champ est différent de NULL.

Je ne parviens pas à réaliser cette recherche, si quelqu'un était dans la mesure de m'aider ça serait super.

Donc en gros :

je sélectionne un chasseur et ensuite je sélectionne Legaulois, je dois avoir sa date de dernière récompense qui s'affiche.

Exemple :

Si legaulois a raidé le 20 octobre, le 21 et le 22. Mais qu'il a loot le 21, la date à retourner est le 21.

D'avance merci.

Legaulois ;)
 

Pièces jointes

  • wownew.zip
    15 KB · Affichages: 38
  • wownew.zip
    15 KB · Affichages: 34
  • wownew.zip
    15 KB · Affichages: 36

abcd

XLDnaute Barbatruc
Re : Recherche complexe

Bonjour,

Effectivement, pas facile ... à comprendre !

1. Quest-ce qu'un "loot" ?
Serait-ce "Epos T6", parce que cette dénomination se retrouve le 21/10/2008 ?

2. Il faut nécessairement que les noms des classes sous la liste déroulante en Formulaire!B14 soient identiques à celles des en-têtes du tableau (B24:K24).
Par exemple Chasseurs et Chasseur ne convient pas.

3. Pour la liste déroulante en Formulaire!B16, fais une recherche sous les anciens mesages avec le mot "cascade" comme clef de recherche.

4. Sous la question : Si legaulois a raidé le 20 octobre, le 21 et le 22 ...
Le 20 et le 22/10/2008 n'existent pas.

abcd

Edition :
Salut Jocelyn,
Je viens de voir que tu as répondu, mais je n'ai pas encore ouvert ton fichier.
Aurais-tu compris ?
 

legaulois69

XLDnaute Nouveau
Re : Recherche complexe

Bonsoir,

jocelyn c'est exactement ça, ça fonctionne à merveille.

Par contre lorsque j'essayer de copier ta formule dans mon fichier, j'ai dans la case de résultat #REF.

A part la formule y a t'il quelque chose d'autre à traiter ?

Peux tu m'expliquer celle-ci si tu le veux bien pour que je puisse parfaire mes connaissances ;)

D'avance merci
 

Jocelyn

XLDnaute Barbatruc
Re : Recherche complexe

re,
Bonjour abcd,

Hum hum les explication et les grands textes ce n'est pas ma tasse de thé, bon je me lance.

Alors pour faire fonctionner tout ca j'ai changer la liste de validation de la cellule B14.

pour cela j'ai créé une nouvelle plage nommée :

types : =Formulaire!$B$24:$K$24

ensuite dans la liste de validation dans le champ source il faut mettre =types

Concernat la liste de validation de la cellule B16 dans le champ source mettre la formule

=SI(ESTNUM(CHERCHE("Morts";$B$14));Chevalier;INDIRECT(GAUCHE($B$14;NBCAR($B$14)-1)))

ici si l'on trouve le mot "Morts" on choisi la liste chevalier que tu as crée

sinon on choisi le nom de la liste qui corespond au mot écrit en B14 en prenant toutes ses lettre a partir de la gauche moins une pour enlever le "S" en fin de mot puisque les noms de tes plage nommées ne sont pas au pluriel.

concernant la formule de la cellule B18

=MAX(SI((INDIRECT("'"&B14&"'!A1:A100")=B16)*(INDIRECT("'"&B14&"'!"&EQUIV(B16;INDIRECT("'"&B14&"'!A1:A100");0)&":"&EQUIV(B16;INDIRECT("'"&B14&"'!A1:A100");0))<>"");INDIRECT("'"&B14&"'!1:1")))

toute les partie de type :INDIRECT("'"&B14&"'!A1:A100") permettent de recréer l'adresse des differents on glet et plage par exemple celle extraire dans cette phrase recré quelque chose du type.

Si B14 = Démonistes cela donne aprés reconstitution 'Démoniste'!A1:A100
Si B14 = Voleurs => 'Voleurs'!A1:A100

Les apstrophes en rouge dans les 2 ligne du dessus serrvent normalement lorsque les nom d'onglet comporte des espaces mais ne gène pas dans le cas contraire comme tu as un onglet dont le nom a des espaces je les ais mis.

Attention pour que cette formule fonctionne correctement outre le fait de la valider matriciellement il faut que les nom de la plage $B$24:$K$24 de la feuille formulaire correspondent (soit écrit de la même façon) exactement au nom des différents onglets

Voila j'espère avoir été clair si ce n'est pas le cas n'hésite pas

Jocelyn

Edit je te joint un nouveau fichier j'ai complété la formule en B18 pour qu'elle afiche "Pas encore de loot" si le personnage n'a encore rien gagné ce qui est les cas par exemple pour Aragore des paladins
 

Pièces jointes

  • wownew V1.zip
    16.1 KB · Affichages: 26
Dernière édition:

legaulois69

XLDnaute Nouveau
Re : Recherche complexe

Une dernière petite chose, je voudrais ajouter dans une cellule en dessous de la date une formule qui me retourne le nom du loot a la dernière date si loot reçu ou de nouveau "Pas de loot". Mais je ne vois pas comment faire.

Peux-tu encore m'éclairer ?

D'avance merci
 

Jocelyn

XLDnaute Barbatruc
Re : Recherche complexe

re,

Voila la nouvelle version avec le loot auquel la date correspond

si le personnage n'a pas eut de loot la case reste vide, si tu veux quelle indique Pas encore de lot remplace la partie en rouge de la formule ci dessous par "Pas encore de loot"

=SI(ESTERREUR(INDEX(INDIRECT("'"&B14&"'!"&EQUIV(B16;INDIRECT("'"&B14&"'!A1:A100");0)&":"&EQUIV(B16;INDIRECT("'"&B14&"'!A1:A100");0));EQUIV(B18;INDIRECT("'"&B14&"'!1:1");0)));"";INDEX(INDIRECT("'"&B14&"'!"&EQUIV(B16;INDIRECT("'"&B14&"'!A1:A100");0)&":"&EQUIV(B16;INDIRECT("'"&B14&"'!A1:A100");0));EQUIV(B18;INDIRECT("'"&B14&"'!1:1");0)))

Jocelyn

Edit la formule en B20 peut etre simplifiée comme ca et pour "Pas encore de loot" changer la partie en rouge de la même façon
=SI(B18="Pas encore de loot";"";INDEX(INDIRECT("'"&B14&"'!"&EQUIV(B16;INDIRECT("'"&B14&"'!A1:A100");0)&":"&EQUIV(B16;INDIRECT("'"&B14&"'!A1:A100");0));EQUIV(B18;INDIRECT("'"&B14&"'!1:1");0)))
 

Pièces jointes

  • wownew V2.zip
    16.2 KB · Affichages: 37
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 692
Membres
105 510
dernier inscrit
gabgil.