XL 2016 Contenu de cellule indépendant en fonction du mois et de l'année

Monhtc

XLDnaute Occasionnel
Bonsoir chers tous,
Novice dans le codage VBA, j'ai monté un calendrier grâce à votre aide. Cependant j'aimerais pouvoir rendre indépendant le contenu des cellules en fonction du mois et de l'année
 

Pièces jointes

  • GEST ABSENCES.xlsm
    28.1 KB · Affichages: 10

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Monhtc, Calvus

Calvus
Rassures-toi, moi non plus ;)
Mais peut-être n'est-ce pas le don fichier, car on retrouve l'userform proposé dans le précédent fil de Monhtc.

EDITION: En recopiant la formule présente en D10 jusqu'en AG10, la macro ci-dessous masque également non?
VB:
Sub Masquer_Jour()
Application.ScreenUpdating = False
With Feuil1
.Columns(31).Hidden = Month(.[AE10]) > Month(.[C10])
.Columns(32).Hidden = Month(.[AF10]) > Month(.[C10])
.Columns(33).Hidden = Month(.[AG10]) > Month(.[C10])
.Range("C11:AG50") = ""
End With
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

Monhtc

XLDnaute Occasionnel
Merci @Staple1600 j'ai modifier la macro. Elle à l'air de fonctionner parfaitement mais m'affiche une erreur dont l'image capturée a été joint ici.
Par ailleurs les informations que je saisi sur la plage ("C11:AG50") reste identique d"un mois à l'autre alors qu'il s'agit de renseigner les absences et donc par mois.
CAPTURE 2.PNG
CAPTURE1.PNG
 

Staple1600

XLDnaute Barbatruc
Re

Si tu relis bien mon précédent message, il n'avait pas que la macro à modifier, non ? :rolleyes:
Voir ce qui est écrit juste après les deux points ;)

Sinon , je crois avoir compris ce que tu voulais
Donc je remplace les contrôles formulaires par des contrôles ActiveX
Puis dans le code de la feuille 1, je colle le code VBA "du dimanche" ci-dessous.
Ainsi on se passe de la référence à la feuille CONFIG pour ce qui est de la liste des mois et des années.
PS: test OK sur ton fichier (si toutes les modifications des messages 3 et 5 ont bien été faites)
VB:
Dim Mois, Année, jour
Private Sub ComboBox1_Change()
MesJours
End Sub

Private Sub ComboBox2_Change()
MesJours
End Sub

Private Sub Worksheet_Activate()
ComboBox1.List = Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
ComboBox2.List = Array(2019, 2020, 2021, 2022, 2023, 2025, 2026, 2027, 2028, 2029, 2030)
End Sub

Sub MesJours()
Année = ComboBox2: Mois = ComboBox1
On Error Resume Next
jour = CDate("1-" & Mois & "-" & Année)
Application.ScreenUpdating = 0
Application.EnableEvents = False: [C10] = jour
Columns(31).Hidden = Month([AE10]) > Month([C10])
Columns(32).Hidden = Month([AF10]) > Month([C10])
Columns(33).Hidden = Month([AG10]) > Month([C10])
Application.EnableEvents = True
End Sub
 

Monhtc

XLDnaute Occasionnel
Re

Si tu relis bien mon précédent message, il n'avait pas que la macro à modifier, non ? :rolleyes:
Voir ce qui est écrit juste après les deux points ;)

Sinon , je crois avoir compris ce que tu voulais
Donc je remplace les contrôles formulaires par des contrôles ActiveX
Puis dans le code de la feuille 1, je colle le code VBA "du dimanche" ci-dessous.
Ainsi on se passe de la référence à la feuille CONFIG pour ce qui est de la liste des mois et des années.
PS: test OK sur ton fichier (si toutes les modifications des messages 3 et 5 ont bien été faites)
VB:
Dim Mois, Année, jour
Private Sub ComboBox1_Change()
MesJours
End Sub

Private Sub ComboBox2_Change()
MesJours
End Sub

Private Sub Worksheet_Activate()
ComboBox1.List = Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
ComboBox2.List = Array(2019, 2020, 2021, 2022, 2023, 2025, 2026, 2027, 2028, 2029, 2030)
End Sub

Sub MesJours()
Année = ComboBox2: Mois = ComboBox1
On Error Resume Next
jour = CDate("1-" & Mois & "-" & Année)
Application.ScreenUpdating = 0
Application.EnableEvents = False: [C10] = jour
Columns(31).Hidden = Month([AE10]) > Month([C10])
Columns(32).Hidden = Month([AF10]) > Month([C10])
Columns(33).Hidden = Month([AG10]) > Month([C10])
Application.EnableEvents = True
End Sub
le calendrier marche nickel merci bon boulot. sauf que comme sur les images jointes à ce message, les absences se superposent
ABSENCE JAN.PNG
ABSENCE FEV.PNG
ABSENCE JAN.PNG
d'un mois à l'autre.
 

Pièces jointes

  • GESTIONNAIRE DES ABSENCES STAPLE1600.xlsm
    39.4 KB · Affichages: 4

Monhtc

XLDnaute Occasionnel
Je risque de me faire gueuler là dessus :confused::(. Car je suis perdu alors que le boulot est parfait.
voici mon code en feuil1:
VB:
Option Explicit
Dim Mois, Année, jour
Private Sub ComboBox1_Change()
MesJours
End Sub

Private Sub ComboBox2_Change()
MesJours
End Sub

Private Sub Worksheet_Activate()
ComboBox1.List = Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
ComboBox2.List = Array(2019, 2020, 2021, 2022, 2023, 2025, 2026, 2027, 2028, 2029, 2030)
End Sub

Sub MesJours()
Année = ComboBox2: Mois = ComboBox1
On Error Resume Next
jour = CDate("1-" & Mois & "-" & Année)
Application.ScreenUpdating = 0
Application.EnableEvents = False: [C10] = jour
Columns(31).Hidden = Month([AE10]) > Month([C10])
Columns(32).Hidden = Month([AF10]) > Month([C10])
Columns(33).Hidden = Month([AG10]) > Month([C10])
Application.EnableEvents = True
End Sub

Puis ma macro dans le Module 1
VB:
Sub Masquer_Jour()
Application.ScreenUpdating = False
With Feuil1
.Columns(31).Hidden = Month(.[AE10]) > Month(.[C10])
.Columns(32).Hidden = Month(.[AF10]) > Month(.[C10])
.Columns(33).Hidden = Month(.[AG10]) > Month(.[C10])
.Range("C11:AG50") = ""
End With
Application.ScreenUpdating = True
End Sub

Malgré tout ca ne marche pas comme je le souhaite
 

Staple1600

XLDnaute Barbatruc
Re

Evidemment dans mon exemple, on n'utilise plus Masquer_jour puisque ce qu'elle faisait est déjà dans la procédure événementielle ;)
Tu n'as pas remarqué qu'on retrouve Columns(31).Hidden etc.. dans les deux codes ?

Quand je parlais de relire, c'était simplement pour dire que j'avais précisé que mon code ne s'occupait que d'avoir la liste des mois et des années en dur dans le code (sans faire référence à la feuille CONFIG)

PS1: Mes bouts de code ne sont absolument pas parfaits.
Ils fonctionnent sans plus. ;)

PS2: L'emploi d'emoticones est censé signalé soit de l'humour, de la dérision ou de l'ironie.
En tout cas, je m'en sers pour cela
(et pas pour engueuler qui que se soit ;))
 
Dernière édition:

Monhtc

XLDnaute Occasionnel
:D:D:D:D Suis mort de rire contre moi-meme. Je pense qu'il va falloir prendre ma main et me guider comme un enfant qui ne sait ni lire ni ecrire car je suis toujours perdu. Je supprime le code dans le module 1 je supprime d'ailleurs le module. Il masque les jours certes mais en remplissantr les absences de janvier, je les retrouves dans les même cellules des autres mois.
J'aurai vraissemblabement besoin de votre fichier qui marche correctement.
Pitié svp. Je rappelle, je suis comme l’élève qui va en cours pour la premiere fois:(:(:(:(
 

Pièces jointes

  • GESTIONNAIRE DES ABSENCES STAPLE1600.xlsm
    37.3 KB · Affichages: 7

Staple1600

XLDnaute Barbatruc
Re

Pour info
Je ne joins jamais de fichier Excel
(Et ce depuis le 22/05/1968 à 22h43)
Charge au demandeur de mettre les mains dans le cambouis;)
C'est plus long mais plus formateur ;)
Et ceux que je perds en chemin seront pris en charge (enfin j'espère) par d'autres XLdiens.;)

Encore une fois, mon code à l'heure actuelle ne sert qu'à avoir le nom des mois et des années dans les 2 combobox et masquer les colonnes si besoin.
Il ne fait que cela et je l'ai écrit pour ne faire que cela. ;)
 

Discussions similaires

Réponses
45
Affichages
1 K

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035