Microsoft 365 COMPTER LE NOMBRE DE JOURS/GESTIONNAIRE

wader

XLDnaute Nouveau
Bonjour à tous

et merci d'avance pour votre aide!

voila j'ai un tableau (ci joint), je souhaite calculer le nombre de jours travaillés par collaborateur

merci encore pour votre aide!

bien cordialement
 

Fichiers joints

ShuarS

XLDnaute Junior
Supporter XLD
Bonjour wader,
Tu souhaites calculer le nombre de journées travaillé par rapport à quoi exactement ?
Je ne vois rien dans ton fichier qui permette d'arriver au résultat.

Shu
 

Dugenou

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,
J'ai compris qu'on compte les dates différentes par nom.
Une proposition en pj avec une colonne intermédiaire qui peut être masquée.
Cordialement
 

Fichiers joints

wader

XLDnaute Nouveau
bonjour a tous

merci encore pour votre réactivité

@Dugenou super ca m'a l'air parfait!

oui le but est de compter le nbre de jours travaillés par gestionnaire (colonne F) grace à la date_statut (colonne C)

merci encore a vous !!
 

wader

XLDnaute Nouveau
dessolé j'ai réussi sur un échantillon mais sur 65000 lignes ca bug

vous n'auriez pas une formule moins lourde ?

MERCI ENCORE !
 

job75

XLDnaute Barbatruc
Bonjour wader, fanfan38, Dugenou,

Sans colonne intermédiaire, formule en G2 :
VB:
=SOMMEPROD((F$2:F$10=F2)/NB.SI.ENS(C$2:C$10;C$2:C$10;F$2:F$10;F$2:F$10))
Mais ça ne change rien, sur 65000 lignes il faut utiliser du VBA.

A+
 

Fichiers joints

job75

XLDnaute Barbatruc
Avant d'utiliser le VBA sur 65000 lignes essayez cette formule en G2 du fichier (2) :
Code:
=SI(LIGNE()=EQUIV(F2;F:F;0);SOMMEPROD((F$2:F$10=F2)/NB.SI.ENS(C$2:C$10;C$2:C$10;F$2:F$10;F$2:F$10));RECHERCHEV(F2;F:G;2;0))
Elle évite de recalculer le SOMMEPROD (qui est lourd) sur toutes les lignes, enfin je pense.

A+
 

Fichiers joints

wader

XLDnaute Nouveau
merci, j'ai déjà fini le fichier mais je garde cette formule si je dois la réutiliser ! merci encore pour votre aide!
 

job75

XLDnaute Barbatruc
Pour la solution VBA voyez le fichier joint et cette macro :
VB:
Sub MAJ()
Dim coldat%, colnom%, colrest, tablo, d As Object, dd As Object, i&, x$, y$, resu()
coldat = 3 'à adapter
colnom = 6 'à adapter
colrest = 7 'à adapter
With [A1].CurrentRegion.Resize(, colrest)
    tablo = .Value2 'matrice, plus rapide
    Set d = CreateObject("Scripting.Dictionary")
    Set dd = CreateObject("Scripting.Dictionary")
    For i = 2 To UBound(tablo)
        x = tablo(i, colnom): y = tablo(i, coldat) & x
        If Not d.exists(x) Then d(x) = 0
        If Not dd.exists(y) Then
            d(x) = d(x) + 1 'comptage
            dd(y) = ""
        End If
    Next
    '---restitution---
    ReDim resu(1 To UBound(tablo), 1 To 1)
    resu(1, 1) = tablo(1, colrest) 'en-tête
    For i = 2 To UBound(tablo)
        resu(i, 1) = d(tablo(i, colnom))
    Next
    .Columns(colrest) = resu
End With
End Sub
Utilisant des tableaux VBA et 2 Dictionary elle est très rapide, chez moi 0,16 seconde sur 27 000 lignes.

A+
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas