Récupérer chaque occurence d'une liste sans utiliser filtre, ou TCD

  • Initiateur de la discussion Initiateur de la discussion benoua
  • 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 !

benoua

XLDnaute Occasionnel
Bonjour le forum!

J'ai déjà eu ce pb il y'a quelques années, mais pas moyen de remettre la main sur le sujet qui m'avait aidé. Mais je sais que c'est possible.
J'ai d'un coté une table avec une liste de ville avec un montant associé. Les villes peuvent se répéter.
J'ai besoin sur une autre feuille, de récupérer la liste de ces occurences de manière automatique. C'est à dire si je rajoute une ligne sur ma table avec une nouvelle ville, que celle-ci vienne s'ajouter à la suite automatiquement.
Le fichier joint n'est qu'un exemple, mais pour l'utilisation que je veux avoir je peux pas utiliser de filtre ou de TCD.
Je sais que je peux le faire avec une formule matricielle mais j'ai pas utilisé ça depuis des années et même avec les supers explications de microsoft je n'arrive pas à comprendre...
Je préfère éviter d'avoir à utiliser une macro mais si y'a pas le choix...
Merci pour l'aide!
 

Pièces jointes

Re : Récupérer chaque occurence d'une liste sans utiliser filtre, ou TCD

Bonjour,
Intéressé par le sujet, j'ai analysé le fichier proposé par benoua et j'en ai extrait la formule

=INDEX(listeVille;MIN(SI(NB.SI(G$12:G12;listeVille)=0;LIGNE(INDIRECT("1:"&LIGNES(listeVille)));LIGNES(listeVille))))&""

Puis j'ai essayé de la comprendre en la "décortiquant":

LIGNES(listeVille) compte le nombre de ligne de la liste
INDEX fait référence à la liste de 24 lignes et se sert du reste de la formule comme no_lig (N° de ligne)
MIN cherche le minimum résultat de la formule "SI"
NB.SI compte le nombre de valeurs contenues dans la plage G$12:G12 (avec un incrément) qui répondent au critère listeVille. Là, déjà, je ne comprends pas comment une liste peut être le critère de NB.SI. Pouvez-vous m'expliquer ?
Avec INDIRECT, ça se corse: en effet, cette fonction s'accompagne normalement d'une syntaxe faisant référence à une cellule (par exemple D5), mais ici, la syntaxe est INDIRECT(1:24) [puisqu'il y a 24 lignes] Comment cela focntionne t'il ?
LIGNE détermine le N° de la ligne obtenu à partir de la formule LIGNE(INDIRECT("1:"&LIGNES(listeVille))). Dans le cas où le test "SI" est vrai, ce sera ce N° de ligne qui sera le résultat, sinon, on aura 24. Mais à quoi sert alors le "MIN" ?

Enfin, je ne comprends pas non plus ce que vient faire le &"" en fin de formule.

Une fois la formule écrite, elle est validée par CTRL + MAJ + ENTREE, ce qui lui ajoute { } de part et d'autre. Est-ce que cela signifie que la formule change alors de "statut" ?

Merci d'avance pour vos réponses
 
Re : Récupérer chaque occurence d'une liste sans utiliser filtre, ou TCD

Bonjour,
le nb.si(plageA;plageB) en matriciel (avec les {} obtenue par la validation ctrl+maj+enter) donne une matrice de comptage des valeurs de la plage 1 dans la plage2. Avec SI ... = 0 on n'appelle que les valeurs non encore présentes (on dédoublonne en fait)
Avec le min on appelle toujours le N° de ligne qui répond au test SI(...=0
le &"" en final permet de masquer les 0
Je ne sais pas si c'est très clair !
 
- 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
2
Affichages
496
Réponses
7
Affichages
366
Retour