XL 2016 Calendrier Automatique

Monhtc

XLDnaute Junior
Bonjour chers tous,
j'essaie de creer un calendrier automatique avec pour donction de masquer que les jours ne figurant pas dans le mois. Par exemple pour le mois de fevrier, faudra masque les 29, 30 et 31. Voici mon code VBA sur lequel je bloque
VB:
Option Explicit

Sub Masquer_Jour()
Dim Num_Col As Long
   For Num_Col = 30 To 32     ' Boucle sur les cellules des jours 29, 30 et 31
      If Month(Cells(6, Num_Col)) <> Feuil2.Range("k1").Value Then
         Columns(Num_Col).Hidden = True
      Else
         Columns(Num_Col).Hidden = False
     End If
   Next
   Feuil1.Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
End Sub
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Bonjour Monhtc

Ta cellule K1 de la feuille 2 contient une date, il faut donc faire
VB:
If Month(Cells(6, Num_Col)) <> Month(Sheets("CONFIG").Range("k1").Value Then
Nota : Je préfère nommer les feuilles sur lequel je travaille, moins dangereux ;)

A+
 

ChTi160

XLDnaute Barbatruc
Bonjour Monhtc
Bonjour le Fil (Bruno) ,le Forum
Une autre version:
VB:
Sub Masquer_Jour()
Dim Num_Col As Long
Dim M_1 As Byte
Application.ScreenUpdating = False
With Feuil1
         M_Ref = Month(.Cells(10, 30))'On récupére le mois du 28 du Mois
   For Num_Col = 31 To 33     ' Boucle sur les cellules des jours 29, 30 et 31
          .Columns(Num_Col).Hidden = IIf(Month(.Cells(10, Num_Col)) <> M_Ref, True, False)'On masque en fonction de la comparaison
   Next
   .Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
End With
Application.ScreenUpdating = True
End Sub
jean marie
 

Monhtc

XLDnaute Junior
Merci pour votre assistance, j'ai éssayé le code de @ChTi160 mais je n'arive toujours pas à masquer les colonnes unitiles quand le mois compte 30 jours ou 28 jours. Je vous joinds le fichier pour une meilleure assistance; Merci
 

Fichiers joints

  • 29.3 KB Affichages: 6

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

C'est dans l'air du temps (Recyclons, recyclons, petitpatapon ;))
Une macro issue d'une réponse que je postais en 2016 sur XLD
VB:
Sub Calendrier()
Dim X&, i&, cal As Range, cell As Range
ANNEE = InputBox("Choisir l'année du calendrier?", "Calendrier", Year(Date))
Application.ScreenUpdating = False
FD = CDate("1/1/" & ANNEE): [B4] = FD: [B4:M4].DataSeries 1, 3, 3, 1
For i = 1 To 12
X = Day(DateSerial(Year(Cells(4, i + 1)), Month(Cells(4, i + 1)) + 1, 0))
Cells(4, i + 1).Resize(X).DataSeries 2, 3, 1, 1
Next
End Sub
Si ça peut servir tant mieux, sinon tant mieux ;)
 

ChTi160

XLDnaute Barbatruc
Re
Le fichier avec la Macro incorporée à La procédure de la Zone combinée 1 des Mois .
jean marie
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Bonjour le fil,

Salut ChTi160 ;)

Comme de mon côté j'avais concocté un truc, voici le fichier modifié

A+
 

Fichiers joints

ChTi160

XLDnaute Barbatruc
Bonsoir Bruno
Eh ben , plus y a de propositions , plus il a le Choix Lol
Bonne fin de Soirée
jean marie
 

Monhtc

XLDnaute Junior
Merci à tous pour les différentes propositions, @ChTi160 @BrunoM45 toutes marchent celle de @Staple1600 aussi surement mais je ne sais ou copier la macro.
Par contre mon calendrier est destiné à recenser pour chaque mois la liste des absences, sauf qu'après le remplissage à la suite de ma mise en forme conditionnée (Voir fichier joint) je perds toutes les données d'un mois à un autre
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Re,

Par contre mon calendrier est destiné à recenser pour chaque mois la liste des absences, sauf qu'après le remplissage à la suite de ma mise en forme conditionnée (Voir fichier joint) je perds toutes les données d'un mois à un autre
Noooonnnnn sans déconner

VB:
    .Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
Perso, j'apelle ça du foutage de gueule


Aller, pour ma part banni et tchao
 

Monhtc

XLDnaute Junior
Bonjour le fil, bonjour @BrunoM45 Comment pourrais-je donc changer de mois de façon indépendante avec ses propres donnée a remplir ?
Désolé suis novice en VBA. En supprimant cette ligne mon code ne marche plus non:
VB:
.Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
 

Staple1600

XLDnaute Barbatruc
Merci à tous pour les différentes propositions,... toutes marchent celle de @Staple1600 aussi surement mais je ne sais ou copier la macro.
Ma macro est testable sur tout classeur né en Europe ou autre continent.
Elle fonctionnera aussi sur un classeur stocké sur un PC portable en apesanteur dans l'I.S.S
;)
Tant que ce classeur (par sécurité autant qu'il soit vierge) possède un module standard dans lequel on pourra coller ma macro.
(En faisant par exemple: Sélection de la macro sur XLD -> CTRL+C -> ALT+F11 -> ALT+I -> ALT+M -> CTRL+V et enfin ALT+ F11)
Ensuite dans Excel, aller dans Affichage/Macros choisir Calendrier et cliquer sur Exécuter)
 

Monhtc

XLDnaute Junior
Bonjour Monhtc
Bonjour le Fil (Bruno) ,le Forum
Une autre version:
VB:
Sub Masquer_Jour()
Dim Num_Col As Long
Dim M_1 As Byte
Application.ScreenUpdating = False
With Feuil1
         M_Ref = Month(.Cells(10, 30))'On récupére le mois du 28 du Mois
   For Num_Col = 31 To 33     ' Boucle sur les cellules des jours 29, 30 et 31
          .Columns(Num_Col).Hidden = IIf(Month(.Cells(10, Num_Col)) <> M_Ref, True, False)'On masque en fonction de la comparaison
   Next
   .Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
End With
Application.ScreenUpdating = True
End Sub
jean marie
Merci de pour ton assistance @ChTi160. Le calendrier marché Nickel. Cependant j'aimerais que chaque cellule soit indépendante d'un mois à l'autre de sorte à voir les absence de Janvier, Février, mars, ainsi de suite.
Sauf que cette ligne du code:
VB:
Range("c11:aG50").ClearContents  'Supprime le contenu dans les cellules
.
Empêche cela. Comment puis-je trouver une solution ?
 

ChTi160

XLDnaute Barbatruc
Bonjour Monhtc
Bonjour le Fil , le Forum
c est donc une vision de l ensemble des absences que tu veux ?
donc annuelle ?
explique nous .
ou alors je n ai pas compris lol
jean marie
 

Monhtc

XLDnaute Junior
Merci pour ta promptitude @ChTi160 en effet j'aimerais pouvoir avoir mettre à jour mon calendrier chaque jour ouvrable en recensant les absences en fonction des motifs (Congé="C"; Maladie="M" et Permission="P") afin d'avoir un recap mensuel et annuel plus tard
 

ChTi160

XLDnaute Barbatruc
Re
je ne comprends pas !
peux tu être plus explicite ?
tu dis
j'aimerais pouvoir avoir mettre à jour mon calendrier chaque jour ouvrable en recensant les absences en fonction des motifs (Congé="C"; Maladie="M" et Permission="P")
Quel est la composition de ce que tu appelles "mon calendrier" , mets un exemple de ce calendrier .
tu dis : Ensuite
afin d'avoir un récapitulatif mensuel et annuel plus tard
Il te faut donc passer par une feuille ou tu vas stocker l'ensemble de tes données journalière "BD" .
c'est à dire qu'il te faut au préalable enregistrer les Données "Absences" que tu vas entrer dans ta "Feuil1"
Tu pourrais passer par Un userform
et y saisir , y sélectionner :
le Nom de l'Employé(e)
de la Date de Début à la Date de Fin de l'Absence
le Motif de l'absence
Que tu pourras ensuite appeler par Nom , Mois , Année , Par Type d'Absence etc etc.

jean marie
 

Monhtc

XLDnaute Junior
Merci pour toutes ses indications @ChTi160 . J'ai pu créer un formulaire avec differentes entrées:
Employés:
Absences:
Date de début:
Date de fin:

avec les propriétés déjà paramétrées. Cependant il me reste la touche ajouter pour remplir les informations sur mon classeur.
Je joins à ce message mon précédent fichier ainsi que les mises à jour apportés pour une meilleure assistance de votre part. Grand merci
 

Fichiers joints

Monhtc

XLDnaute Junior
Grand merci je vais peut etre ouvrir une autre discussion pour une assistance afin de remplir mon calendrier
 

Discussions similaires


Haut Bas