XL pour MAC Afficher la somme de valeurs uniquement dans des cellules adjacentes en lignes

FRANKY92

XLDnaute Nouveau
Bonjour les champions
J'ai un tableau dans lequel sur chaque ligne figure un nom de salarié,ses jours de congés,de RTT, de récupération, de maladie, ou autre.
Je veux savoir lesquels de ces salariés ont bénéficié d'un minimum de 10 jours de congés CONSÉCUTIFS, en excluant ceux qui peuvent être indiqués ça et là.
Peut-on obtenir de sous totaux des lignes ?
Si mon explication ne suffit pas, me demander un tableau type.
Et ça urge .....merci d'avance
 

zebanx

XLDnaute Accro
Bonjour JOB75, le forum

Merci @job75 pour ta remarque et d'avoir fait ces tests complémentaires.;)
J'ai modifié le code et cela a l'air de fonctionner.
Et en essayant quelques autres tests, s'agissant du code initial #8 et sauf erreur, n'y a-t-il pas une incrémentation supérieure +1 (lignes 6 et 21) dans une configuration spécifique ?(cf.fichier).

@+
zebanx
VB:
Function NbJC(Plage As Range, N%)
Dim critere$, pc%, i%, test As Byte, deb%, j%
critere = "#CP#REP#RTT#" 'à adapter
pc = Plage.Count
a = 0
For i = 1 To pc
    test = InStr(critere, "#" & UCase(Plage(i)) & "#")
   '--1 : Compte si N jours consécutifs pour les critères
    If test = 0 Then
       If a >= N Then NbJC = IIf(NbJC = 0, a, NbJC + a)
       a = 0
    End If
    If test > 0 Then
    a = a + 1
    If a >= N And i = pc Then NbJC = IIf(NbJC = 0, a, NbJC + a)
    End If
Next
If IsEmpty(NbJC) Then NbJC = "" 'masque les valeurs zéro
End Function
 

Pièces jointes

  • NBJC_UDF.xlsm
    26.5 KB · Affichages: 12
Dernière édition:

job75

XLDnaute Barbatruc
En effet il y avait une erreur dans ma fonction, au lieu de :
VB:
j = i - (i = pc) - deb
il faut :
VB:
j = i + (test > 0) * (i = pc) - deb
Merci, je vais corriger mon post #8.
 

Pièces jointes

  • NBJC_UDF(2).xlsm
    28.3 KB · Affichages: 3

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87