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 masquer des colonnes de plusieurs onglet selon la valeur d'une celulle


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    controle de gestion
    Inscrit en
    Juin 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : controle de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Macro pour masquer des colonnes de plusieurs onglet selon la valeur d'une celulle
    Bonjour,

    je cherche à faire une macro pour masquer des colonnes de plusieurs onglets (toujours les mêmes). J'aimerais avoir un bouton permettant de masquer les colonnes en fonction d'une valeur définie dans une celulle. Par exemple si dans feuille 1 en A1 = Janvier alors masquer colonnes C à M des feuilles 2, 3 et 4. Par contre si feuille 1 en A1 = Février alors masquer colonnes D à M des feuilles 2, 3 et 4 etc... jusque Novembre où l'on cache M et décembre où l'on ne cache rien.

    J'aimerais avoir un deuxième bouton qui permettant d'afficher ce qui a été caché sur le même principe de fonctionnement (référence à une celulle contenant une valeur).

    Je vous remercie par avance pour votre aide, j'imagine que si le père noel existe c'est sur ce forum!

    Joyeuses fêtes

  2. #2
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Bonsoir fnroux,
    Recopies le texte suivant dans un module. et essaye le pas à pas avec F8.
    Les tests pouvant ne pas correspondre à tes exigences. Le procédé de masquage est dans la boucle for. Tu pourras ensuite l'attribuer à un bouton de commande.

    cordialement.

    'Mode d'emploi: _
    S'assurer que les cellule A1 ou B1 referencées dans _
    le code ne sont pas vide. _
    Vous pouvez changer ces références si vous voulez. _
    Si la cellule "B1", devant contenir les noms de feuilles _
    est vide l'instruction ne se poursuivra pas. _
    Vous serez invité à définir les nom de feuilles.
    'Si le caractère de séparation des noms n'est pas une virgule, _
    une invite à définir le caractère
    'Si vous entrez un seul nom de feuille avec une virgule au début ou à la fin, _
    vous serez informé du nom incorrect. _
    Il en est de même pour un nom mal orthograpié ou absent.
    '_Si la valeur de la cellule A1 est 0 un avertissement sera affiché.
    'NB: La procédure en l'état n'a pas été testé.

    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
    33
    34
    35
    Sub MasqueColonne()
        Dim r As Range, Sh As String, colonne_debut As Integer, _
        colonne_fin As Integer, n As Long, Tab_sh
        '
        If InStr(1, Range("B1"), ",") = 0 Then _
            MsgBox "Le séparateur n'est pas reconnu ou la cellule de texte est vide!" _
            & Chr(13) & " Utilisez une virgule " & "comme séparateur de noms.", _
            vbExclamation, "Séparateur incorrect": Exit Sub
        n = Range("a1")
        If n = 0 Then _
            MsgBox "Vérifier la valeur de date.", vbCritical, "Erreur": Exit Sub
        On Error GoTo Fin
     
        Select Case Month(Range("a1"))
            Case Is = 1
                colonne_debut = 4
                colonne_fin = 12
            Case 2 To 11
                colonne_debut = 5
                colonne_fin = 12
            Case Is = 12
                colonne_debut = 3
                colonne_fin = 13
        End Select
        Tab_sh = Split(Range("B1"), ",")
        For n = 0 To UBound(Tab_sh)
            Worksheets(Tab_sh(n)).Columns.Hidden = False
            Worksheets(Tab_sh(n)).Range(Cells(1, colonne_debut), Cells(1, colonne_fin)).Columns.Hidden = True
        Next
        Exit Sub
    Fin:
        Err.Clear
        MsgBox "Le nom de feuille " & Chr(34) & Tab_sh(n) & Chr(34) & " n'éxiste pas!", vbInformation, "Erreur"
     
    End Sub
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/05/2014, 12h00
  2. [XL-2007] Macro pour récupérer des noms dans un onglet
    Par Nahtalie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/04/2013, 15h07
  3. [XL-2007] Macro pour masquer les colonnes avec cellules vides
    Par Cirrus22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/12/2009, 19h50
  4. [Formule]Macro pour masquer des formules dans une cellule
    Par Hellx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2007, 08h21
  5. [VBA-E] Problème pour masquer des colonnes.
    Par martiweb dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/04/2007, 02h53

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