Formule NB à condition que la donnée soit consécutive.
Fermé
Ibraoc
Messages postés
2
Date d'inscription
vendredi 10 avril 2020
Statut
Membre
Dernière intervention
10 avril 2020
-
Modifié le 10 avril 2020 à 11:47
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 12 avril 2020 à 10:08
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 12 avril 2020 à 10:08
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 excel pour additionner plusieurs cellules - Guide
- Formule excel moyenne - Guide
- Retour à la ligne excel formule - Guide
5 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 418
10 avril 2020 à 11:26
10 avril 2020 à 11:26
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
Raymond PENTIER
Messages postés
58764
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
17 256
12 avril 2020 à 00:26
12 avril 2020 à 00:26
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.
Raymond PENTIER
Messages postés
58764
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
17 256
12 avril 2020 à 01:33
12 avril 2020 à 01:33
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
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 418
12 avril 2020 à 08:52
12 avril 2020 à 08:52
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
12 avril 2020 à 10:08
12 avril 2020 à 10:08
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