[RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pérenne

Gen Rose

XLDnaute Impliqué
Supporter XLD
Bonjour :eek:

J'ai déjà notifié David XLD sur le sujet mais dans l'idée que plusieurs têtes valent mieux qu'une, j'ai pensé à vous tous.

En p.j. le calendrier en question et quelques info sur celui-ci:
Licence:Libre de droits, mentions de l'auteur appréciée
Envoyé le: 01 Jan 2013
Envoyé par: David AUBERT (XLDadmin)
Date: 31 Dec 2012
Auteur: Calendrier2013.net
Taille: 125.50 Kb
Type: xls
Site Web:Click to visit site

J'ai pensé que nous pourrions passer en VBA pour adapter ce calendrier en p.j. et le rendre pérenne.
Avec une feuille 'Choix Annee'; nous pourrions choisir l'année qui ajuste les mois et jours et aussi avoir un bouton pour la synthèse de l'année en cours.

La synthèse pourrait se faire sur une seule feuille à la fin du classeur de façon simple, sans MEF, juste le nécessaire.
Elle pourrait la nommer Synthannéeencours et simplement tout reporter tel l'exemple de la Feuil ‘Synth2012’.

Ce ne sont que des propositions et des idées en l'air.

Mon idée est de le faire partager par un des modérateurs du site dans la zone Téléchargement pour tous car j'ai beaucoup aimé le calendrier de David XLD pour sa simplicité et je crois que cela vaudrait la peine de rendre, si on veut, éternel :rolleyes:

Moment quétaine mis à part, qu'en pensez-vous?
 

Pièces jointes

  • CalendrierPerenne_parmois.xlsm
    56.3 KB · Affichages: 148
Dernière modification par un modérateur:

Herdet

Nous a quitté
Repose en paix
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Suggestion pour Genevieve78 ou autres contributeurs intéressés.
Variante de l'application Calendrier avec un seul tableau mensuel dynamique au lieu de 12 feuilles.

Un classeur avec une feuille Mois et une feuille Synthèse chronologique (base de données)
Fonctionnement de la feuille Mois :
1) sélection Année et Mois dans 2 combobox
2) sauvegarde des données visibles du Mois en cours dans la Synthèse (date, commentaire, thème ou n° couleur)
3) mise à jour de la page mois avec les jours et couleurs conditionnelles adaptées aux jours
4) lecture de la Synthèse et écriture dans le tableau du mois de tous les commentaires sauvegardés
5) option pour colorier les cellules de commentaires suivant une liste de thèmes prédéfinis

Obligatoire : Sauvegarde dans la Synthèse avant chaque désactivation de la feuille ou de changement de mois

Conserver l'idée de la feuille annuelle SynthCalendrier de Jacques Boisgontier avec ajout de couleurs adaptées à un thème prédéfini (Jours fériès,...) ou à un commentaire s'il existe.

Cordialement
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

mois = Format(DateSerial(2014, m, 1), "mmmm") ne bloque rien.
Elle génère Janvier,Février,Mars,... quelque soit l'année spécifiée.


mois = Format(DateSerial(Annee, m, 1), "mmmm")
ne change rien du tout et n'a pas de sens puisque le calendrier peut être utilisé au mois de Janvier de l'année suivante.

JB

Formation Excel VBA JB
 
Dernière édition:

Herdet

Nous a quitté
Repose en paix
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Bonjour le Fil,
@Herdet: J'ai corrigé le bug en ajoutant A1:G1 dans le Range; le 0,1 signifie la cellule au-dessus. Dans le document, les utilisateurs sont renvoyés à la première case vide à remplir s'ils cliquent sur une cellule avec formule...
...plus de rapidité? Je n'ai pas chronométré.
Concernant le souci du déplacement de tableau, je ne veux pas autoriser les gens à le déplacer (et pourquoi d'ailleurs?) car j'ai défini chaque zone d'impression. Pour le plaisir, je tente d'adapter ton code mais je n'y suis pas arrivé encore.
Cdt,
le 0,1 signifie la cellule au-dessus
Quand on clique sur une cellule de la ligne 1, il n'y a pas de cellule au dessus donc plantage
Ajouter un test de n° de ligne
Code:
    If ActiveCell.Row > 1 Then
      If R(0, 1) = "" Then
         R(1, 2).Select
      End If
    End If

Dans tout le code VBA, il ne faut pas voir d'année en dur comme 2014 dans Format(DateSerial(2014, m, 1), "mmmm") mais une variable Annee = Sh_ChoixAnnee.Range("ChoixAnnee")

Ne cherche à chronométrer les temps d'exécution qui sont en millièmes de secondes.

Proposition :
1) Masquer la feuille de synthèse ainsi l'utilisateur ne pourra pas la modifier
2) pour éviter les tests de validité des clics sur cellules, le plus simple est de protéger les feuilles Mois :
déverrouiller les cellules de commentaires qui peuvent être modifiées et protéger les feuilles par VBA
Copie dans le module "Module2"
Code:
Sub Feuille_Deprotection()
   ' pour les développement de l'application
   ThisWorkbook.Activate
   For Each F In Sheets
      F.Visible = xlSheetVisible
      F.Unprotect
   Next
End Sub

Sub Feuille_Protection()
   ThisWorkbook.Activate
   Application.ScreenUpdating = False
   For Each F In Sheets
      ' afficher toutes les feuilles et les déprotéger
      F.Visible = xlSheetVisible
      F.Unprotect
      
      If F.Name = Sh_Synthese.Name Then
         ' masquer la synthèse
         F.Visible = xlSheetHidden
      Else
         ' protéger les autres feuilles
         F.protect DrawingObjects:=False, Contents:=True, Scenarios:=False, UserInterfaceOnly:=True
         ' ne donner accès qu'au cellules déverrouillées
         F.EnableSelection = xlUnlockedCells
     End If
   Next
End Sub

Bon travail
Robert
 

Herdet

Nous a quitté
Repose en paix
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

mois = Format(DateSerial(2014, m, 1), "mmmm") ne bloque rien.
Elle génère Janvier,Février,Mars,... quelque soit l'année spécifiée.

mois = Format(DateSerial(Annee, m, 1), "mmmm")
ne change rien du tout et n'a pas de sens puisque le calendrier peut être utilisé au mois de Janvier de l'année suivante.
JB
Formation Excel VBA JB
OK ça ne bloque pas mais c'est un peu bizarre en lisant le code de voir une année fixe alors que c'est une variable.
Ceci dit chacun à sa propre vision du code VBA
 

Gen Rose

XLDnaute Impliqué
Supporter XLD
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

@Herdet pour la suggestion en #31:

J'aime l'idée de n'avoir qu'une feuille mois avec liste de validation.
Dans le cas présent, les utilisateurs veulent voir des mois à l'avance pour planifier (un peu comme un agenda papier, ou il est possible de tourner les pages pour consulter le passé et le futur avec l'ergonomie de l'affichage calendrier.

Ceci dit, comme je suis fan d'un minimum de feuilles dans un classeur, est-il possible que tout se garde en mémoire?
Par exemple, je choisi mars en liste de validation pour y inscrire une réunion; je reviens ensuite à février pour écrire que j'ai un lunch demain. Si je choisi mars à nouveau; mon commentaire y est toujours. Si je regarde janvier, je vois aussi mes comms.
Si tu dis oui, je dis go. Je haïs particulièrement les onglets à l'infini :rolleyes:

J'attends de tes nouvelles sur cette question.

Bon vendredi le Fil,
Le Forum :eek:
 

Gen Rose

XLDnaute Impliqué
Supporter XLD
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Re le Fil :eek:

Voici le document de Si... et Boigontier avec modifs de Herdet jusqu'ici.

Dans le VBE, j'ai une question placée dans le code de la Feuil Sh_Synthese.

J'aimerais que lorsque l'on sélectionne une cellule verouillée, il y ait repositionnement dans la première cellule autorisée tel la première version de Si...

J'ai tenté d'amalgamer les 2 formules, mais je commence à me demander s'il n'y a pas un rapport avec SelectionChange (ByVal...)

...car ces lignes que j'ai tenté d'ajouter, de différentes manière, même avec sans message d'erreur(je croyais que j'y étais!), ne fonctionnent pas alors je les ai donc retirées et mises en bas du code, en attendant de savoir comment les incrémenter. Elles viennent du code présent dans ThisWorkbook créée par Si...
À moins de le mettre là? J'ai aussi tenté, sans plus de joie.

Code:
 'If Not Intersect(R, Range("A1:G1,A3:G3,A5:G5,A7:G7,A9:G9,A11:G11")) Is Nothing Then
                 'R(2, 1).Select
                'Else
                 'If ActiveCell.Row > 1 Then
                 'R(1, 2).Select
                'End If

Bref, ce document est fonctionnel, il reste ce détail que j'aime beaucoup.

Pourquoi?

Pour la même raison que j'ai remis le message 'Êtes-vous sûr de vouloir supprimer tous les messages?' sur le bouton d'effacement: Parcequ'il se passe quelque chose lorsque l'on clique.
Pour l'utilisateur moyen, s'il clique sur une cellule protégée et que rien ne se passe, il va dire:Ça ne fonctionne pas!
S'il y a repositionnement, il va comprendre qu'il n'a pas le droit d'aller dans cette case.
 

Pièces jointes

  • Si...Herdet_CalendrierPerenne_Mois(1).xlsm
    73.2 KB · Affichages: 53

Herdet

Nous a quitté
Repose en paix
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

@Herdet pour la suggestion en #31:

J'aime l'idée de n'avoir qu'une feuille mois avec liste de validation.
Dans le cas présent, les utilisateurs veulent voir des mois à l'avance pour planifier (un peu comme un agenda papier, ou il est possible de tourner les pages pour consulter le passé et le futur avec l'ergonomie de l'affichage calendrier.

Ceci dit, comme je suis fan d'un minimum de feuilles dans un classeur, est-il possible que tout se garde en mémoire?
Par exemple, je choisi mars en liste de validation pour y inscrire une réunion; je reviens ensuite à février pour écrire que j'ai un lunch demain. Si je choisi mars à nouveau; mon commentaire y est toujours. Si je regarde janvier, je vois aussi mes comms.
Si tu dis oui, je dis go. Je haïs particulièrement les onglets à l'infini :rolleyes:

J'attends de tes nouvelles sur cette question.

Bon vendredi le Fil,
Le Forum :eek:
Bonjour Geneviève,
Ma réponse #31 réponds déjà OUI à ta question.
Relis bien les points 2) et Obligatoire :
Tout doit être sauvegardé dans la feuille Synthèse comme dans une base de données avec Date, Commentaire, thème ou n° couleur,... après chaque sélection d'année ou mois avant de relire les données stockées.
On peut ainsi garder l' historique sur plusieurs années et en plus faire des analyses par thèmes avec un TCD sur la Base Synthèse.
Le 1er boulot est de concevoir la feuille du Mois.
La solution avec formule matricielle pour le n° du jour proposée par J. Boisgontier semble bien adpatée
Il faut juste modifier la formule pour tenir compte du n° du mois qui sera sélectionné dans la liste déroulante.

Je te fais une petite ébauche que tu développeras.

A bientôt
Robert
 

Gen Rose

XLDnaute Impliqué
Supporter XLD
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Re Herdet,

2) sauvegarde des données visibles du Mois en cours dans la Synthèse

Le point 2 ne réponds pas à la spécificité de ma demande car il y a sauvegarde dans la feuille synthèse or, je veux une sauvegarde afin que l'utilisateur puisse changer les mois et les voir dans la feuille 'Calendrier'...à moins que j'aie mal saisi, auquel cas je m'en excuse...
 

Herdet

Nous a quitté
Repose en paix
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Geneviève,
Je t'envoie ci-joint une ébauche du classeur Modèle.
Il comporte les feuilles suivantes :
Calendrier : feuille principale qui fonctionne bien suivant année et mois sélectionnés dans les 2 listes
Sauvegarde :
tableau nommé à 8 colonnes ; années, mois, jour, date (formule), Evènement, Thème, Couleur cellule, Couleur texte
Param : tableaux pour les listes déroulantes et autres...
Variables : liste et référence des noms de variables définis
SynthCalendrier : de J. Boisgontier à adapter

La feuille Synthèse n'est plus utilisée

J'ai mis le squelette du code VBA dans le ThisWorkbook, Sh_Calendrier et Principal mais je te laisse finir le projet bien sûr.

Bon travail...
Robert
 

Pièces jointes

  • G78_CalendrierXLD2.xls
    116.5 KB · Affichages: 60

Herdet

Nous a quitté
Repose en paix
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Geneviève
Si l'on part sur cette solution de feuille unique, il va falloir corriger le titre ou mieux faire un nouveau fil car c'est quasiment une refonte du calendrier de DavidX LD:eek:
 

Staple1600

XLDnaute Barbatruc
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Bonjour à tous


Juste histoire de rendre à César... ;)
Licence:Libre de droits, mentions de l'auteur appréciée
Envoyé le: 01 Jan 2013
Envoyé par: David AUBERT (XLDadmin)
Date: 31 Dec 2012
Auteur: Calendrier2013.net
Taille: 125.50 Kb
Type: xls
Site Web:Click to visit site

PS: Geneviève78: il faudra songer à changer de binocles, non , ;)
 

Si...

XLDnaute Barbatruc
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

salut

Herdet :Ceci dit chacun à sa propre vision du code VBA
Notre « vision » n’est-elle pas influencée par celles de certains Visionnaires qui nous ont précédés ?
N'est-ce pas Staple :D ?
Ce n’est pas évident d’avoir tous des points de vue convergents :cool:.

J’aurais plutôt dit

"Ceci dit, chacun a son propre intérêt pour le sujet et sa propre interprétation du celui-ci."

Herdet, tu as lu : Rendre le calendrier mensuel de David XLD pérenne

J’ai lu : Rendre le calendrier mensuel de David XLD pérenne


Je partage tes remarques sur la portabilité mais, vouloir traiter un sujet sans en connaître son environnement, relève d’un défi que mon petit niveau* ne me permet pas d’essayer de tenter de faire.

Si…
Je donne quelques explications dans le fichier joint en profitant de réparer quelques lignes et reste à disposition pour d'éventuelles corrections d'erreur.

Herdet
BUG : clic dans une cellule de la 1ere ligne des mois ==> plantage sur If R(0, 1) = "" Then
Dans dans If R(0, 1) = "" Then à quoi correspond ce R(0,1), une cellule ?

Merci pour ta solution en remarquant que tu as trouvé la réponse à ta question.
Voilà encore un exemple de préférence dans l’écriture d’un code VBA :
infirme du clavier, je choisis de taper R(2,3) au lieu de R.Offset(1, 2).
Mais là encore, c’est un problème d’intérêt personnel !

Au passage, un grand merci aussi à JB pour toutes ses propositions ici et sur son site.

Pour le fun, voici un traitement dans un autre environnement (2 feuilles seulement ! Pas testé assez donc susceptible de corrections).
On pourrait aussi transférer le tableau des synthèses dans le premier onglet donc n'avoir que celui-ci mais,
aujourd’hui, je sature*.


*pratique d’ Excel depuis peu, en autodidacte dilettante et à petite dose.
 

Pièces jointes

  • Agenda Si...xlsm
    48.5 KB · Affichages: 61

Staple1600

XLDnaute Barbatruc
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Re

Notre « vision » n’est-elle pas influencée par celles de certains Visionnaires qui nous ont précédés ?
N'est-ce pas Staple :D ?
Le principal dans la vision c'est d'avoir de bons yeux ou de bonnes lunettes.

Je passais juste parce que genevieve78 n'avait pas remarqué que DavidXLD n'est pas l'auteur mais le "diffuseur".
C'est lui qui valide et mets à disposition les fichiers dans la section:
Applications disponibles dans l'espace de téléchargement

Et en passant ici avec mes deux messages, ceux-ci ne font que respecter cette ligne ;)
Licence:Libre de droits, mentions de l'auteur appréciée.
 
Dernière édition:

Herdet

Nous a quitté
Repose en paix
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

salut
J’aurais plutôt dit
"Ceci dit, chacun a son propre intérêt pour le sujet et sa propre interprétation du celui-ci."
Herdet, tu as lu : Rendre le calendrier mensuel de David XLD pérenne
J’ai lu : Rendre le calendrier mensuel de David XLD pérenne

Je partage tes remarques sur la portabilité mais, vouloir traiter un sujet sans en connaître son environnement, relève d’un défi que mon petit niveau* ne me permet pas d’essayer de tenter de faire.
Pour le fun, voici un traitement dans un autre environnement (2 feuilles seulement ! Pas testé assez donc susceptible de corrections).
.
Bonjour Si...

Vision, Points de vue, Interprétation, Compréhension, Intérêt, ... ne jouons pas sur les mots car c'est justement ce qui créé la difficulté de communication.
En effet c'est le mot "pérenne" qui m'a interpellé plutôt que "calendrier" car il en existe des centaines en Excel (chercher "Excel calendrier" dans les images Google !)

Assurer la pérennité ("Etat de ce qui dure longtemps, éternellement.") d'une application à toujours été pour moi une priorité professionnelle pendant plus de 20 ans de développement (Excel et autres) pour justement avoir l'esprit tranquille face à 10 à 40 utilisateurs dans plusieurs pays pour des applications complexes techniques et financières et de surcroit multilangues.
L'apréhension du bug était toujours présente surtout lors des remises d'offres et pour les présentations à des groupes de personnes.

Pour moi, assurer la pérennité en Excel se résume à ceçi : nommer les variables et tableaux, imaginer tous les cas possibles même farfelus, tester les clics n'importe où (il y a des virtuoses du double-clic), protéger les cellules non utilisables car cela évite de gérer des tas de tests et de messages d'erreur, utiliser des listes prédéfinies, simplifier les formules au maximum, en VBA mettre beaucoup d'explications (pour la compréhension des années après) et ne rien faire de trop "exotique" car les versions successives d'Excel ne le pardonnent pas.

L'utilisation de ton fichier Agenda Si...xlsm et la lecture de tes explications, montrent un fonctionnement unilatéral Synthèse ==> Calendrier car tout ce qui à été saisi par l'utilisateur dans le Calendrier n'est pas sauvegardé lorsque l'on change de mois ou d'année.
La saisie doit être faite dans la feuille de synthèse ce qui est un peu déroutant.

Petit inconvénient avec les toupies pour revenir sur un mois précis, il faut cliquer sur les précédents ou suivants.
Exemple :
si l'on est sur Décembre 2013, le clic du mois suivant devrait passer en Janvier 2014 alors qu'il est bloqué.
si l'on passe en 2014, il faut 11 clics sur les mois précédents pour revenir en Janvier

En tous cas, c'est un bon défi de te lancer dans cette application.

Cordialement
Robert
 

Gen Rose

XLDnaute Impliqué
Supporter XLD
Re : [RÉSOLU + Améliorations en continu] Rendre le calendrier mensuel de David XLD pé

Bonjour Le Fil :eek:
Staple, Herdet, Boigontier, Si... ;)

Moi le week-end, je suis à 100% déconnectée alors je vous lis ce matin!

Heureuse de voir que le tout reste courtois et autant qu'on puisse dire, le fil est très riche!

Staple, je ne savais même pas ce que sont des binocles mais en lisant ton 2eme commentaire, j'ai découvert que c'était un autre mot pour signifier 'lunettes'! Je trouve ce mot trop mignon alors c'est mon mot 2014 (en 2013, c'était 'capillotracté'). Sur une note plus sérieuse, je m'excuse sincèrement de ne pas avoir remarqué que David XLD n'était que le diffuseur de ce calendrier alors j'ai édité mon premier post et ajouté les renseignements nécessaires; cela va de soi! Merci pour la correction :eek:

Herdet, j'aime la précision et ton focus sur le sujet et tu me fais beaucoup travailler (c'est bien) ; ta solution en post #39 est vraiment bien pensée car chaque mois reste en mémoire; les listes de validation rendent le choix de mois et d'années très fluide; en effet, l'idée des fériés et autres de Boigontier est agréable à intégrer...Me reste plus qu'à comprendre comment activer cette feuille Synthese et me décider si je vais conserver la feuille Sauvegarde (ou la masquer)...je te reviens quand j'aurai tout figuré...enfin, j'espère. Édition: Après test, ce sont les mêmes commentaires qui restent, peu importe l'année ou le mois...je ne vois pas comment corriger cela... De plus, impossible de voir comment activer la feuille Synthèse, je ne crois pas que le code existe dans le document

Je sens que je vais travailler sur vos documents aujourd'hui et j'ai très hâte d'avoir les derniers document de Herdet et Si... fonctionnels; je vais pouvoir les poster ensuite sur le fil original en mentionnant l'implication de Boigontier (ses formules et ses idées s'y sont imbriquées, je ne l'oublie pas).

Un très beau lundi à tous et Bonne semaine :eek:
 
Dernière modification par un modérateur:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 186
dernier inscrit
Eliyass