Microsoft 365 Programme de lecture d'un très gros livre (3 différents livres par semaine et un chapitre de chaque par jour)

anthoYS

XLDnaute Barbatruc
Bonjour


En C, on retrouve le livre qui porte un numéro pour être identifié..

en G le nombre de chapitres, en K, le dernier numéro de chapitre lu, ça doit figer la date en J, lorsque le livre est achevé selon le calendrier, en L5:Y72​
Le calendrier doit se mettre à zéro chaque début de semaine, le livre et chapitre en cours, en jaune (voir simulation sur cet onglet)… ça tombe bien nous sommes en fin de semaine ce dimanche 27 novembre... La lecture a lieu à 20 h chaque jour. Donc de jaune ça doit passer à vert fluo dans la plage semaine et jour en cours (voir le fichier joint)​
En fond vert fluo, les chapitre lus…​
Sachant qu'en C, les livres déjà lu, seront colorés aussi en fond vert fluo, ceux en cours, en jaune…

En K, une barre de progression par rapport au nombre total de chapitres qu'il y a dans ce livre en cours...
Sachant que la lecture se fera chaque jour (et donc chaque semaine) sans exception
...

Permettre un bouton RAZ (remise à zéro) dès lors que le tableau est complété... Mais via une boîte manuellement, en cliquant sur la boîte de dialogue pour supprimer et réorganiser la lecture...

Et permettre le choix du nouveau livre quand ceux avant n'ont pas été lus... (du 1 au 7) car tout le reste doit être couvert automatiquement... Sans permettre la relecture de ce qui a été déjà lu, soit est en vert en C...



Si vous avez des questions, des suggestions ou idées, n'hésitez surtout pas !


Merci beaucoup par avance !

Nota : désolé pour la trame du message, j'ai copier/coller depuis le classeur... Excel...​
 

Pièces jointes

  • ClasseurLecture(anthoYs).xlsx
    19.1 KB · Affichages: 14
Dernière édition:
Solution
Nouvelle version en pj
Les couleurs de mise en évidence sont paramétrées
VB:
Public Const COULEUR_LIVRE_SELECTIONNE = vbCyan
Public Const COULEUR_LIVRE_LU = vbGreen
Public Const COULEUR_LIVRE_COMMENCE = vbYellow
Public Const COULEUR_CHAP_LU = vbGreen
Public Const COULEUR_CHAP_A_LIRE = vbYellow

Bouton RAZ :
- vide les tableaux,
- réinitialise les couleurs
- réinitialise la protection des cellules
Bouton Nouvelle Liste :
- sélectionne 3 livres disponibles (donc les 3 premiers du tableaux
- adapte la protection des cellules (tableau liste des livres verrouillé - chapitre à lire des livres sélectionnés déverrouillés)
Bouton Actualiser Date Courante :
- Réactualise les dates en en-tête du tableau à partir de la Date...

anthoYS

XLDnaute Barbatruc
Bonjour @anthoYS,
je peux comprendre que vous soyez impatient d'obtenir des réponses mais le procédé

ne me parait pas très loyal :(
Si tout le monde fait up sur sa demande ce ne sera pas up ! up ! up ! hourra ! ;)
Dit autrement : Quand tout est urgent, rien n'est urgent !
Bonjour @crocrocro

Je comprends très bien, merci !!!

je souhaite juste avancer ce projet et je n'ai pas les compétences... Je vais me tourner vers les livres que j'ai acquis... alors...

Je vous demande pardon du coup !


Si je coince, je viendrais demander une aide ciblée sur ce projet...

je regrette que vous l'interprétiez ainsi... ce n'était pas le but. Et non ce n'est pas urgent...
 
Dernière édition:

crocrocro

XLDnaute Impliqué
Après un 1er examen de votre fichier,
quelques remarques sur votre 1er post (en rouge)
1732636536391.png
Autres questions :
la MFC en colonne C basée sur la cellule D2 est-elle correcte ?
Si on considère que les livres en cours (3) en D2, E2 et F2, si une MFC doit être mise en place, n'est pas plutôt sur les colonnes D, E et F au regard de chaque livre

et quelques suggestions :

Proposez un nouveau fichier en limitant le nombre de lignes à celles qui présentent un intérêt pour la compréhension
Eliminez dans la feuille les couleurs inutiles ou qui n'ont aucun sens (voir par exemple la colonne D) qui perturbent la compréhension
Proposez sur une autre feuille pour 1 livre donné un tableau (le m^me que celui de votre feuille) mais qui présente, pour la 1ère ligne avant la 1ère lecture, 2ème ligne, chapitre 1 ... jusqu'à atteindre la fin de la semaine en présentant les couleurs attendues
Ajoutez une colonne commentaires et décrivez la règle liée à chaque changement de situation.
 

anthoYS

XLDnaute Barbatruc
Après un 1er examen de votre fichier,
quelques remarques sur votre 1er post (en rouge)
Regarde la pièce jointe 1207778Autres questions :
la MFC en colonne C basée sur la cellule D2 est-elle correcte ?
Si on considère que les livres en cours (3) en D2, E2 et F2, si une MFC doit être mise en place, n'est pas plutôt sur les colonnes D, E et F au regard de chaque livre

et quelques suggestions :
Proposez un nouveau fichier en limitant le nombre de lignes à celles qui présentent un intérêt pour la compréhension
Eliminez dans la feuille les couleurs inutiles ou qui n'ont aucun sens (voir par exemple la colonne D) qui perturbent la compréhension
Proposez sur une autre feuille pour 1 livre donné un tableau (le m^me que celui de votre feuille) mais qui présente, pour la 1ère ligne avant la 1ère lecture, 2ème ligne, chapitre 1 ... jusqu'à atteindre la fin de la semaine en présentant les couleurs attendues
Ajoutez une colonne commentaires et décrivez la règle liée à chaque changement de situation.
Je regarde ça plus en détail demain (je tente).

Merci beaucoup !
 

anthoYS

XLDnaute Barbatruc
Bonjour à tous !


Fichier ci-joint modifié (v. 2).
Création d'une deuxième feuille... (Feuil2').
Les colonnes qui ne servaient pas sont masquées ou réduites. Aussi, les mise en forme aléatoire gênante également ...

Code VB ajoutés à la Feuil1...

VB:
Private Sub Workbook_Open()
    Dim CurrentDate As Date
    CurrentDate = Date
    If Weekday(CurrentDate, vbMonday) = 1 Then
        Sheets("Feuil1").Range("L5:Y72").ClearContents
    End If
    If Time >= TimeValue("20:00") Then
    ' Code pour mettre en vert les chapitres lus
End If
End Sub

VB:
Sub RemiseAZero()
    Dim Response As Integer
    Response = MsgBox("Êtes-vous sûr de vouloir réinitialiser ?", vbYesNo + vbQuestion, "RAZ")
    If Response = vbYes Then
        Sheets("Feuil1").Range("C5:C100").ClearContents
        Sheets("Feuil1").Range("K5:K100").ClearContents
        Sheets("Feuil1").Range("L5:Y72").ClearContents
    End If
End Sub

VB:
Sub OrganiserLivres()
    Dim Cell As Range
    For Each Cell In Sheets("Feuil1").Range("C5:C100")
        If Cell.Interior.Color = RGB(0, 255, 0) Then
            ' Ignorer les livres en vert
        Else
            ' Ajouter à la liste des livres en cours
        End If
    Next Cell
End Sub

Ces codes je ne sais pas s'ils sont vraiment fonctionnels... À ajuster ou modifier...

Je réponds aux questions @crocrocro :



Le détail des barres de progressions en G me plaît bien, mais c’est déjà mis en place…



Oui déclenchée automatiquement la remise à zéro du calendrier chaque semaine (voir Feuil2’ avec les explications) …



Oui la MEFC était en orange mais je l’ai mise en jaune comme voulu… Aussi j’ai rajouté les 2 autres livres en cours…



Un livre est considéré comme lu quand le nombre total de chapitres qu’il contient est atteint un jour donné (voir la plage qui s’actualise chaque semaine (L5:Y72). Où plus exactement quand les livres en C sont en vert. Le livre est lu et on passe au suivant… tant qu’il y en a... Si on arrive au bout du livre où là où un livre est en vert, livre 41 (C45) eh bien on repart au livre 1, jusqu’au livre 7 à compléter (C11)…



Le fait que la lecture se fasse tous les jours indique que la formule ne doit pas laisser de place à l’erreur… ou à un blanc, elle doit s’automatiser seule chaque semaine et à partir de là où je commencerais la lecture des 3 livres en cours… de cet ensemble de livres…



Dans mon exemple, du livre 1 au livre 7 (C5:C11) ne sont pas colorés en vert, donc non lus… et si jaune, livre en cours, on n'y touche pas non plus, ne doit pas concerner une nouvelle lecture… On s’arrête et recommence là où il y a des cases blanches (livre en fond blanc en C).


Autres questions :

La MFC en colonne C est basée sur la cellule D2 semble correcte. Rectifiée en jaune et rajout de E2 et F2… Car 3 livres sont en cours la semaine donc en jaune.

« Si on considère les livres en cours (3)… » Oui cela semble plus adapté. Mais je veux colorer le livre en cours en jaune en C (C5 :C72).



Merci par avance
 

Pièces jointes

  • ClasseurLecture(anthoYs)v. 2.xlsm
    34.1 KB · Affichages: 2
Dernière édition:

crocrocro

XLDnaute Impliqué
Bonjour le fil,
@anthoYS , ne le prenez pas mal, mais vous donnez des explications un peu partout, dans les posts, dans les feuilles, disséminés dans les commentaires,des cellules avec des flèches ... il faut vraiment être motivé pour s'attaquer au problème.
Je vous avais proposé
et quelques suggestions :
Proposez un nouveau fichier en limitant le nombre de lignes à celles qui présentent un intérêt pour la compréhension
Eliminez dans la feuille les couleurs inutiles ou qui n'ont aucun sens (voir par exemple la colonne D) qui perturbent la compréhension
Proposez sur une autre feuille pour 1 livre donné un tableau (le m^me que celui de votre feuille) mais qui présente, pour la 1ère ligne avant la 1ère lecture, 2ème ligne, chapitre 1 ... jusqu'à atteindre la fin de la semaine en présentant les couleurs attendues
Ajoutez une colonne commentaires et décrivez la règle liée à chaque changement de situation.
Je n'ai rien vu dans vos feuilles :(

Une proposition de réorganisation de vos feuilles,
je suis parti de la feuille 1.
Elle contient le tableau de lecture (tableau structuré) et c'est tout
1732816688648.png

J'ai vu dans votre feuille 1 des colonnes masquées.
Si les colonnes A et B sont inutiles, supprimez-les ou dites-nous à quoi elles servent,
j'ai démasqué" les colonnes paginations nombres de pages;
Utiliser une 2ème feuille où il y aura au moins dans un 1er temps les 3 livres en cours de lecture
1732816913532.png

Pas de référence du type =$C$5:$C$72 pour la liste déroulante des livres ou votre code pour effacer les tableaux.
Avec des tableaux (structurés ou non), si on augmente la taille du tableau, pas besoin de revenir sur le code ou les formules des listes de validation par exemple.
J'en reste là ... pour le moment.

[EDIT] du 29/11 à 11h
en répondant aux questions dans le post, il aurait été préférable, pour chaque réponse apportée, de rappeler la question posée. Imaginez un dialogue où vous avez d'abord toutes les paroles du 1er interlocuteur et ensuite celles du 2ème :mad:
J'ai reconstitué le puzzle :
1732872378633.png


Et j'ajoute quelques remarques et questions
Voilà ce que je comprends (et qu'il aurait été bon de décrire le plus finement possible) le mode de fonctionnement des séances de lecture :
Une liste de livres a été sélectionnée pour une certaine période. Liste figée ?
L'ordre des livres dans le tableau fige l'ordre des lectures, sachant que 3 livres et 3 seulement sont en cours de lecture. Vos exemples ne semblent pas cohérents, je me trompe peut-être.
Quand 1 livre a été lu en intégralité, c'est à dire quand on a indiqué pour un jour de lecture un n° de chapitre = au nombre de chapitres du livres (mais quand faire cette action ?)
on effectue quelques actions sur le tableau
- mise en évidence de couleur de fond (à détailler)
- remplissage de la colonne mois fin lecture (pour le livre)
- sélection du prochain livre non lu dans le tableau, en repartant de la 1ère ligne du tableau (à détailler)
En fin de semaine ( quand exactement ?, car si pour la nouvelle semaine, on ouvre le fichier le mardi seulement, on n'est plus en début de semaine !!!)
- on complète la colonne dernier chapitre lu à partir des infos de la semaine
- on vide le tableau (partie semaine) . Prévoir une confirmation.
- on rafraichit la mise en évidence des couleurs de fond (à détailler)
Tous les jours (?), en début de semaine (?)
- on complète le tableau (partie semaine) , date, chapitre à lire (à détailler en particulier ce qui est automatique, la date peu-être, le n° de chapitre, quels contrôles, en fonction du niveau de contrôle ce sera une usine à gaz ingérable)
- voir actions à faire quand un livre a été lu
- on rafraichit la mise en évidence des couleurs de fond (à détailler)

Automatiser complètement les mises à jour ne me parait pas une bonne solution :
- le fichier doit être ouvert pour une action à date
- on n'a pas la main sur ce qu'on fait
- certaines actions seront irréversibles
...
Il est préférable d'avoir autant de boutons que d'actions à automatiser avec éventuellement une proposition d'actions, par exemple à l'ouverture du fichier, en fonction de la date ...
Par exemple :
- Bouton Réinitialisation de la semaine
- Bouton Création de la Liste de Livres (voir plus bas)
- Bouton Prendre en compte les lectures de la semaine


Prévoir une phase d'initialisation
établir la liste des livres, nombre de chapitres
quand c'est validé, on ne touche plus à l'ordre des lignes, le nombre de chapitres ... acr l'action d'initialisation remettra tout à zéro (mise en évidence des couleurs, dernier chapitre lu ...


[FIN EDIT] du 29/11 à 11h
 
Dernière édition:

anthoYS

XLDnaute Barbatruc
Bonjour le fil,
@anthoYS , ne le prenez pas mal, mais vous donnez des explications un peu partout, dans les posts, dans les feuilles, disséminés dans les commentaires,des cellules avec des flèches ... il faut vraiment être motivé pour s'attaquer au problème.
Je vous avais proposé

Je n'ai rien vu dans vos feuilles :(

Une proposition de réorganisation de vos feuilles,
je suis parti de la feuille 1.
Elle contient le tableau de lecture (tableau structuré) et c'est tout
Regarde la pièce jointe 1207928
J'ai vu dans votre feuille 1 des colonnes masquées.
Si les colonnes A et B sont inutiles, supprimez-les ou dites-nous à quoi elles servent,
j'ai démasqué" les colonnes paginations nombres de pages;
Utiliser une 2ème feuille où il y aura au moins dans un 1er temps les 3 livres en cours de lecture
Regarde la pièce jointe 1207929
Pas de référence du type =$C$5:$C$72 pour la liste déroulante des livres ou votre code pour effacer les tableaux.
Avec des tableaux (structurés ou non), si on augmente la taille du tableau, pas besoin de revenir sur le code ou les formules des listes de validation par exemple.
J'en reste là ... pour le moment.

[EDIT] du 29/11 à 11h
en répondant aux questions dans le post, il aurait été préférable, pour chaque réponse apportée, de rappeler la question posée. Imaginez un dialogue où vous avez d'abord toutes les paroles du 1er interlocuteur et ensuite celles du 2ème :mad:
J'ai reconstitué le puzzle :
Regarde la pièce jointe 1207960

Et j'ajoute quelques remarques et questions
Voilà ce que je comprends (et qu'il aurait été bon de décrire le plus finement possible) le mode de fonctionnement des séances de lecture :
Une liste de livres a été sélectionnée pour une certaine période. Liste figée ?
L'ordre des livres dans le tableau fige l'ordre des lectures, sachant que 3 livres et 3 seulement sont en cours de lecture. Vos exemples ne semblent pas cohérents, je me trompe peut-être.
Quand 1 livre a été lu en intégralité, c'est à dire quand on a indiqué pour un jour de lecture un n° de chapitre = au nombre de chapitres du livres (mais quand faire cette action ?)
on effectue quelques actions sur le tableau
- mise en évidence de couleur de fond (à détailler)
- remplissage de la colonne mois fin lecture (pour le livre)
- sélection du prochain livre non lu dans le tableau, en repartant de la 1ère ligne du tableau (à détailler)
En fin de semaine ( quand exactement ?, car si pour la nouvelle semaine, on ouvre le fichier le mardi seulement, on n'est plus en début de semaine !!!)
- on complète la colonne dernier chapitre lu à partir des infos de la semaine
- on vide le tableau (partie semaine) . Prévoir une confirmation.
- on rafraichit la mise en évidence des couleurs de fond (à détailler)
Tous les jours (?), en début de semaine (?)
- on complète le tableau (partie semaine) , date, chapitre à lire (à détailler en particulier ce qui est automatique, la date peu-être, le n° de chapitre, quels contrôles, en fonction du niveau de contrôle ce sera une usine à gaz ingérable)
- voir actions à faire quand un livre a été lu
- on rafraichit la mise en évidence des couleurs de fond (à détailler)

Automatiser complètement les mises à jour ne me parait pas une bonne solution :
- le fichier doit être ouvert pour une action à date
- on n'a pas la main sur ce qu'on fait
- certaines actions seront irréversibles
...
Il est préférable d'avoir autant de boutons que d'actions à automatiser avec éventuellement une proposition d'actions, par exemple à l'ouverture du fichier, en fonction de la date ...
Par exemple :
- Bouton Réinitialisation de la semaine
- Bouton Création de la Liste de Livres (voir plus bas)
- Bouton Prendre en compte les lectures de la semaine


Prévoir une phase d'initialisation
établir la liste des livres, nombre de chapitres
quand c'est validé, on ne touche plus à l'ordre des lignes, le nombre de chapitres ... acr l'action d'initialisation remettra tout à zéro (mise en évidence des couleurs, dernier chapitre lu ...


[FIN EDIT] du 29/11 à 11h
Merci beaucoup !
 

crocrocro

XLDnaute Impliqué
Bonjour le fil,
@anthoYS , je reviens un peu sur ma proposition du post précédent :
pas de tableau structuré pour la semaine de lecture car les en-têtes sont dynamiques (voir ci-dessous), juste une plage nommée TableauLecture
Suppression des colonnes jours de lecture, la colonne chapitre lu comporte la date de lecture qui est rafraichie à l'ouverture du classeur (cf. macro Auto_open et ActualiserDateDuJour).
Cela permet de faciliter la lecture du tableau (la ligne supérieure est figée)
Voir la feuille Lecture en pj
les colorisations sont ici encore statiques, pas de MFC ou de macros
1733134133676.png

Le code
VB:
Option Explicit
Sub Auto_Open()
    ActualiserDateDuJour
End Sub
Sub ActualiserDateDuJour()
Dim Reponse
Dim Message As String
Dim DateEncours As Date
Dim i As Integer, Lig As Integer, Col As Integer
Dim ColJour As Integer
    Sheets("Lecture").Activate
    Message = "Voulez-vous actualiser les dates du Tableau avec la date du jour (" & Format(Date, "dddd dd mmmm yyyy") & ") ?"
    Reponse = MsgBox(Message, vbYesNo, "Date du jour")
    If Reponse = vbYes Then Range("DATE_COURANTE") = Date
    DateEncours = CDate(Range("DATE_COURANTE"))
    ColJour = Weekday(DateEncours, vbMonday)
    For i = 1 To 7
        Lig = Range("TableauLecture").Row - 1
        Col = Range("TableauLecture").Column + i - 1
        Cells(Lig, Col) = Format(DateAdd("d", i - ColJour, DateEncours), "ddd dd mmm") & vbLf & vbLf & "Chapître lu"
    Next i
    If Weekday(DateEncours, vbMonday) = 1 Then
        Message = "La date actuelle est un lundi (" & Format(DateEncours, "dddd dd mmmm yyyy") & ")." & vbLf _
                & "Voulez-vous réinitialiser le tableau de lecture ?"
        Reponse = MsgBox(Message, vbYesNo, "Date du jour")
        If Reponse = vbYes Then Range("TableauLecture").ClearContents
    End If

End Sub
 

Pièces jointes

  • ClasseurLecture(anthoYs)v. 2crocrocro.xlsm
    44.3 KB · Affichages: 4

crocrocro

XLDnaute Impliqué
[EDIT du 02/12 à 17h30]: Nouveau fichier en pj. Voir compléments en fin du post

En pj une nouvelle version avec colorisation par macro.
Il y a 2 plages nommées. Les macros ont été modifiées, une nouvelle.
Sur le bouton Actualiser les chapîtres, si la réponse à la question suivante est oui, on considère qu'il est plus de 20 heures.
1733142920054.png

Dans l'exemple (la situation en cours de la pj) le livre 14 sera alors considéré comme entièrement lu.


Le code
Private Sub BoutonActualiserDate_Click()
ActualiserTableauDateCourante
End Sub

Private Sub BoutonActualiserLecture_Click()
ActualiserLecture
End Sub


et
VB:
Option Explicit
Const COL_LIVRE = 1
Const COL_NB_CHAP = 2
Const COL_MOIS_FIN = 5
Const COL_CHAP_COUR = 6
Sub Auto_Open()
    Init
End Sub
Sub Init()
Dim Reponse
Dim Message As String
    Sheets("Lecture").Activate
    Message = "Voulez-vous actualiser les dates du Tableau avec la date du jour (" & Format(Date, "dddd dd mmmm yyyy") & ") ?"
    Reponse = MsgBox(Message, vbYesNo, "Date du jour")
    If Reponse = vbYes Then Range("DATE_COURANTE") = Date
    ActualiserTableauDateCourante
End Sub
Sub ActualiserTableauDateCourante()
Dim Reponse
Dim Message As String
Dim DateEncours As Date
Dim i As Integer, Lig As Integer, Col As Integer
Dim ColJour As Integer
    DateEncours = CDate(Range("DATE_COURANTE"))
    ColJour = Weekday(DateEncours, vbMonday)
    For i = 1 To 7
        Lig = Range("TableauLecture").Row - 1
        Col = Range("TableauSemaineLecture").Column + i - 1
        Cells(Lig, Col) = Format(DateAdd("d", i - ColJour, DateEncours), "ddd dd mmm") & vbLf & "Chap. lu"
    Next i
    If Weekday(DateEncours, vbMonday) = 1 Then
        Message = "La date actuelle est un lundi (" & Format(DateEncours, "dddd dd mmmm yyyy") & ")." & vbLf _
                & "Voulez-vous réinitialiser le tableau de lecture ?"
        Reponse = MsgBox(Message, vbYesNo, "Date du jour")
        If Reponse = vbYes Then Range("TableauSemaineLecture").ClearContents
    End If

End Sub
Sub ActualiserLecture()
Dim Reponse
Dim Message As String
Dim i As Integer, Lig As Integer, Col As Integer, NbLig As Integer, NbCol As Integer
Dim LectureFinie As Boolean
Dim DateEncours As Date, DateCol As Date
Dim ColJour As Integer
    DateEncours = CDate(Range("DATE_COURANTE"))
    Message = "Les Couleurs du Tableau vont être actualisées pour la date courante (" & Format(DateEncours, "dddd dd mmmm yyyy") & ") ." _
                & vbLf & "La Lecture du jour est-elle terminée ?"
    Reponse = MsgBox(Message, vbYesNoCancel, "Actualisation des Couleurs")
    Select Case Reponse
    Case vbCancel
        Exit Sub
    Case vbYes
        LectureFinie = True
    Case vbNo
        LectureFinie = False
    End Select

    ColJour = Weekday(DateEncours, vbMonday)
    NbLig = Range("TableauLecture").Rows.Count
    NbCol = Range("TableauLecture").Columns.Count
    For Lig = 1 To NbLig
        For Col = 1 To NbCol
            If Range("TableauSemaineLecture").Cells(Lig, Col) <> "" Then
                DateCol = DateAdd("d", Col - ColJour, DateEncours)
                If (DateCol < DateEncours) Or ((DateCol = DateEncours) And LectureFinie) Then
                    'Chapitre lu
                    Range("TableauSemaineLecture").Cells(Lig, Col).Interior.Color = vbGreen
                    Range("TableauLecture").Cells(Lig, COL_CHAP_COUR) = Range("TableauSemaineLecture").Cells(Lig, Col)
                    Range("TableauLecture").Cells(Lig, COL_LIVRE).Interior.Color = vbYellow
                    If Range("TableauLecture").Cells(Lig, COL_CHAP_COUR) = Range("TableauLecture").Cells(Lig, COL_NB_CHAP) Then
                        'Livre lu
                        Range("TableauLecture").Cells(Lig, COL_LIVRE).Interior.Color = vbGreen
                        Range("TableauLecture").Cells(Lig, COL_MOIS_FIN) = Range("DATE_COURANTE")
                    End If
                End If
            End If
        Next Col
    'End If
    Next Lig
End Sub

Nom mis en place l'intialisation pour la période de lecture avec de nouveaux livres, des contrôles supplémentaires (date courante non renseignée, chapitre non numérique ...
A noter, les constantes pour les colonnes dans le code, les formats des colonnes pour les dates (mois de fin de lecture, date courante)

[EDIT du 02/12 à 17h30]
Nouvelle version en pj avec un message MsgBox pour les macros appelées mais non codées.
Protection des cellules mise en place selon la valeur de la constante MODE_DEBUG
1733156702141.png
 

Pièces jointes

  • ClasseurLecture(anthoYs)v. 2crocrocro.xlsm
    54.8 KB · Affichages: 0
Dernière édition:

crocrocro

XLDnaute Impliqué
Nouvelle version en pj
Les couleurs de mise en évidence sont paramétrées
VB:
Public Const COULEUR_LIVRE_SELECTIONNE = vbCyan
Public Const COULEUR_LIVRE_LU = vbGreen
Public Const COULEUR_LIVRE_COMMENCE = vbYellow
Public Const COULEUR_CHAP_LU = vbGreen
Public Const COULEUR_CHAP_A_LIRE = vbYellow

Bouton RAZ :
- vide les tableaux,
- réinitialise les couleurs
- réinitialise la protection des cellules
Bouton Nouvelle Liste :
- sélectionne 3 livres disponibles (donc les 3 premiers du tableaux
- adapte la protection des cellules (tableau liste des livres verrouillé - chapitre à lire des livres sélectionnés déverrouillés)
Bouton Actualiser Date Courante :
- Réactualise les dates en en-tête du tableau à partir de la Date Courante au-dessus du bouton
- Si Lundi, propose de réinitialiser le tableau de la semaine
Bouton Actualiser Chapitres :
- Réactualise les couleurs de mise en évidence (livre lu, en cours, chapitre lu, à lire),
- met à jour le dernier chapitre lu,
- si livre terminé met à jour le Mois de lecture et sélectionne un nouveau livre
- adapte le verrouillage à l'état de lecture

Ce qui n'est pas fait : (je vous laisse faire ! Aide possible si nécessaire)
- les contrôles de saisie des n° de chapitres dans le tableau de la semaine (hors-mis contrôle entier compris entre 1 et 1000 par validation de données) . Pour un livre en cours, rien n'empêche de modifier la saisie des chapitres déjà lus ou non, de saisir un n° et un n° inférieur pour le jour d'après ... En résumé pour un livre de 10 chapitres, on peut avoir du lundi au dimanche : 1 2 3 4 2 12 10
- les contrôles de saisie de la liste des livres . Nombre de chapitres renseigné. Code Livre renseigné.
- le seul contrôle sur la date courante (au-dessus du bouton) > 01/01/2024. A l'ouverture du classeur il est proposé de la renseigner avec la date du jour (pas de forçage, ce qui permet de reprendre si on n'ouvre pas tous les jours).


1733174020405.png


[EDIT du 03/12] nouvelle version en pj avec des corrections et contrôles
 

Pièces jointes

  • ClasseurLecture(anthoYs)v. 2crocrocro3.xlsm
    51.9 KB · Affichages: 4
Dernière édition:

anthoYS

XLDnaute Barbatruc
Bonjour le fil,

@crocrocro merci beaucoup, c'est très bien !

Je ne comprends pas pourquoi ça se chevauche… les chapitres lus sur la semaine.

Ce devrait être 2 chapitres d'un livre du lundi au mardi, deux d'un autre du mercredi au jeudi, puis, trois d'un autre encore du vendredi au dimanche inclus.

Je vais regarder, car Windows a bloqué le fichier, j'ai débloqué, je vais regarder si ça fonctionne, je reviens ici.
 

Discussions similaires

Statistiques des forums

Discussions
314 898
Messages
2 114 009
Membres
112 073
dernier inscrit
dimakhadra