Formule NB à condition que la donnée soit consécutive.
Ibraoc
Messages postés
2
Statut
Membre
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
Bonjour,
https://mon-partage.fr/f/iESzWcrE/
j'ai un blocage sur un fichier excel de suivi des absences.
c'est un planning sur lequel les jours d'absence sont renseignés sur l'année entière. (colonne D à NE)
lorsqu'une personne est absente le jeudi 10.4.2020 nous renseignons un "1" dans la cellule de ce jour. )les cellules ou pas d'absence sont vides)
en fin d'année nous devons savoir le nombre d'arrêt dans les celulles (colonne NN à NY du tableau).
de 1 à 3 jours ,
puis de 4 à 8 jours
, puis de 9 à 21 jours
et enfin supérieurs à 21 jours.
Il me faudrait donc une formule qui me permettrait de savoir combien de fois le salarié a été absent de 1 à 3 jours dans l'année et ainsi de suite.
exemple si Mr DUPONT a été absent 5 fois 2 jours dans l'année, il faudrait que le résultat de la formule pour les arrêts de 1 à 3 jours soit =5
puis s'il a été absent 2 fois 25 jours, le résultat pour les arrêt supérieurs à 21 jours doit être = 2...
ça à l'air difficile à réaliser mais je tente quand même...
d'avance merci.
https://mon-partage.fr/f/iESzWcrE/
j'ai un blocage sur un fichier excel de suivi des absences.
c'est un planning sur lequel les jours d'absence sont renseignés sur l'année entière. (colonne D à NE)
lorsqu'une personne est absente le jeudi 10.4.2020 nous renseignons un "1" dans la cellule de ce jour. )les cellules ou pas d'absence sont vides)
en fin d'année nous devons savoir le nombre d'arrêt dans les celulles (colonne NN à NY du tableau).
de 1 à 3 jours ,
puis de 4 à 8 jours
, puis de 9 à 21 jours
et enfin supérieurs à 21 jours.
Il me faudrait donc une formule qui me permettrait de savoir combien de fois le salarié a été absent de 1 à 3 jours dans l'année et ainsi de suite.
exemple si Mr DUPONT a été absent 5 fois 2 jours dans l'année, il faudrait que le résultat de la formule pour les arrêts de 1 à 3 jours soit =5
puis s'il a été absent 2 fois 25 jours, le résultat pour les arrêt supérieurs à 21 jours doit être = 2...
ça à l'air difficile à réaliser mais je tente quand même...
d'avance merci.
A voir également:
- Formule NB à condition que la donnée soit consécutive.
- Formule si et - Guide
- Excel cellule couleur si condition texte - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Retour à la ligne excel formule - Guide
5 réponses
bonjour
sans garantie de la solution, pour partager le classeur, ici par exemple:
http://mon-partage.fr
et revenez coller le lien créé sur le site
ajoutez si besoin quelques explications dans le fichier
crdlmnt
sans garantie de la solution, pour partager le classeur, ici par exemple:
http://mon-partage.fr
et revenez coller le lien créé sur le site
ajoutez si besoin quelques explications dans le fichier
crdlmnt
Bonjour Vaucluse, bonjour Ibraoc.
"ça à l'air difficile à réaliser" : Tu as raison, je ne pense pas qu'on puisse trouver une solution sans VBA ; d'après moi seule une macro pourrait effectuer ces calculs.
"ça à l'air difficile à réaliser" : Tu as raison, je ne pense pas qu'on puisse trouver une solution sans VBA ; d'après moi seule une macro pourrait effectuer ces calculs.
Si cela peut aider un de vous, voici une manipulation pour trouver la durée de chaque période d'absence :
https://cjoint.com/c/JDlxCsvLnrx
Bonjour
le plus simple pour éviter du VBA serait d'incrémenter dans votre tableau les jours successifs d'absence:
1 pour le premier jour, 2 pour le 2° 3 pur le 3° etc.. et recommencer à 1 pour chaque période
ainsi on peut compter le calcul des jours uniquement par les valeurs NUM et les groupes par NB.SI.
crdlmnt
le plus simple pour éviter du VBA serait d'incrémenter dans votre tableau les jours successifs d'absence:
1 pour le premier jour, 2 pour le 2° 3 pur le 3° etc.. et recommencer à 1 pour chaque période
ainsi on peut compter le calcul des jours uniquement par les valeurs NUM et les groupes par NB.SI.
crdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour à tous,
oui, en l'état, par formule ça risque d'être plutôt à rallonge.
Une fonction personnalisée à mettre dans un module standard :
Pour inscrire la formule sur la feuille :
- soit tu sélectionnes les 4 cellules résultats et :
Formule matricielle à valider avec Shift+Ctrl+Entrée
La formule doit s'entourer de { } si la validation est correcte.
Voir NN6:NQ6
- soit tu sélectionnes une seule cellule et tu choisis la colonne du résultat voulu (de 1 à 4) avec Index() et :
Ca fait 4 appels à la fonction au lieu d'un, mais vu ton fichier ça ne devrait pas être gênant.
https://www.cjoint.com/c/JDmifEIJNFV
eric
oui, en l'état, par formule ça risque d'être plutôt à rallonge.
Une fonction personnalisée à mettre dans un module standard :
Function nbArret(plage As Range)
Dim datas, col As Long, result(1 To 1, 1 To 4) As Long, nb As Long, ok As Boolean
datas = plage.Value
'nb = datas(1, 1)
For col = 1 To UBound(datas, 2)
If datas(1, col) = 1 Then
nb = nb + 1
Else
If nb > 0 Then ok = True
End If
ok = ok Or col = UBound(datas, 2)
If ok And nb > 0 Then
Select Case nb
Case 1 To 3
result(1, 1) = result(1, 1) + 1
Case 4 To 8
result(1, 2) = result(1, 2) + 1
Case 9 To 21
result(1, 3) = result(1, 3) + 1
Case Else
result(1, 4) = result(1, 4) + 1
End Select
nb = 0: ok = False
End If
Next col
nbArret = result
End Function
Pour inscrire la formule sur la feuille :
- soit tu sélectionnes les 4 cellules résultats et :
=nbArret(D6:NE6)
Formule matricielle à valider avec Shift+Ctrl+Entrée
La formule doit s'entourer de { } si la validation est correcte.
Voir NN6:NQ6
- soit tu sélectionnes une seule cellule et tu choisis la colonne du résultat voulu (de 1 à 4) avec Index() et :
=INDEX(nbArret(D7:NE7);;1)
Ca fait 4 appels à la fonction au lieu d'un, mais vu ton fichier ça ne devrait pas être gênant.
https://www.cjoint.com/c/JDmifEIJNFV
eric