Chercher combien de fois apparait un mot sur une ligne

Bonjour, je suis confronté à un problème que je ne parviens pas à résoudre. Pour faire simple, imaginons la Colonne A de mon tableau principal avec en début de chaque ligne des mots comme "METEO", "ROUTE",...

Je veux créer une formule dans un deuxième tableau qui va chercher la ligne commençant par "METEO" et je veux que la formule calcule combien de fois apparait le mot "NUAGES" sur cette ligne. Même chose pour le mot "ROUTE", je veux que la formule me calcule le nombre de fois ou apparait le mot "VOITURES" sur la ligne commençant par "ROUTE" du tableau principal.

J'espère avoir été clair .....

Merci d'avance

Bonjour,

Pour rechercher votre cellule dans la colonne : Fonction Google Sheets : RECHERCHEV (sheets-pratique.com)

Pour compter : Fonction Google Sheets : NB.SI (sheets-pratique.com)

En supposant que vos lignes sont bien constituées de plusieurs cellules (1 mot/colonne).

Ca ne fonctionne pas, ce serait trop simple

Le problème c'est que je cherche à compter des mots sur une ligne et non une colonne et sur une ligne commençant par un mot bien précis.

Dans mon exemple ci-dessous j'ai le tableau principal que je renseigne et un 2ème tableau de statistiques donnant le nombre de fois où apparait par exemple le mot "Nuage" sur la ligne du lundi de mon tableau principal. C'est un exemple qui n'a rien à voir avec mon utilisation mais c'est pour simplifier. Il y a donc une façon plus simple pour remplir mon tableau de statistiques sur cet exemple mais ce n'est pas la solution que je recherche.

Je veux que mon tableau de statistique se remplisse seul en allant chercher la ligne qui va bien dans le tableau principal. Donc dans la cellules correspondant à la ligne "Lundi" et la colonne "Nuage" je veux une formule qui dit, si la ligne (de mon tableau de statistique) commence par "Lundi", je veux que tu ailles chercher combien de fois apparait le mot "Nuage" dans le tableau principal sur la ligne commençant également par "Lundi".

Il faut délimiter également les colonnes pour la recherche. Par exemple, faire cette recherche sur la ligne commençant par "Lundi" et de la colonne B à la colonne H.

PrincipalBCDEFGHIJKL
LundiNuageOrageNuagePluieNuagePluieOrageNuagePluiePluieOrage
JeudiOrageNuagePluieOragePluieOrageNuageNuageOragePluieOrage
StatistiquesNuageOragePluie
Lundi322
Mardi
Mercredi
Jeudi232
Vendredi

Bonjour,

C'est faisable, à l'aide de query, transpose, peux tu partager un fichier sheets ?

https://docs.google.com/spreadsheets/d/1pXkLYZyc1D90HpE_hp6vbiGc2o1FuLfzR3oQqew2GQU/edit?usp=sharing

C'est très compliqué d'exprimer clairement ce que je cherche.

Dans ce lien ce trouve un planning et un tableau de récapitulatif mensuel.

Je veux que la formule de la cellule G26 aille chercher la ligne commençant par le même texte de la cellule E26 dans la colonne A. Une fois cette ligne trouvée, je veux que la formule compte le nombre de fois où apparait le texte "A1" de la colonne B à la colonne AF

Bon courage

Alors, c'est "assez" simple sur le papier :

Il faut isoler la ligne de chaque personne, une fois que tu l'as, il faut compter chaque type d'absence dans la ligne.

Donc pour isoler chaque ligne de chaque personne on va se servir de filter :

=FILTER(B5:AF18;A5:A18=E26)

Là je demande d'afficher dans la plage B5:AF18 la ligne où la donnée en A5:A18 est égal ce qui est noté en E26.

Donc, j'ai ma ligne de donnée correspondant au nom en E26, maintenant on doit compter les types d'absences, qui sont listées en G25:N25

Pour ce faire on va juste imbriquer un NB.SI( filter(...) ; =G25)

ainsi, on aura le nombre de A1 pour LBD.

Sauf que là, on a une formule qui fonctionne pour E26 et G25, il faut faire toutes les combinaisons, une premiere solution, serait de bien ancrer les plages, pour faire glisser dans le tableau, voici la solution, à mettre en G26 et à faire glisser :

=NB.SI(FILTER($B$5:$AF$18;$A$5:$A$18=$E26);G$25)

Mais, c'est chiant et pas dynamique, on peut rendre ça dynamique, avec une seule formule en G26, la voici :

=MAP(E26:E37; LAMBDA(nom; MAP(G25:N25; LAMBDA(abs; NB.SI(FILTER($B$5:$AF$18; $A$5:$A$18=nom); abs)))))

Trop fort !!!!!!!!!! J'ai réussi à faire fonctionner ta première formule: =NB.SI(FILTER($B$5:$AF$18;$A$5:$A$18=$E26);G$25)

Mais pour la deuxième tu m'as perdu, je n'arrive as à la faire fonctionner . Que veux tu dire par rendre dynamique ?

Mais déjà un énorme merci

Met là en G26 et tout ton tableau de synthèse mensuelle va se compléter automatiquement, supprimes juste les éventuelles autres formules qui seraient à l'intérieur.

J'ai essayé mais ça ne fonctionne pas

image screenshot 2024 10 08 08 50 16 screenshot 2024 10 08 08 50 27

Bonjour,

La formule proposée par Pierre fonctionne parfaitement.

Il suffit au préalable d'effacer toutes les données contenues dans la plage {G26:N37} !

https://docs.google.com/spreadsheets/d/1C7XQfRL1ODdN6QRvpCLOgWwBy6vri0PYCLeSgKs_oKw/edit?usp=sharing

Cordialement,

Fil.

Ok, ben là ça fonctionne, pourtant il me semblait avoir tout effacé la première fois que j'ai essayé mais il y a du avoir un loupé.

Je reste admiratif, un énorme merci !!!!!!!

Du coup vu que vous êtes tous au top du top, j'aimerais maintenant une formule pour remplir le petit tableau que j'ai ajouté pour calculer le nombre d'astreintes (A1, A2, A3, .... confondues) les week-end (identifiés évidemment par "S" et "D" sur la ligne 3) et les jours fériés que j'identifie par un "F" sur la ligne 2.

Par exemple pour la ligne de "LBD" qui a eu 16 astreintes dans le mois, je veux savoir combien il en a eu durant les WE et durant les JF.

Pour les WE :

=iferror(query(transpose(query(ARRAYFORMULA(TO_TEXT($A$3:$AF$18));"select * where Col1 = '"&E26&"' ";1));"select count(Col1) where (Col1 = 'S' and Col2 is not null) or (Col1 = 'D' and Col2 is not null) label count(Col1)'' "))

Pour les F :

=iferror(query(transpose(query(ARRAYFORMULA(TO_TEXT($A$2:$AF$18));"select * where Col1 = '"&E26&"' ";1));"select count(Col1) where Col1 = 'F' and Col2 is not null  label count(Col1)'' "))

Je suis sur le cu........... !!!!!!! Merci !!!!!!!!!!

Mais si j'en avais déjà fini, ce serait trop simple pour vous

Comment faire maintenant pour transposer ces formules au mois suivants ? Faut-il que je modifie manuellement pour chaque mois les plages de données de la formule ?

Le plus simple est de faire un copier-coller de ton tableau mensuel et de changer les plages manuellement.

Sinon, ça va être une usine à gaz...

Ou alors, il faut modifier la structure du fichier :

1- avoir dans un onglet la liste des absences en format facilement exploitable : date / heure / nom / type absence / weekend / férié / etc.

2- avoir dans un second onglet le planning "visuel" avec l'affichage comme tu le souhaites

Merci pour toutes vos précieuses réponses.

Vous avez tous été au top, encore merci.

Je pensais en avoir fini mais non .......

Je viens de me rendre compte d'un petit problème pour le calcul des astreintes les WE et JF.

Il faut que ça ne compte que les astreintes nommées: A1, A2, A3, A4, A5, A6, A7, A8. Si il y a par exemple CA, ST, ...... Il ne faut pas que ça rentre de le calcul.

en reprenant les formules de @Filoche :

We :

=SIERREUR(query(transpose(query(ARRAYFORMULA(TO_TEXT($A$3:$AF$18));"select * where Col1 = '"&E26&"' ";1));"select count(Col1) where (Col1 = 'S' and Col2 is not null and Col2 <> 'CA' and Col2 <> 'ST') or (Col1 = 'D' and Col2 is not null and Col2 <> 'CA' and Col2 <> 'ST') label count(Col1)'' "))

F :

=SIERREUR(query(transpose(query(ARRAYFORMULA(TO_TEXT($A$2:$AF$18));"select * where Col1 = '"&E26&"' ";1));"select count(Col1) where Col1 = 'F' and Col2 is not null and Col2 <> 'CA' and Col2 <> 'ST' label count(Col1)'' "))

Merci pour ta réponse.

Il n'y a pas moyen au lieu d'exclure des "mots" qui ne doivent pas être compté de plutôt dire de ne compter que "A1, A2, A3, A4, A5, A6, A7, A8" ?

Ca éviterait des erreurs

Rechercher des sujets similaires à "chercher combien fois apparait mot ligne"