XL 2016 pour un planning mensuel masquer les dernières colonnes en fonction de l'année

MomoooHHH

XLDnaute Nouveau
Bonjour à tous !!

J'aurai aimé avoir un coup de main étant assez novice dans le domaine d'excel mais ayant quand même certaines bases,
pour pouvoir masquer les colonnes contenant les jours 29/30/31 en fonction du mois et de l'année en cours sur un planning, si certains ont l'envie de me trouver les solutions je vous partagerais le planning en question je vous en remercie énormément d'avance.
 
Solution
Bonjour à tous
Je continu à dire que
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E1")) Is Nothing Then _
    Sheets("février").Columns("BM:BN").Hidden = Day(DateSerial(Range("E1"), 3, 0)) < 29
End Sub
A mettre dans le module de la feuille Janvier

cordialement

MomoooHHH

XLDnaute Nouveau
voilà une trame de mon planning à savoir je ne vous ai partagé que le mois de janvier normalement il y a 12 onglets pour les 12 mois, en changeant l'année ou bien le mois les jours se changent automatiquement .
 

Pièces jointes

  • planning excel.xlsx
    54.4 KB · Affichages: 22

Efgé

XLDnaute Barbatruc
Re
Récapitulons:
Des lignes masquées​
Des macros absentes​
Des liaisons vers un classeur que nous n'avons pas​
Des fonctions personnalisées absente des modules​
Des cellules fusionnées en veux-tu en voilà​

Je passe la main à qui la voudras.

Cordialement
 

MomoooHHH

XLDnaute Nouveau
Re
Récapitulons:
Des lignes masquées​
Des macros absentes​
Des liaisons vers un classeur que nous n'avons pas​
Des fonctions personnalisées absente des modules​
Des cellules fusionnées en veux-tu en voilà​

Je passe la main à qui la voudras.

Cordialement
Ah!Ah! Ne vous inquiétez pas pour ça je veux juste une réponse à mon problème pour le reste cela fonctionne très bien mais seulement les fonctions et les liaisons ne sont pas rattacher vu que que je vous ai donné une bride sinon vous auriez accès à des infos que je ne souhaite pas partager, il faut seulement s'occuper des colonnes BM à BR
Si vous voyez une solution
Merci
 

MomoooHHH

XLDnaute Nouveau
Ah!Ah! Ne vous inquiétez pas pour ça je veux juste une réponse à mon problème pour le reste cela fonctionne très bien mais seulement les fonctions et les liaisons ne sont pas rattacher vu que que je vous ai donné une bride sinon vous auriez accès à des infos que je ne souhaite pas partager, il faut seulement s'occuper des colonnes BM à BR
Si vous voyez une solution
Merci
voici le fichier avec certaines macros si ça peut vous rassurer
Cordialement
 

Pièces jointes

  • planning excel.xlsm
    60.7 KB · Affichages: 10

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Efgé, Mom...
Un essai en PJ avec une macro qui se déclenche lors de la modification du mois en E3 :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E3")) Is Nothing Then
        Application.ScreenUpdating = False
        Range("BM:BR").EntireColumn.Hidden = False
        If Not IsNumeric([BM7]) Then Range("BM:BR").EntireColumn.Hidden = True
        If Not IsNumeric([BO7]) Then Range("BO:BR").EntireColumn.Hidden = True
        If Not IsNumeric([BQ7]) Then Range("BQ:BR").EntireColumn.Hidden = True
    End If
    Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • planning excel.xlsm
    60.3 KB · Affichages: 14

MomoooHHH

XLDnaute Nouveau
Bonjour Efgé, Mom...
Un essai en PJ avec une macro qui se déclenche lors de la modification du mois en E3 :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E3")) Is Nothing Then
        Application.ScreenUpdating = False
        Range("BM:BR").EntireColumn.Hidden = False
        If Not IsNumeric([BM7]) Then Range("BM:BR").EntireColumn.Hidden = True
        If Not IsNumeric([BO7]) Then Range("BO:BR").EntireColumn.Hidden = True
        If Not IsNumeric([BQ7]) Then Range("BQ:BR").EntireColumn.Hidden = True
    End If
    Application.ScreenUpdating = True
End Sub
C'est exactement ce qu'il me fallait, je vous en remercie infiniment, je suis tellement impressionné par ceux qui gère la VBA bravo à vous !!!
 

Efgé

XLDnaute Barbatruc
Re
normalement il y a 12 onglets pour les 12 mois,
Donc seul février pose question, les autres mois étant assez stables dans l'ensemble...
Il suffit de masquer les colonnes des 31 avril, juin septembre et novembre. Opération à effectuer une fois pour toute.
Pour l'onglet de février, on peux commencer par masquer les 30 et 31 qui ne seront que trèèèès peu utilisés.
Pour gérer la colonne du 29 février on peux mettre une ligne de macro dans la feuille concernée :
VB:
Private Sub Worksheet_Activate()
Columns("BM:BN").Hidden = Day(DateSerial(Range("E1"), 3, 0)) < Range("BM9")
End Sub

Cordialement
 

MomoooHHH

XLDnaute Nouveau
Re

Donc seul février pose question, les autres mois étant assez stables dans l'ensemble...
Il suffit de masquer les colonnes des 31 avril, juin septembre et novembre. Opération à effectuer une fois pour toute.
Pour l'onglet de février, on peux commencer par masquer les 30 et 31 qui ne seront que trèèèès peu utilisés.
Pour gérer la colonne du 29 février on peux mettre une ligne de macro dans la feuille concernée :
VB:
Private Sub Worksheet_Activate()
Columns("BM:BN").Hidden = Day(DateSerial(Range("E1"), 3, 0)) < Range("BM9")
End Sub

Cordialement
Merci encore pour tout ça mais il reste un petit soucis, étant donné que j'ai un onglet pour chaque mois il me suffit juste de mettre l'ensemble du VBA que vous m'avez fait pour le mois de février, si je supprime les 31 pour les mois qui n'en ont pas !?
Et le petit soucis est que sur l'onglet de janvier je peux changer l'annéé pour mettre à jour les dates mais malheuresement pour 2024, février est censé avoir un 29 hors il ne s'affiche pas du fait du VBA je pense.
Pour vous synthétiser la chose ce planning en soit jaimerais pouvoir l'utiliser durant x année en ayant juste le besoin de changer l'année.
 

Efgé

XLDnaute Barbatruc
Re
il reste un petit soucis, étant donné que j'ai un onglet pour chaque mois il me suffit juste de mettre l'ensemble du VBA que vous m'avez fait pour le mois de février,
Oui, uniquement dans l'onglet de février. La colonne s'affichera ou se masquera suivant les besoin dès l'activation de la feuille. (clic droit sur l'onglet Février / Visualiser le code. C'est là qu'il faut le mettre)
Et le petit soucis est que sur l'onglet de janvier je peux changer l'annéé
Donc, cela prouve qu'un fichier exemple significatif est toujours utile.
Changez ma proposition avec
VB:
Private Sub Worksheet_Activate()
Columns("BM:BN").Hidden = Day(DateSerial(Range("E1"), 3, 0)) < Sheets("janvier").Range("BM9")
End Sub
Cordialement
 

MomoooHHH

XLDnaute Nouveau
Re

Oui, uniquement dans l'onglet de février. La colonne s'affichera ou se masquera suivant les besoin dès l'activation de la feuille. (clic droit sur l'onglet Février / Visualiser le code. C'est là qu'il faut le mettre)

Donc, cela prouve qu'un fichier exemple significatif est toujours utile.
Changez ma proposition avec
VB:
Private Sub Worksheet_Activate()
Columns("BM:BN").Hidden = Day(DateSerial(Range("E1"), 3, 0)) < Sheets("janvier").Range("BM9")
End Sub
Cordialement
Merci pour votre rapidité, mais malheureusement cela ne fonctionne toujours pas, à savoir tous les onglets sont identiques et l'année de février est rattaché à la cellule E1 de janvier, j'espère être assez clair dans mes propos désolé si ça ne l'est pas !
 

Discussions similaires

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet