• Initiateur de la discussion Initiateur de la discussion Wissem
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonjour,

Voyez la formule suivante : =INDEX(stat_fou!$B$2:$B$18124;GRANDE.VALEUR(SI(stat_fou!$E$2:$E$18124=Liste_éléments!$G2;LIGNE(stat_fou!$B$2:$B$18124);0);1))

Je vous laisse faire pour les autres colonnes.

Question : pourquoi ne pas utiliser les tableaux structurés plutôt que des plages de cellules ? Vous avez excel 2010.

cordialement

{Edition] j'ai omis d'ajouter un -1 au résultat de la formule Grande.Valeur (vos données commencent en ligne 2) =>> =INDEX(stat_fou!$B$2:$B$18124;GRANDE.VALEUR(SI(stat_fou!$E$2:$E$18124=Liste_éléments!$G2;LIGNE(stat_fou!$B$2:$B$18124);0)-1;1))
 

Pièces jointes

Dernière édition:
Re,

Voyez ce nouveau fichier avec une formule qui vous permet de ne pas valider par ++MAJ+Entrer et qui est plus rapide. Elle utilise la fonction Agregat (disponible sur excel 2010) et les données sont sous forme de tableaux structurés.

Cordialement
Bonjour,
Merci pour la formule, sauf que je veux comme résultat
-> dans la colonne 0 le foulib qui a le plus grand chiffre dans compteDeRef
->dans la colonne 02 le foulib qui a le deuxième plus grand chiffre dans CompteDeRef
même principe pour 03 et 04
 
Bonjour Wissem, Roblochon, danielco,

Il faut distinguer les ex aequo d'où cette formule matricielle assez lourde en H2 :
Code:
=SIERREUR(INDEX(stat_fou!$B$2:$B$18124;EQUIV(GRANDE.VALEUR(SI(stat_fou!$E$2:$E$18124=$G2;stat_fou!$D$2:$D$18124-LIGNE(stat_fou!$D$2:$D$18124)/"1E9");1);SI(stat_fou!$E$2:$E$18124=$G2;stat_fou!$D$2:$D$18124-LIGNE(stat_fou!$D$2:$D$18124)/"1E9");0));"")
Tirez la formule vers la droite puis remplacez le ;1 par ;2 puis par ;3 etc...

L'utilisation de -LIGNE(xxx)/"1E9" pour distinguer les ex aequo est classique.

A+
 

Pièces jointes

Bonjour,

Pour la première ligne vous avez ceci dans stat_fou:
id_FouFouLibId_FamCompteDeRefLibRef
2963METALCAUCHO19051Bouchon de goulotte de remplissage huile
2964STC19049Bouchon de goulotte de remplissage huile
1292METALCAUCHO par JCD AVA19049Bouchon de goulotte de remplissage huile
3989TRICLO19045Bouchon de goulotte de remplissage huile
2675ORIGINAL IMPERIUM19043Bouchon de goulotte de remplissage huile
3831CAUTEX19041Bouchon de goulotte de remplissage huile
2253RAM_ES19039Bouchon de goulotte de remplissage huile

où l'on voit que compteDeRef 49 apparait deux fois ? la formule suivante prendra la ligne 10827 qui est la deuxième correspondant à 49 : AGREGAT(14;6;LIGNE(T_Stat_Fou[CompteDeRef])/(T_Stat_Fou[CompteDeRef]= AGREGAT(14;6;T_Stat_Fou[CompteDeRef]/(T_Stat_Fou[LibRef]=[@libelegen]);2))/((T_Stat_Fou[LibRef]=[@libelegen]));1)

Et ceci pour i2 et j2 de Liste_elements

Que faire des doublons de compteDeRef ?

Avez-vous powerQuery d'installé en complément excel ?

Cordialement
 
Bonjour le forum,

Pour alléger les formules :

- sélectionner la cellule H2

- définir le nom matrice par :
Code:
=SI(stat_fou!$E$2:$E$18124=Liste_éléments!$G2;stat_fou!$D$2:$D$18124-LIGNE(stat_fou!$D$2:$D$18124)/"1E9")
- entrer en H2 la formule :
Code:
=SIERREUR(INDEX(stat_fou!$B$2:$B$18124;EQUIV(GRANDE.VALEUR(matrice;1);matrice;0));"")
La validation matricielle n'est plus nécessaire, voyez ce fichier (2).

J'ai testé en rendant les 3960 formules volatiles, elles se recalculent en 9 secondes, fichiers (1) ou (2).

Bonne journée.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
193
Réponses
6
Affichages
239
Réponses
3
Affichages
533
Réponses
4
Affichages
110
Réponses
5
Affichages
388
  • Question Question
Réponses
6
Affichages
278
Réponses
7
Affichages
157
Retour