Microsoft 365 Compter des noms dans un planning

ricouvbx

XLDnaute Junior
Bonjour le forum
Je dois compter le nombre de fois que sont associé des agents sur le planning d'une année.
Je joins le tableau pour plus de clarté.
J'ai essayé la fonction NBSI mais ca ne fonctionne pas.
Pourriez vous me guider, je pense que ca doit être d'autres fonctions mais je ne sais pas les utiliser.
Je vous remercie d'avance pour votre aide
cordialement
Eric
 

Pièces jointes

  • Classeur1.xlsx
    13.7 KB · Affichages: 10

Cousinhub

XLDnaute Barbatruc
Bonsoir,
Avec une fonction VBA...
Attention, dans ta cellule D50, il y a une faute dans le nom...
Je suis parti du principe que les premiers noms de chaque semaine provenaient de la ligne 2
Et que les associés étaient de A3 à A20
Regarde si ça te va...
Le code :
VB:
Function Nb_Duos(Cel1 As Range, Cel2 As Range) As Byte
Application.Volatile
Dim I As Byte, J As Byte, X As Byte
Dim Les_Duos As Object
Dim Tbl_Lig, Tbl_Col, Tbl
Dim Plg As Range, Cel As Range
Tbl_Lig = Application.Transpose(Range("B2:G2")): Tbl_Col = Range("A3:A20")
Set Les_Duos = CreateObject("Scripting.Dictionary")
For I = LBound(Tbl_Lig) To UBound(Tbl_Lig)
    For J = LBound(Tbl_Col) To UBound(Tbl_Col)
        Les_Duos(Tbl_Lig(I, 1) & ";" & Tbl_Col(J, 1)) = 0
    Next J
Next I
For X = 25 To 65 Step 5
    Set Plg = Cells(X, 1).Resize(3, 6)
    Tbl = Application.Transpose(Plg)
    For I = 1 To 6
        For J = 2 To 3
            Les_Duos(Tbl(I, 1) & ";" & Tbl(I, J)) = Les_Duos(Tbl(I, 1) & ";" & Tbl(I, J)) + 1
        Next J
    Next I
Next X
Nb_Duos = Les_Duos(Cel1 & ";" & Cel2)
End Function

Bonne soirée
 

Pièces jointes

  • décompte duos.xlsm
    23.7 KB · Affichages: 6

ricouvbx

XLDnaute Junior
Bonsoir,
Avec une fonction VBA...
Attention, dans ta cellule D50, il y a une faute dans le nom...
Je suis parti du principe que les premiers noms de chaque semaine provenaient de la ligne 2
Et que les associés étaient de A3 à A20
Regarde si ça te va...
Le code :
VB:
Function Nb_Duos(Cel1 As Range, Cel2 As Range) As Byte
Application.Volatile
Dim I As Byte, J As Byte, X As Byte
Dim Les_Duos As Object
Dim Tbl_Lig, Tbl_Col, Tbl
Dim Plg As Range, Cel As Range
Tbl_Lig = Application.Transpose(Range("B2:G2")): Tbl_Col = Range("A3:A20")
Set Les_Duos = CreateObject("Scripting.Dictionary")
For I = LBound(Tbl_Lig) To UBound(Tbl_Lig)
    For J = LBound(Tbl_Col) To UBound(Tbl_Col)
        Les_Duos(Tbl_Lig(I, 1) & ";" & Tbl_Col(J, 1)) = 0
    Next J
Next I
For X = 25 To 65 Step 5
    Set Plg = Cells(X, 1).Resize(3, 6)
    Tbl = Application.Transpose(Plg)
    For I = 1 To 6
        For J = 2 To 3
            Les_Duos(Tbl(I, 1) & ";" & Tbl(I, J)) = Les_Duos(Tbl(I, 1) & ";" & Tbl(I, J)) + 1
        Next J
    Next I
Next X
Nb_Duos = Les_Duos(Cel1 & ";" & Cel2)
End Function

Bonne soirée
Bonsoir
Je vous remercie pour la fonction VBA qui calcule les groupes de personne.
Néanmoins, y a t il une autre solution en utilisant des fonctions imbriqués ?
Je vous pose cette question car je ne maitrise pas le langage VBA
Cordialement
Eric


de
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ricouvbx, Bhbh,
Peut être alors avec des colonnes masquées.
Moins "esthétique" que la solution de Bhbh ... mais sans VBA.

Les colonnes masquées contiennent la concaténation des équipes du genre :
VB:
=A25&A26&A27
Ce qui donne pour A25:A27 DULINBAUDMEZRIG
Puis on compte dans le tableau en faisant :
Code:
=NB.SI($I$24:$P$66;"*"&B$2&$A3&"*")+NB.SI($I$24:$P$66;"*"&$A3&B$2&"*")
La somme est nécessaire pour trouver AB ou BA dans une équipe.

Une PJ à vérifier, cela semble coller.
 

Pièces jointes

  • Classeur1 (5).xlsx
    15.5 KB · Affichages: 8

Statistiques des forums

Discussions
312 211
Messages
2 086 289
Membres
103 170
dernier inscrit
HASSEN@45