Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Phébus

XLDnaute Nouveau
Bonjour Philcanonice
voici une version avec NB.SI.ENS. il faudra au préalable ajouter une colonne "jour" à 3 caractères.
voir feuille Septembre(2)
 

Pièces jointes

  • copie-de-tableau-de-corvee.xlsx
    35 KB · Affichages: 5

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…