XL 2010 Tableau de corvée.

philcanonice

XLDnaute Nouveau
Bonjour,

Existe-t-il un moyen de transférer une donnée dans une cellule pour la comptabiliser en semaine, vendredi, week-end.
 

Pièces jointes

  • copie-de-tableau-de-corvee.xlsx
    22.7 KB · Affichages: 11

JHA

XLDnaute Barbatruc
Bonjour à tous,

Pour la ventilation des noms, je ne sais pas mais pour le comptage, un essai avec sommeprod

En "G10"

VB:
=SOMMEPROD((JOURSEM($B$9:$B$38;2)<5)*($C$9:$C$38=$F10))

JHA
 

Pièces jointes

  • copie-de-tableau-de-corvee.xlsx
    23.2 KB · Affichages: 2

chris

XLDnaute Barbatruc
Bonjour à tous
Une autre approche (PowerQuery) :
  • les données du mois sont dans un tableau structuré dont le nom est _Septembre, _Octobre etc
  • on choisit le mois à synthétiser dans un onglet spécifique et on actualise
 

Pièces jointes

  • tableau-de-corvee_PQ.xlsx
    42.4 KB · Affichages: 6

chris

XLDnaute Barbatruc
Bonjour
il faudra au préalable ajouter une colonne "jour" à 3 caractères
Outre la saisie d'une autre donnée, c'est une très mauvaise idée de remplacer la date d'un planning par un nombre sans signification.

Garder la date et l'afficher en format jj serait plus judicieux...

La fonction SOMMEPROD, proposé par JHA, plus souple que NB.SI, permettait de gérer le jour sans ajouter de colonne...
 

job75

XLDnaute Barbatruc
Bonjour philcanonice, JHA, chris, Phébus,

Voyez le fichier joint et cette macro qui réalise des tirages aléatoires pour minimiser les écarts :
VB:
Sub Tirages()
Dim nom, nnom%, h%, corvee As Range, suppleant As Range
Dim ecart As Range, i%, r1%, r2%
nom = [C2:O2] 'à adapter
nnom = UBound(nom, 2)
h = Day(Application.EoMonth([B9], 0))
Set corvee = [C9].Resize(h)
Set suppleant = [D9].Resize(h)
Set ecart = [J43]
Application.ScreenUpdating = False
Randomize
corvee.ClearContents 'RAZ
suppleant.ClearContents 'RAZ
For i = 1 To h
    Do
        r1 = 1 + Int(Rnd * nnom)
        corvee(i) = nom(1, r1)
    Loop While ecart > 2 Or corvee(i) = corvee(i - 1) Or corvee(i) = suppleant(i - 1)
    Do
        r2 = 1 + Int(Rnd * nnom)
        suppleant(i) = nom(1, r2)
    Loop While r1 = r2 Or ecart > 2 Or suppleant(i) = corvee(i - 1)
Next i
End Sub
Edit : il n'est pas impossible que dans certains cas une boucle Do/Loop boucle sans fin.
On en sortira alors en appuyant sur la touche <échap>.

A+
 

Pièces jointes

  • tableau-de-corvee.xlsm
    33.8 KB · Affichages: 0
Dernière édition:

philcanonice

XLDnaute Nouveau
Bonjour philcanonice, JHA, chris, Phébus,
Bonjour job75, JHA, chris, Phébus,

Vous m’avez impressionné par votre rapidité (pas comme moi pour vous répondre, mais j’ai une excuse j’étais au fond du gouffre).
@JHA, merci c’est exactement ce que je recherchais. Cela va me faire gagner énorme de temps.
@ Chris, merci pour quant à l’approche.
@ job75, c’est vraiment très élégant comme solution et impressionnant d’efficacité. Hélas je n’ai pas la possibilité d’utiliser des macros dans mon environnement de travail. Mais j’aime beaucoup ce que vous avez trouvé comme solution.
Merci à tous, je vais essayer d’implanter une gestion du personnel plus fine et je reviens vers vous en cas de difficultés.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
313 929
Messages
2 103 635
Membres
108 741
dernier inscrit
adel_benammar