1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2016 Planning mensuel garde

Discussion dans 'Forum Excel' démarrée par Arnaud.B, 10 Octobre 2017.

  1. Arnaud.B

    Arnaud.B XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2017
    Messages :
    5
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Travail/Loisirs :
    Fonctionnaire
    Habite à:
    Belgique
    Utilise:
    Excel 2011 (MAC)
    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:

  2. thebenoit59

    thebenoit59 XLDnaute Accro

    Inscrit depuis le :
    18 Juillet 2013
    Messages :
    1140
    "J'aime" reçus :
    90
    Bonjour Arnaud.

    Je ne pense pas que tu trouveras quelqu'un qui écrira le fichier de A à Z.
    Tu devrais réaliser la base de ton fichier, et fournir un exemple de tour de garde que tu souhaites.
     
  3. fanfan38

    fanfan38 XLDnaute Accro

    Inscrit depuis le :
    20 Décembre 2006
    Messages :
    1108
    "J'aime" reçus :
    11
    Habite à:
    MORESTEL
    Utilise:
    Excel 2007 (PC)
    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:

  4. thebenoit59

    thebenoit59 XLDnaute Accro

    Inscrit depuis le :
    18 Juillet 2013
    Messages :
    1140
    "J'aime" reçus :
    90
    Bonjour Fanfan.

    Depuis le fichier de Fanfan, je te propose une solution par formule :
    En [AH4] :
    Code (Text):
    =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.
    Code (Visual Basic):

    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
     
  5. fanfan38

    fanfan38 XLDnaute Accro

    Inscrit depuis le :
    20 Décembre 2006
    Messages :
    1108
    "J'aime" reçus :
    11
    Habite à:
    MORESTEL
    Utilise:
    Excel 2007 (PC)
    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:

    Arnaud.B aime votre message.
  6. Arnaud.B

    Arnaud.B XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2017
    Messages :
    5
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Travail/Loisirs :
    Fonctionnaire
    Habite à:
    Belgique
    Utilise:
    Excel 2011 (MAC)
    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

    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:

  7. fanfan38

    fanfan38 XLDnaute Accro

    Inscrit depuis le :
    20 Décembre 2006
    Messages :
    1108
    "J'aime" reçus :
    11
    Habite à:
    MORESTEL
    Utilise:
    Excel 2007 (PC)
    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:

    thebenoit59, zebanx et Arnaud.B aiment votre message.
  8. Arnaud.B

    Arnaud.B XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2017
    Messages :
    5
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Travail/Loisirs :
    Fonctionnaire
    Habite à:
    Belgique
    Utilise:
    Excel 2011 (MAC)
    pas d'autres mots que Merci pour tout. Je vais me dépatouiller à présent. Je m'étonnerais de pouvoir vous aider un jour mais si j'en ai le moyen ce sera avec grand plaisir.
     
  9. thebenoit59

    thebenoit59 XLDnaute Accro

    Inscrit depuis le :
    18 Juillet 2013
    Messages :
    1140
    "J'aime" reçus :
    90
    Bonjour Arnaud.
    Bonjour François.

    J'aurai sans aucun doute moins bien expliqué que François.
    Qu'entends-tu par différencier les jours et les week-end ?
    La solution de François te satisfait-elle ?
     
  10. Arnaud.B

    Arnaud.B XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2017
    Messages :
    5
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Travail/Loisirs :
    Fonctionnaire
    Habite à:
    Belgique
    Utilise:
    Excel 2011 (MAC)
    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)...
     
  11. thebenoit59

    thebenoit59 XLDnaute Accro

    Inscrit depuis le :
    18 Juillet 2013
    Messages :
    1140
    "J'aime" reçus :
    90
    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)
     
  12. fanfan38

    fanfan38 XLDnaute Accro

    Inscrit depuis le :
    20 Décembre 2006
    Messages :
    1108
    "J'aime" reçus :
    11
    Habite à:
    MORESTEL
    Utilise:
    Excel 2007 (PC)
    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:

  13. Arnaud.B

    Arnaud.B XLDnaute Nouveau

    Inscrit depuis le :
    10 Octobre 2017
    Messages :
    5
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Travail/Loisirs :
    Fonctionnaire
    Habite à:
    Belgique
    Utilise:
    Excel 2011 (MAC)
    Je ne sais vraiment comment je pourrais vous renvoyer la pareille mais ce serait avec grand plaisir en tout cas...
     

Partager cette page