Formule Excel pour travail/repos

Bonjour,

J’essaie de trouver une formule pour mon travail concernant mes jours de travail et repos mais je n’arrive pas.

Par exemple : 6 jours travail et minimum 1 jour de repos suivis de 5 jours travailler pour 2 jours repos obligatoire consécutif.
Et pour ça, j’aimerais que ça change de couleur quand je travaille trop.
Je ne sais pas comment faire pour que ça fonctionne.

S’il y a une personne qui peut me donner un coup de main, se serait formidable.

En vous remerciant par avance

Formidable à la Stromae,
Un fichier d’exemple nous aidera bien

Bonjour @Bruno77, Will,

à propos de mettre une image : déjà, c’est pas terrible quand il faut recopier du texte
ou des nombres (et peu de contributeurs en prendront le temps) ; mais si en plus
il faut prendre le temps d’incorporer 2 × 31 = 62 cases à cocher ! :joy:

Sauf s’il y a une carte cadeau pour Noël :grinning:

1 « J'aime »

@Bruno77 : ne pas joindre un fichier exemple où tu auras seulement
mis l’image de ton énoncé (j’ai déjà vu ce genre de cas !).

il faut joindre un vrai fichier Excel : celui que tu utilises actuellement.

Essai.xlsx (36,1 Ko)

Voilà, je vous mets le fichier Excell en question.

Au lieu de tous ces carrés à cocher, on peut aussi choisir pou un font « Wingdings 2 » et puis on n’utilise que les charactères « R » (en majuscule) pour « coché » en « * » pour carré vierge
Puis une mfc « orange » pour 5 jours de travail consécutifs et une MFC « rose » pour 5+1+4 (ou voulez-vous aussi calculer min 2 jours de repos n’importe où durant ces 11 jours)
Essai (10).xlsx (38,3 Ko)

Bonjour @Bruno77, Cow18,

merci d’avoir transmis ton fichier Excel avec les 62 cases à cocher.

il y a un gros problème : c’est totalement ingérable à cause des noms des
cases à cocher ; c’est pour ça que j’ai renommé tous ces noms.

a) pour la 1ère case à cocher de B3 : nom = "Trav01" ; pour celle en dessous :
"Trav02" à "Trav31" ; "Trav" est mon abréviation de "Travail".

b) pour la 1ère case à cocher de C3 : nom = "Reps01" ; pour celle en dessous :
"Reps02" à "Reps31" ; "Reps" est mon abréviation de "Repos".


j’ai fait 3 versions différentes ; voici la 1ère version : Essai v1.xlsm (46,8 Ko)

coche ou décoche des cases en colonne B et en colonne C (celles que tu veux),
puis clique sur le bouton "MAJ" ➯ mise à jour de D4 et D6.

code VBA du module de Feuil1 :

Option Explicit

Private Sub MAJ_Click()
  Dim T As Byte, R As Byte, i As Byte: Application.ScreenUpdating = 0
  For i = 1 To 31
    ActiveSheet.Shapes("Trav" & Format(i, "00")).Select
    If Selection.Value = 1 Then T = T + 1
    ActiveSheet.Shapes("Reps" & Format(i, "00")).Select
    If Selection.Value = 1 Then R = R + 1
  Next i
  [D4] = T: [D6] = R: [D8].Select
End Sub

voici la 2ème version : Essai v2.xlsm (47,5 Ko)

c’est comme la 1ère version, où j’ai ajouté la possibilité d’utiliser
le raccourci clavier Ctrl m pour faire la mise à jour ; ainsi, c’est
plus simple et rapide que de devoir cliquer sur le bouton "MAJ".

j’ai modifié le code VBA comme indiqué ci-dessous.

code VBA de Module1 :

Option Explicit

Sub DoMAJ()
  Dim T As Byte, R As Byte, i As Byte: Application.ScreenUpdating = 0
  For i = 1 To 31
    ActiveSheet.Shapes("Trav" & Format(i, "00")).Select
    If Selection.Value = 1 Then T = T + 1
    ActiveSheet.Shapes("Reps" & Format(i, "00")).Select
    If Selection.Value = 1 Then R = R + 1
  Next i
  [D4] = T: [D6] = R: [D8].Select
End Sub

code VBA du module de Feuil1 :

Private Sub MAJ_Click()
  DoMAJ
End Sub

voici la 3ème version : Essai v3.xlsx (10,1 Ko)

j’ai supprimé toutes les cases à cocher ; à la place : saisis un "x" ou supprime-le ;
gros avantage : la mise à jour se fait automatiquement, sans devoir cliquer sur
un bouton, ni devoir faire Ctrl m.

formule en D4 : =NB.SI(B3:B33;"x")

formule en D6 : =NB.SI(C3:C33;"x")


perso, je préfère la version 3 ; et toi, quelle version tu préfères ?


regarde aussi la solution de @Cow18 ; et vois avec lui pour la suite,
car ça ne me dit rien de faire ceci :

moi aussi, j’ai trop travaillé ; je vais prendre un jour de repos. :stuck_out_tongue_winking_eye:

V3 est ma version dégraissée (sans le font modifié) et je la préfère aussi, tous ces cases à cocher, amaai, difficile à gérer …

1 « J'aime »

@Bruno77 et @Cow18

j’ai regardé la solution de @Cow18 ; elle est très bien, et
je l’ai un peu améliorée : Essai Cow18.xlsx (12,1 Ko)


le message de saisie est celui-ci :

image

mais dans le fichier initial, quand on saisis "S" on a ensuite :

image

c’est pour ça que j’ai ajouté une ligne au petit tableau structuré :

image

bien sûr, la "Source :" de la validation de données est maintenant : =$I$3:$I$5.

ce tableau était nommé "Tabel1" ; je l’ai renommé en "Table1".


en G3 : =NB.SI($C$3:$C$33;"R")+NB.SI($C$3:$C$33;"S") ➯ 18

en G4 : =NB.SI($D$3:$D$33;"R")+NB.SI($D$3:$D$33;"S") ➯ 2

pour :

c’est une image partielle ; dessous, il n’y a que des « ☐ ».


ainsi, pour une case à cocher vide, saisir "*" ; sinon, saisir au choix
"R" ou "S" ; c’est mieux de ne pas mélanger les deux types de
coches :ballot_box_with_check: ou image.

je l’ai fait sur l’image ci-dessus seulement pour montrer que
c’est possible de saisir les 2 coches différentes.

en G3 et en G4, le comptage est correct pour les 2 coches.

@Rhodo,
oui, j’avais commencé avec ce « S » mais comme utilisation de ce « S » me semblait un peu moins pratique, je l’avais supprimé, mais apparament pas dans la validation.
C’est à évaluer …

1 « J'aime »

@Cow18 @rhodo
Je vous remercie pour vos réponses et les deux me conviennent. Vous avez fais du très bon boulot…
@rhodo comment je pourrais modifier la formule pour que ça fasse environ 6-1-5-2 ? Parce que sur le tableau c’est 5-1-4-2 ? en vous remerciant par avance

1 « J'aime »

Bonjour @Bruno77,

j’ai fait ta demande à partir du fichier modifié de @Cow18, qui était dans
mon post précédent ; et que j’ai renommé en "Exo Bruno77".

j’ai fait avec plusieurs saisies, comme suit :

a) en C8 : R ; en D8 : *
b) en C9 : * ; en D9 : R
c) en C13 : R ; en C14 : R
d) en C15 : * ; en D15 : R
e) en C16 : * ; en D16 : R
f) en D20 : *

bien sûr, pour les étapes a) à f), tu peux choisir le caractère
dans la liste déroulante : « * » ou « R » (au lieu de le taper
mais je trouve que c’est plus simple et rapide de le taper)
.

g) sélectionne C17:C24 ; tape * (sans appuyer sur Entrée) ;
appuie sur Ctrl Entrée ➯ ça met * dans toute les cellules
de la plage C17:C24.

sélectionne par exemple G6 pour mieux voir à gauche
le tableau (sans la sélection de C17:C24).

tu as bien ton 6-1-5-2 ; d’où en G3 et G4 : 11 et 3.


à propos des couleurs : il y a un fond orange en D8
et un fond rose en D14 (qui sont mis par MFC).

mais moi, je ne me suis pas occupé des MFC ; alors
pour les règles de MFC, vois ça avec @Cow18.

MFC = Mise en Forme Conditionnelle

c’est sur le ruban d’Excel, onglet Accueil, rubrique Styles,
commande "Mise en forme conditionnelle" ; pour
plus d’infos sur les MFC, regarde l’Aide Excel.


si tu as fais correctement toutes les étapes indiquées,
tu devrais avoir comme dans ce fichier :

Exo Bruno77.xlsx (12,1 Ko)

Et moi, je préfèrais la version V3 de rhodo.
Bon, orange = problème avec >5 jours consécutif sans repos et rouge = problème >11 jours sur 14
Exo Bruno77.xlsx (12,0 Ko)

1 « J'aime »

@Bruno77, @Cow18,

à partir de ma version v3, j’ai fait cette version v4 : Essai v4.xlsx (10,2 Ko)

voici tout ce que j’ai fait pour arriver à cette nouvelle version :

a) pour B3:C33 : au lieu de "Calibri" : "Wingdings 2"
➯ les « x » sont devenus des petits ronds noirs n° 4 : ❹
laisser tel quel : ne pas les effacer (ils servent de repère).
b) sélectionner B3:B14 ; taper « R » puis Ctrl Entrée.
c) en B9 : appuyer sur la touche "Suppression".
d) saisir R en C9 ; C15 ; C16.
e) sélectionner D4 ; dans la formule qui est dans la barre
de formule : au lieu de « x », mettre « R » et valider ➯
formule : =NB.SI(B3:B33;"R")11.
f) sélectionner D6 ; dans la formule qui est dans la barre
de formule : au lieu de « x », mettre « R » et valider ➯
formule : =NB.SI(C3:C33;"R")3.
g) sélectionner D8.

pour d’autres modifications en colonnes B ou C : c’est soit
saisir « R » pour mettre une case à cocher :ballot_box_with_check: ; soit appuyer
sur la touche "Suppression" pour effacer une :ballot_box_with_check:.

pour saisir de nouvelles :ballot_box_with_check: : saisir « R ».

image

(image partielle, avec ton 6-1-5-2)

j’étais pour la version V3 à l’ancienne (sans wingdings 2) :innocent:

Merci à vous 2 pour votre travail. C’est du super bon boulot.
Maintenant, c’est à moi de choisir lequel me conviens le plus.
Et encore une fois, tous mes remerciements

1 « J'aime »

oui, j’avais bien compris cela (et merci d’avoir apprécié cette version) ; mais j’ai pensé que
@Bruno77 préférait quand même voir des :ballot_box_with_check: plutôt que des « x » ; alors j’ai fait la v4, qui
est une version mixte : avec des :ballot_box_with_check: mais sans validation de données (donc sans message
jaune de saisie et sans le petit tableau structuré)
; petit complément pour Bruno :

  • en saisissant « S » au lieu de « R », tu auras l’autre type de coche avec un « x »
  • en saisissant « * » tu auras ☐ (mais je trouve que c’est mieux de laisser vide)

je pense que tu as compris cette différence : dans le fichier initial de ton énoncé et dans
mes versions v1 et v2, il s’agit de vraies cases à cocher vu que tu peux cliquer dessus
pour cocher ou pour décocher ; par contre, quand on utilise la police "Wingdings 2"
pour mettre :ballot_box_with_check: ou l’autre coche avec un « x » ou ☐ : là, ce n’est pas de vraies cases
à cocher : c’est juste le dessin d’un caractère : on ne peut pas cliquer dessus pour
cocher ou pour décocher ; c’est évident pour Cow18 et pour moi, au point que
je n’ai pas pensé à te le dire avant.

bonne chance pour choisir la version qui te convient le mieux ; à tout hasard, garde
les autres versions sous le coude pour le cas où tu changerais d’avis ensuite.

@Bruno77, @Cow18

voici une nouvelle version, la v5 : Essai v5.xlsm (16,7 Ko)
(qui est maintenant ma version préférée)

c’est la v4 (.xlsx) convertie en .xlsm pour y ajouter du code VBA.


il semble qu’il n’y a aucune différence, mais c’est en apparence seulement.

  • sélectionne B18 ; tu veux avoir :ballot_box_with_check: (avec une coche v) ? saisis « c »
    (c’est facile à s’en rappeler, puisque « c » est l’initiale de coche) ;
    j’ai choisi c plutôt que v car sur le clavier, c est juste à droite de x,
    donc c’est plus facile et rapide de passer de l’un à l’autre.

  • sélectionne B19 ; tu veux avoir image (avec une coche x) ? saisis « x ».

  • tu veux effacer une coche ou l’autre ? va dessus,
    et appuie sur la touche Suppression.


ce que je viens de décrire est valable pour toutes les cellules des colonnes B et C,
et pour toute ligne sauf les 2 premières ; mais attention, il y a cette petite différence :
quand on tape le caractère c ou x dans une cellule vide, on voit c ou x ; mais si,
dans une cellule qui contient déjà une des 2 coches, on tape x on verra ❹ ; et si
on tape c on verra ce caractère bizarre (un drôle d’ornement ou de fioriture) :
image
y’a aucun moyen pour éviter ça, mais de toute façon, pas d’inquiétude :
dès qu’on valide ❹ ou l’ornement bizarre, on a la coche voulue : :ballot_box_with_check: ou
image.

l’ornement bizarre, ça serait pas un genre de feuille de lys dont la feuille
est à gauche et la tige à droite ?


attention : y’a aussi ce petit inconvénient : la transformation d’un caractère
c ou x en sa coche correspondante marche seulement pour une seule
cellule à la fois ➯ c’est devenu impossible de mettre plusieurs coches
d’un coup dans une sélection de plusieurs cellules (via Ctrl Entrée) :
après validation, y’aura plusieurs c ou plusieurs x.

mais d’après moi, ça ne devrait pas gêner, car en pratique, on mettra les
coches une par une ; l’effacement de plusieurs coches à la fois reste
possible.


en D4 : =NB.SI(B3:B33;"R")+NB.SI(B3:B33;"S")

en D6 : =NB.SI(C3:C33;"R")+NB.SI(C3:C33;"S")


code VBA du module de Feuil1 :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    Dim k As String * 1, v$, c%
    c = .Column: If c = 1 Or c > 3 Then Exit Sub
    If .Row < 3 Then Exit Sub
    v = .Value
  End With
  With Application
    .ScreenUpdating = 0: .EnableEvents = 0: k = "@"
    With Target
      If v = "c" Then k = "R" Else If v = "x" Then k = "S"
      If k = "@" Then .Font.Name = "Calibri" _
        Else .Font.Name = "Wingdings 2": .Value = k
    End With
    .EnableEvents = -1
  End With
End Sub

edit : j’avais oublié de mettre à jour les 2 formules de D4 et D6, car dans la v4,
il y a une seule coche possible :
:ballot_box_with_check: ; j’ai changé le fichier ; le bon est daté du
23/12/2024 à 18:15 (17 Ko).

je ne prévois pas d’autre version : pour moi c’est la dernière ; à moins que
vous ayez des suggestions ?

pour plusieurs cellules en même temps
Essai v5.xlsm (16,7 Ko)

1 « J'aime »