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

Microsoft 365 Recherche dans un tableau, une matrice

dgui

XLDnaute Nouveau
Bonjour,

Un collègue me demande de l'aide pour résoudre une recherche dans un fichier xlsx.
Je précise ce point car je ne peux pas changer l'architecture du fichier ce qui aurait permis d'autres approches pour répondre au besoin.
La solution doit être sans vba (ce serait trop simple ...).

Dans une feuille, il y a une plage de donnée qui contient des données dont la position est aléatoire.
Les données sont constituées d'un mot dans une cellule et d'un nombre associé dans une cellule adjacente.
L'objectif est de faire la somme des nombres qui ont le même mot associé.
Exemple (Mot1:10 ; Mot2:30 ; Mot1:5 ; Mot7:14 ; Mot2:17)
Si je recherche "Mot2" je souhaite obtenir 47 (30+17).

Comme la position des mots à rechercher est aléatoire, j'ai pensé utiliser une formule matricielle.
=SOMME(SI(Constat=B3;1;0)) //Constat est la plage de cellule (B5:I17) contenant les données
Cette formule fonctionne bien et permet de compter le nombre d'occurence du mot recherché.

J'ai voulu poursuivre avec cette formule pour sommer les nombres associés à ces occurrences.
=SOMME(SI(Constat=B3;INDIRECT(ADRESSE(LIGNE(Constat);COLONNE(Constat)+1);0)))
Problème : #REF!

J'ai décomposé la formule
=SI(Constat=B3;ADRESSE(LIGNE(Constat);COLONNE(Constat)+1);0))
Cela me renvoie bien une matrice avec l'adresse de chaque cellule répondant vrai au test logique

Le problème survient lorsque l'on ajoute INDIRECT dans la formule.

Avez-vous une explication du problème et/ou une solution ?

Cordialement.
 

Pièces jointes

  • recherche matrice.xlsx
    13.7 KB · Affichages: 9

dgui

XLDnaute Nouveau
Bonjour à tous,

Pour le nombre d'occurrences, pourquoi ne pas utiliser nb.si()
VB:
=NB.SI(Constat;$B$3)

JHA
Le nombre d'occurence n'était pas une demande, mais une décomposition de ma part pour comprendre à quel stade ma formule ne fonctionne pas.
Vous avez entièrement raison, si l'objectif est de compter le nombre d'occurence c'est NB.SI qui est plus adapté.
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Si tu veux avoir une seconde table avec les valeurs, tu peux tester avec si()
Beaucoup plus simple à comprendre.

JHA
 

Pièces jointes

  • recherche matrice rev1.xlsx
    12.8 KB · Affichages: 6

dgui

XLDnaute Nouveau
Non je cherchais le résultat dans une unique cellule, tous ce que j'ai présenté était uniquement une décomposition pour comprendre où est l'erreur.
La première solution est celle que je cherchais, Merci.
Une idée de l'erreur dans ma formule d'origine ?
 

Discussions similaires

Réponses
2
Affichages
379
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…