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
 

Pièces jointes

  • Nombre de jours travailles.xlsx
    12.8 KB · Affichages: 9

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+
 

Pièces jointes

  • Nombre de jours travailles(1).xlsx
    12.1 KB · Affichages: 3

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+
 

Pièces jointes

  • Nombre de jours travailles(2).xlsx
    12.2 KB · Affichages: 3

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+
 

Pièces jointes

  • VBA Nombre de jours travailles(1).xlsm
    819.5 KB · Affichages: 4

Discussions similaires

Réponses
14
Affichages
639

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo