IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro pour afficher seulement les colonnes dont le # de semaine = la date d'aujourd'hui [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Par défaut Macro pour afficher seulement les colonnes dont le # de semaine = la date d'aujourd'hui
    Bonjour,

    Je n'arrive pas a écrire le code nécessaire pour faire fonctionner une macro qui me permettrait d'afficher seulement les colonnes possédant le NO.SEMAINE() qui ce situe entre le NO.SEMAINE(AUJOURDHUI())>=-1 et NO.SEMAINE(AUJOURDHUI())>=+2

    Je m'explique:
    la date d'aujourd'hui s'affiche en F3
    j'ai une plage allant de P3 à BN3 contenant dans chaque cellule le no.semaine (allant de 2 a 52)

    Je veux que lorsque j'active cette macro, toute les colonnes entières dans la plage P:BN soit masquée excepté celle qui ont la valeur entre le no.semaine-1 et no.semaine+2 par rapport a la date d'aujourdhui
    (# semaine débutant le dimanche)

    J'espère avoir été assez clair

    Merci beaucoup d'avance de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Snowmax86 Voir le message
    Bonjour,

    Vous pourriez cacher vos colonnes avec une boucle décrémentant de votre dernière cellule BN3 à P3 et en testant la semaine en cours à l'aide d'un Select Case pour traiter les différents cas suivants :
    Cas où la semaine en cours = 1 : Un message vous avertit que la date doit être au moins la semaine 2
    Cas où la semaine en cours est comprise entre 2 et 5. Toutes les colonnes dont la semaine de la date testée est > 5 sont cachées.
    Cas où la semaine en cours est comprise entre 49 et 52. Toutes les colonnes dont la semaine de la date testée est < 49 sont cachées.
    Cas autres : Les colonnes pour le cas semaine date < semaine en cours -1 ou semaine date > semaine en cours + 2 sont cachées.

  3. #3
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Bonjour Snowmax86,

    Semaine debutant le dimanche https://support.office.com/fr-fr/art...rs=fr-FR&ad=FRhttps://support.office.com/fr-fr/art...rs=fr-FR&ad=FR

    Proposition de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Option Explicit
     
    Sub masquerColonnes()
     
        Dim noSem As Integer, noSemi As Integer
        Dim rg As Range, rgMasq As Range, celli As Range
     
        With ActiveSheet
            'Init
            noSem = Application.WorksheetFunction.WeekNum(.Range("F3").Value, 1) ' debut de semaine = dimanche
            Set rg = .Range("P3:BN3")
     
            'R?afficher toutes les colonnes
            rg.EntireColumn.Hidden = False
     
            'Boucler sur les colonnes
            For Each celli In rg
                noSemi = celli.Value
                If noSemi < noSem - 1 Or noSem > noSem + 2 Then
                    If rgMasq Is Nothing Then
                        Set rgMasq = .Cells(1, celli.Column)
                    Else
                        Set rgMasq = Union(rgMasq, .Cells(1, celli.Column))
                    End If
                End If
            Next celli
     
            'Masquer
            If Not rgMasq Is Nothing Then rgMasq.EntireColumn.Hidden = True
        End With
     
    End Sub

  4. #4
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Par défaut Merci
    Wow, un gros merci sogedic. ça fonctionne #1. je ne pouvais demander mieux !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/12/2015, 16h37
  2. [XL-2007] macro pour afficher les résultats d'un TCD
    Par SEBALBERTVILLE dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/11/2014, 09h30
  3. [XL-MAC 2011] Macro pour supprimer toutes les colonnes contenant le mot "Date"
    Par PikPlace dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2014, 22h39
  4. [XL-2003] macro pour afficher les dates des troisièmes vendredi du mois
    Par julius999 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 28/10/2009, 18h39
  5. Réponses: 0
    Dernier message: 01/04/2009, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo