XL 2016 Planning mensuel garde

Arnaud.B

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je suis nouveau sur le forum et nulle part en développement sur excel...
C'est pourquoi je sollicite votre expertise.

Je m'explique, je dois réaliser des rôles de garde pour plusieurs personnes, entre 9 et 12 selon le cas et le mois...

Le tableau devrait se présenter sous forme d'un calendrier mensuel où chaque jour une personne est de garde. L'idée c'est que chaque personne ait de manière plus ou moins équilibrée le même nombre de lundi de mardi de mercredi et ainsi de suite. A chaque croix dans un jour(cellule), un petit tableau pourrait compter le nombre lundi mardi etc pour chaque personne. Ce qui me permettrait d'avoir un visu immédiat de l'équilibre des jours par personne. Je joints une image d'un tableau que je possède pour autre chose mais la présentation idéale serait celle là. Dans le tableau présenté ici la ligne 6 met en surbrillance la colonne pour laquelle on encode 1 et la laisse blanche si on encode 0 pour délimiter les WE... Je ne sais pas si ma demande est très claire excusez-moi d'emblée et n'hésitez pas à me demander de préciser si nécessaire... D'avance merci pour les réponses et si ce n'est pas possible ben au moins j'aurai essayé lol:)
 

Pièces jointes

  • Capture d’écran 2017-10-10 à 20.04.38.png
    Capture d’écran 2017-10-10 à 20.04.38.png
    86.5 KB · Affichages: 177

fanfan38

XLDnaute Barbatruc
Bonjour
Ci joint la réponse à ta question (enfin je pense)
Attention si tu crée d'autres feuilles il faut copier la macro sur la nouvelle feuille...
Ce n'est que quand il y a un changement sur la feuille que celle ci est compté...
les cases déjà existante ne sont pas comptés
si tu enlève une croix c'est à toi de la déduire sur la partie droite...

A+ François
 

Pièces jointes

  • planninggarde.xlsm
    24.4 KB · Affichages: 90

thebenoit59

XLDnaute Accro
Bonjour Fanfan.

Depuis le fichier de Fanfan, je te propose une solution par formule :
En [AH4] :
Code:
=SOMMEPROD((JOURSEM($B$3:$AC$3;2)=(EQUIV(AH$3;$AH$3:$AN$3;0)))*($B4:$AC4<>""))

Modification de ton code, pour déduire quand nous supprimons une garde.
VB:
Option Explicit
Private strValue$

Private Sub worksheet_selectionchange(ByVal target As Range)
    strValue = target.Value
End Sub

Private Sub Worksheet_Change(ByVal target As Range)
 Dim vardate As Byte
 On Error GoTo Erreur
 Select Case target.Value
    Case "x"
        vardate = Weekday(Cells(3, target.Column).Value, vbMonday)
        Cells(target.Row, 33 + vardate) = Cells(target.Row, 33 + vardate) + 1
    Case Else
        vardate = Weekday(Cells(3, target.Column).Value, vbMonday)
        If Cells(target.Row, 33 + vardate).Value > 0 And strValue = "x" Then Cells(target.Row, 33 + vardate) = Cells(target.Row, 33 + vardate) - 1
End Select
Erreur:
End Sub
 

fanfan38

XLDnaute Barbatruc
Rebonjour
Bonjour thebenoit59
Je maîtrise mieux le vba que les formules...(vieille école)...
Ci joint ton fichier avec la formule de thebenoit59
Avantage pas de macro à recopier et si enlèvement d'une garde mise à jour du tableau...

A+ François
 

Pièces jointes

  • planngarde.xlsx
    13.5 KB · Affichages: 81

Arnaud.B

XLDnaute Nouveau
Voici la présentation à peu de choses près mais qui calculerait automatiquement les jours cochés dans le tableau sur le côté.... j'espère être assez détaillé pour que vous compreniez ma demande.... Merci
Rebonjour
Bonjour thebenoit59
Je maîtrise mieux le vba que les formules...(vieille école)...
Ci joint ton fichier avec la formule de thebenoit59
Avantage pas de macro à recopier et si enlèvement d'une garde mise à jour du tableau...

A+ François


Wahou quelle efficacité, même si je l'espérais, je ne m'attendais pas à être aidé aussi et bien et si vite... J'admire votre savoir faire à tous.... Sincèrement merci... si seulement je pouvais en faire autant... mais j'ai encore une question. la dernière version répond exactement à ma demande... pourriez vous m'expliquer comment dupliquer la chose pour la transposer à d'autre mois avec plus de jours (31) et comment différencier les Week end de jours de semaine... je suis vraiment nulle part avec excel, je me contente de l'utiliser mais quel outil formidable quant on le gère....
 

Pièces jointes

  • EXEMPLE FORUM.xlsx
    81.4 KB · Affichages: 65

fanfan38

XLDnaute Barbatruc
Bonsoir
Pour les we une mise en forme conditionnelle =JOURSEM(B2;2)>5
pour le reste un copier/coller de la formule de thebenoit59 en sachant que:
=SOMMEPROD((JOURSEM($B$2:$AF$2;2)=(EQUIV($AI$3;$AI$3:$AO$3;0)))*($B4:$AF4<>""))
SOMMEPROD additionne les cellules qui correspondent aux critères suivant...
JOURSEM($B$2:$AF$2;2) dans la plage b2 à af2 le jour de la semaine qui correspond (le dernier 2 étant pour compter du lundi au dimanche)
EQUIV($AI$3;$AI$3:$AO$3;0)) equivalence avec la cellule ai3 dans la plage ai3:ao3, le 0 etant equivalence exact
($B4:$AF4<>"")) b4:af4 non vide (si ligne 5: b5:af5) c'est pour ça qu'on ne mes pas les signes $$b restera colonne b 4 sans le signe $ se modifiera lors du copie/colle... (voir au dessus $ao$3 retera colonne ao et ligne 3 quelque soit l'endroit où tu colleras ta formule)...
pour les mois de moins de 31 jours ne supprime pas de colonne mais efface les. tu auras moins de problème... lol ...
A+ François
 

Pièces jointes

  • EXEMPLE FORUM.xlsx
    12.8 KB · Affichages: 58

Arnaud.B

XLDnaute Nouveau
bonjour, pour les WE vu qu'ils sont grisés je voulais savoir comment les décaler d'un mois à l'autre... sinon oui la solution est en effet idéale merci pour votre précieuse aide... Je dois encore jouer avec le tableau pour le transposer aux mois suivants et trouver pq lorsque je coche le samedi 12 ça met un 1 dans la colonne jeudi... mais sinon c'est top... Ca me donne envie de suivre une formation Excel (pour les nuls lol)...
 

thebenoit59

XLDnaute Accro
Bonsoir Arnaud.
Ca met un 1 sous le jeudi car le 12 tombe un jeudi, il y a une erreur dans le calendrier on passe de 13 à 12 puis 15 ;)
Pour ce qui est des mois, regarde dans les calendriers perpétuels et les mises en formes conditionnelles (si joursem=6 ou joursem=7 alors grisé, par exemple)
 

fanfan38

XLDnaute Barbatruc
C'est seulement une erreur le 12 est le jeudi et le samedi c'est le 14... Pour les we ne t’inquiète pas c'est automatique (la preuve samedi 12 n'est pas grisé samedi 14 l'est..., c'est comme ça que j'ai vu l'erreur...)
J'ai fait quelque modif pour toi pouvoir créer les mois que tu souhaites...
la cellule A1 c'est l'année
la cellule A2 c'est le mois en chiffre... tout le reste est automatique (tu n'as rien à faire...)
Pour créer les autres mois je te conseille de cliquer avec le bouton droit de la souris sur le nom de la feuille (ici Feuil1)
de choisir déplacer ou copier
choisir en dernier
cocher "créer une copie"
cliquer sur ok
renommer la feuille du nom du mois...
salut thebenoit59...
A+ François
 

Pièces jointes

  • EXEMPLE FORUM.xlsx
    13.3 KB · Affichages: 82

Discussions similaires