Recherche de cellules dans une plage de donnees

Fermé
Sancouette Messages postés 2 Date d'inscription mercredi 11 juillet 2018 Statut Membre Dernière intervention 12 juillet 2018 - 11 juil. 2018 à 19:04
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 12 juil. 2018 à 12:21
Bonjour a tous,

N'etant pas une grande experte des formules excel, je cherche ici un peu d'aide...
J'ai besoin d'exploiter les donnees d'une pointeuse, qui me donne un tableau pour chaque staff, avec les horaires d'entree et sortie pour chaque jour. (j'ai en tout une cinquantaine de staff)
Mon but est d'avoir un tableau qui me dira, pour chaque jour, combien de staff ont travaille.

Dans mon fichier excel (image jointe), les cellules qui m'interessent sont celles en dessous de chaque jour, je voudrais une formule qui cherche toutes les cellules avec "07 Thu" pour le jeudi 7, puis regarde la cellule d'en dessous, et me dise combien de ces cellules, dans ma plage de 50 staffs, ont une valeur non nulle = jour travaille.



Un grand merci d'avance pour vos lumieres !

Sandra

2 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 416
11 juil. 2018 à 19:39
Bonjour
votre image ne dit pas grand chose! On ne voit pas sur cette image combien vous avez de paragraphe à traiter pour le même jour
avec un modèle Excel que vous pouvez déposer ici, ce serait plus facile à traiter:
http://mon-partage.fr
  • en revenant ici coller le lien créé sur le site

en attendant ce que l'on peu imaginer avec ce que vous nous donnez:

si vous démarrez dans la cellule D17 et en supposant que vous avez 50 staff, jusqu'en colonne Zd (donc jusqu'en Z351)
à adapter

la formule en AD17:

=SOMMEPROD(($D$17:$Z$350=AC17)*($D$18:$E$351<>""))

attention au décalage d'une ligne entre les plages traitées, qui doivent avoir la même hauteur

à tirer sur la hauteur de la liste en AD
Cette formule devrait compter toutes les cellules non vides directement au dessous de celles du tableau qui contiennent la date en AD
sous toutes réserves...la compréhension pouvant être défaillante

à vous lire
crdlmnt





0
Sancouette Messages postés 2 Date d'inscription mercredi 11 juillet 2018 Statut Membre Dernière intervention 12 juillet 2018
12 juil. 2018 à 12:03
Bonjour Vaucluse,

J'ai bien tente votre formule, mais je n'obtiens rien, je ne m'y prends certainement pas bien...
J'ai suivi votre conseil et telecharge le fichier sur Mon Partage :
https://mon-partage.fr/f/iUeLqRCL/

Encore merci :)

Hate de recevoir votre conseil.

Sandra
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 416
Modifié le 12 juil. 2018 à 12:39
Bonjour
1° ce n'est pas une très bonne idée avec Excel d'utiliser à outrance les cellules fusionnées qui perturbent l'utilisation des formules

Ceci dit pour info, ça devrait quand même fonctionner, à condition que les deux plages de SOMMEPROD, décalés d'une ligne, aient exactement les mêmes dimensions, soit donc en AD17 la formule

=SOMMEPROD(($B$17:$AA$377=AC17)*($B$18:$AA$378<>""))
à tirer sur la hauteur

bien évidemment, cette formule ne prendra pas en compte le premier tableau au dessus de la ligne 17!
et les résultats sont moins bien garantis que si vous n'aviez pas de cellule fusionnées!!!
crdlmnt

ps: ici, ce que ça doit donner:
https://mon-partage.fr/f/V8AyXasg/
0
Hutg Messages postés 8 Date d'inscription mercredi 11 juillet 2018 Statut Membre Dernière intervention 20 juillet 2018
11 juil. 2018 à 22:06
Bonjour,

J'ai adapté ce code à ce que vous voulez faire. Pour le lancer, appuyez sur Alt + F11 quand vous êtes sur votre Classeur Excel. Puis, cliquez sur la feuille où sont vos données et copier coller le code ci-dessous. Pour finir, remplacez le "Mettre le numéro de la dernière ligne de vos données" par le numéro de la dernière ligne et appuyez sur F5 pour que le code se lance.

Sub CompteWorkers()
Dim Donnees As Range
Dim Compteur As String

Set Donnees = Range(Cells(1, 1), Cells("Mettre le numéro de la dernière ligne de vos données", 27))

For Jour = 17 To 39
Compteur = 0
For Each C In Donnees
If C.Value = Cells(Jour, 29) And Not Cells(C.Row + 1, C.Column) = "" Then
Compteur = Compteur + 1
End If
Next C
Cells(Jour, 30) = Compteur
Next Jour

End Sub
0