Planning masquer colonnes sous conditions

sebb37

XLDnaute Nouveau
Bonjour à tous

Je suis novice dans le domaine. J'ai besoin de votre aide.

J'ai réalisé un planning excel décomposé de la facon suivante

L2 année
L3 mois
L4 semaine
L5 jour

Je souhaiterai masquer les colonnes de mon planning inutiles si elles ne sont pas comprises entre deux dates
Exemple:
en A1: date de début 02/08/09
en A2: date de fin 10/05/10
Masque les colonnes du planning qui sont avant et aprés ses deux dates

J'aimerai savoir si cela est possible et si quelqu'un peut me donner un coup de main.
Merci par avance pour vos réponses sur le sujet
 

Pièces jointes

  • Classeur.zip
    14.2 KB · Affichages: 93
  • Classeur.zip
    14.2 KB · Affichages: 80
  • Classeur.zip
    14.2 KB · Affichages: 107
G

Guest

Guest
Re : Planning masquer colonnes sous conditions

Bonjour,

Voici une macro, à mettre où tu veux.
Code:
Sub CacherMasquerColonnes()
    Dim c As Range
    Dim dateInf As Date 'Date inférieure
    Dim dateSup As Date 'Date supérieure
 
   'Si la macro lève une erreur (toujours possible) aller à la fin pour rétablir l'affichage écran
    On Error GoTo FinMAsquage
 
    'Désactiver l'afichage écran (évite le flashage) 
    Application.ScreenUpdating = False    
    
    'Travailler sur la Feuil1 (éventuelement à changer ultérieurement)
    With Sheets("Feuil1") 
 
        'Si une date est entrée en B2 et B3
        If IsDate(Range("B2")) And IsDate(Range("B3")) Then
 
          'Conserver ses dates dans les variables (plus rapide)
            dateInf = .Range("B2"): dateSup = .Range("B3")
 
            'Boucler sur chaque cellule de la plage E2:EL2
            For Each c In .Range("$E$2:$EL$2")
 
                'faut-il cacher la colonne?
                c.EntireColumn.Hidden = c > dateInf And c < dateSup
 
            Next c 'prochaine cellule
 
        Else
 
            'Si aucune date n'est entrée en B2:B3 ou  une seule -> afficher tout
            .Range("$E$2:$EL$2").EntireColumn.Hidden = False
 
        End If
 
    End With
 
FinMAsquage:
 
    'réactiver l'affichage écran
    Application.ScreenUpdating = True
 
End Sub

Peut-être que la lancer dans:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Or Target.Address = "$A$2" Then CacherMasquerColonnes
End Sub
Serait pas mal.

A+
 
Dernière modification par un modérateur:

sebb37

XLDnaute Nouveau
Re : Planning masquer colonnes sous conditions

Merci pour ta réponse. Ce que j'en comprend pour le moment, c'est que cela est possible, c'est déjà une bonne chose!.

Ce que je comprend de ton code:
For i = 1 to DernièreColonne signifie que la valeur i peut être de la colonne A la derniére colonne
if (test sur la date) : le test consiste à comparer entre ma cellule A1: date de début et ma cellule A2: date de fin et les dates présentes dans mes colonnes

Et si la comparaison est bonne, seuls les bonnes colonnes aux bonnes dates s'affichent
then Columns(i).Hidden = True

Ma difficulté, je ne maitrise pas le VBA !!! Je pense que tu as pu le constater. Peux tu m'aider sur le sujet pour écrire ce code STP. Ca serait vraiment cool
 

sebb37

XLDnaute Nouveau
Re : Planning masquer colonnes sous conditions

J'ai testé cela marche trés bien cependant,

c.EntireColumn.Hidden = c > dateInf And c < dateSup

Cette action masque ce qui est entre date inf et date sup alors que je souhaiterai faire le contraire.

J'ai donc tenté de faire c.EntireColumn.Hidden = c < dateInf And c > dateSup

Est ce normal que cela ne veuille pas fonctionner
 

sebb37

XLDnaute Nouveau
Re : Planning masquer colonnes sous conditions

C'est bon je commence à comprendre . Il faut mettre un ou au lieu d'un et

J'ai donc tenté de faire c.EntireColumn.Hidden = c < dateInf Or c > dateSup

Merci beaucoup. J'halucine, c'est la premiére fois que je viens sur ce site. Merci à tous pour votre réactivité . C'est sincérement trés plaisant.

Nota: Je vois que j'ai beaucoup beaucoup de chose à apprendre

A+
 

Discussions similaires

Réponses
2
Affichages
520

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 236
dernier inscrit
Menni