Calendrier qui conserve les données

  • Initiateur de la discussion Initiateur de la discussion Axel98
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Axel98

XLDnaute Nouveau
Bonjour,

Je viens à votre rencontre car j'ai un problème sur mon calendrier.

Sur le fichier, ci-joint, vous avez 2 feuilles : Accueil qui reprend les données utile pour mon calendrier qui se situe sur la deuxième feuille. On peut changer l'année du calendrier sur la feuille accueil en modifiant simplement l'année et celui-ci se met à jour.
Sur le calendrier, des boutons permettent de remplir les cases en fonctions de ce que les personnes sont entrain de faire : s'ils sont au bureau, en congé, en déplacement etc.


Ma question est : je construis mon planning pendant l'année. Arrivé en décembre, il a des actions qui vont déborder sur l'année prochaine. Mais si je change d'année les informations reste. Je souhaite qu'en changeant d'année les informations disparaisse. Mais si on revient sur une année déjà complétée les informations soient toujours là.

Est ce que c'est possible ?

Merci pour votre réponse,

Bien à vous,

Axel
 

Pièces jointes

Bonjour Axel98, mapomme,

Si la disposition des tableaux des mois est immuable on peut mémoriser les valeurs des mois dans des noms définis.

Le code de la feuille "Calendrier" du fichier joint (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Deactivate()
Dim P As Range, i As Byte, nom As Name
Set P = [B4:AE11] 'à adapter éventuellement
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
For i = 1 To 12
    P.SpecialCells(xlCellTypeBlanks) = "=""""" 'texte vide dans les cellules vides (évite les #N/A)
    Set nom = ThisWorkbook.Names.Add("Memo" & Format(P(-1, 0), "yyyy_mm"), P.Value) 'mémorise dans un nom défini
    'nom.Visible = False 'facultatif, masque le nom
    Set P = P.Offset(13) 'mois suivant
Next
End Sub

Private Sub Worksheet_Activate()
Dim P As Range, i As Byte, nom As String
Set P = [B4:AE11] 'à adapter éventuellement
Application.ScreenUpdating = False
For i = 1 To 12
    nom = "Memo" & Format(P(-1, 0), "yyyy_mm")
    If IsArray(Evaluate(nom)) Then P.FormulaArray = "=" & nom Else P = "" 'restitution par formule matricielle
    P = P.Value 'supprime la formule
    Set P = P.Offset(13) 'mois suivant
Next
End Sub
PS : pourquoi vos mois ont au maximum 30 jours ???

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
280
Réponses
12
Affichages
1 K
Retour