Microsoft 365 Calcul matriciel ?

Neo1976_

XLDnaute Nouveau
Bonjour à tous,
J'espère que vous allez bien. Je n'ai pas trouvé de réponse à mon problème, ni par moi-même ni sur le forum, alors j'ouvre une discussion.
Je cherche à faire une formule qui compte dans une liste le nombre d'éléments en commun.

Par exemple, en partant de la source suivante :
SportActivité
RienFait le café
TriathlonCourt le 100 m en dix secondes
TriathlonNage 1500 m en 30 minutes
TriathlonParcourt 200 km en vélo sans boire
NatationNage 1500 m en 30 minutes
Course à piedCourt le 100 m en dix secondes
Course à pied plusCourt le 100 m en dix secondes
Course à pied plusFait le café
CyclismeParcourt 200 km en vélo sans boire
Cyclisme plusParcourt 200 km en vélo sans boire
Cyclisme plusFait le café

Je souhaite écrire une formule qui, en indiquant 2 sports parmi la liste, me donne le nombre d'activités communes.
Par exemple, pour Triathlon et Course à pied, le résultat est 1 car l'activité "Court le 100 m en dix secondes" est présente pour les deux.

Je vous joins un fichier avec cette source et le résultat attendu.

J'ai l'intuition qu'il s'agit d'un SOMME.PROD, mais je n'en suis pas sûr, et si c'est cela je ne suis pas assez habitué de cette fonction pour réussir à écrire la formule...
Je pourrais l'écrire en VBA, mais je pense que ce n'est pas nécessaire...

Une idée ?

Merci d'avance le forum !
 

Pièces jointes

  • Sports.xlsx
    14.5 KB · Affichages: 8

Staple1600

XLDnaute Barbatruc
Re

Alors, pour plagier Paris Match ;)
0101Filtro.jpg
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Neo1976_ , @Staple1600 ;),

Une formule matricielle en D19 à copier/tirer vers la droite et vers le bas:
Code:
=SOMME(--ESTNUM(SI(SI(Tableau1[Sport]=$C19;EQUIV(Tableau1[Activité];Tableau1[Activité];0);"")<>"";EQUIV(SI(Tableau1[Sport]=$C19;EQUIV(Tableau1[Activité];Tableau1[Activité];0);"");SI(Tableau1[Sport]=D$18;EQUIV(Tableau1[Activité];Tableau1[Activité];0);"");0);"")))

Formule Matricielle:
  • à valider par la combinaison des trois touches Ctrl+Maj+Entrée au lieu de la seule touche Entrée
  • ne pas entourer la formule d'accolade au clavier. C'est la validation par Ctrl+Maj+Entrée qui ajoute les accolades
  • une fois saisie et validée, une formule matricielle peut être copiée et collée
  • à chaque édition/modification de la formule matricielle, penser à la valider par Ctrl+Maj+Entrée

nota : cette formule ne doit fonctionner que si il n'y a pas de doublons (sport, activité) dans le tableau.
 

Pièces jointes

  • Neo1976_-Sports- v1.xlsx
    14.2 KB · Affichages: 6
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

A mon avis, cette fonction personnalisée est meilleure que la formule car elle n'est pas sensible aux doublons (voir tableau rose dans le fichier). Formule en M19 à copier/tirer vers la droite et vers le bas.
La fonction VBA;
VB:
Function MemeActi(tablo As Range, acti1, acti2) As Long
Dim dico As New Dictionary, t, i&, n&
   Set dico = CreateObject("scripting.dictionary")
   dico.CompareMode = TextCompare
   t = tablo.Value
   For i = 1 To UBound(t)
      If t(i, 1) = acti1 Then dico(t(i, 2)) = ""
   Next i
   For i = 1 To UBound(t)
      If t(i, 1) = acti2 Then If dico.Exists(t(i, 2)) Then n = n + 1: dico.Remove t(i, 2)
   Next i
   MemeActi = n
End Function


edit : Bonsoir R@chid :):)
 

Pièces jointes

  • Neo1976_-Sports- v2.xlsm
    21.4 KB · Affichages: 8
Dernière édition:

Neo1976_

XLDnaute Nouveau
Bonsoir le fil

Neo1976_
Ton incompréhension de 20h26 (hier) n'a pas été levée par mon message de 20h32 ?
Je m'en inquiète car tu ne m'as pas tenu informé de la chose...:rolleyes:

bonjour @Staple1600 ! Et désolé pour le temps de réponse...
la solution du filtre ne me convenait pas car j’ai besoin du résultat pour toutes les combinaisons, pour exploiter cela ensuite dans un TCD. c’est pour cela que la formule ou la fonction VBA me semblent nécessaire. A mois qu’avec un filtre je puisse obtenir le résultat pour toutes les combinaisons, mais je ne connais pas une telle utilisation.
 

Discussions similaires

Statistiques des forums

Discussions
312 430
Messages
2 088 361
Membres
103 829
dernier inscrit
Compta2a