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 :

Afficher que les feuilles sélectionnées [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2012
    Messages : 121
    Points : 78
    Points
    78
    Par défaut Afficher que les feuilles sélectionnées
    Bonjour à la communauté

    Je fais présentement un outil pour aider les professionnels à la planification d'une activité.
    Cet outil possède plusieurs feuille, qui mesurent toutes un éléments particulier.
    J'aimerais débuter mon programme afin que l'utilisateur puisse choisir, à l'avance les feuilles qui vont s'afficher en fonction de ses propres besoins.
    Par exemple:
    1-L'utilisateur a besoin des éléments suivant: les objectif visés, le matériel nécessaire, le personnel nécessaire.
    2-L'utilisateur n'a pas besoin: Du bilan financier.

    L'utilisateur ouvre donc le fichier excel et dans la première page, il sélectionne les trois items dont il a besoin, mais pas le bilan financier.

    Comment faire en sorte que le bilan financier ne soit pas considéré par le programme?

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste. Créer un Userform nommé "UserForm1" (valeur par défaut si c'est le premier), poser un bouton nommé "CommandButton1" (aussi valeur par défaut), mettre le code ci-dessous dans le module de la form :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
     
    Private Sub UserForm_Initialize()
     
        Dim CaseACocher As MSForms.CheckBox
        Dim Feuille As Worksheet
        Dim Haut As Integer
        Dim Gauche As Integer
        Dim Ligne As Integer
        Const Largeur As Integer = 150
        Const Hauteur As Integer = 15
        Const Espace As Integer = 6
     
        With Me
     
            .Width = 200
            .Height = 300
     
        End With
     
        Haut = 6
        Gauche = 6
     
        For Each Feuille In Worksheets
     
            Set CaseACocher = Controls.Add("Forms.CheckBox.1", "Chk" & Feuille.Name)
     
            With CaseACocher
     
                .Left = Gauche
                .Top = Haut
                .Width = Largeur
                .Height = Hauteur
                .Caption = Feuille.Name
                If Feuille.Visible = True Then .Value = 1
     
            End With
     
            Haut = Haut + Hauteur + Espace
     
        Next Feuille
     
        Set CaseACocher = Nothing
     
        With Me.CommandButton1
     
            .Width = 60
            .Height = 25
            .Top = Haut
            .Left = Gauche
            .Caption = "OK"
     
        End With
     
    End Sub
     
    Private Sub CommandButton1_Click()
     
        Dim Ctrl As Control
     
        For Each Ctrl In Me.Controls
     
            If TypeName(Ctrl) = "CheckBox" Then
     
                If Ctrl.Value = True Then
     
                    Worksheets(Ctrl.Caption).Visible = True
                    I = I + 1
     
                End If
            End If
        Next
     
        Unload Me
     
    End Sub
    Dans le module du classeur, mettre ce 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
     
    Private Sub Workbook_Open()
     
        Dim Fe As Worksheet
     
        For Each Fe In Worksheets
     
            'cache toutes les feuilles sauf une
            On Error Resume Next
            Fe.Visible = False
     
        Next Fe
     
        UserForm1.Show
     
    End Sub
    Enregistrer puis, soit fermer le classeur et le ré-ouvrir, soit exécuter la proc "Workbook_Open" (curseur dedans puis F5)

    Hervé.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2012
    Messages : 121
    Points : 78
    Points
    78
    Par défaut
    Bonjour Hervé

    Vraiment épatant votre programme, merci!!!
    Il y a toute fois quelques éléments qui ne fonctionnent pas parfaitement
    Effectivement, votre programme me permet de visualiser toute les pages de mon VBA et des cases me permettent de sélectionner les pages que je désire (voir l'image).
    -Toutefois, je ne sais pas quoi faire pour valider mon choix (un bouton quelconque à presser). J'ai ajouté le CommandButton1 comme vous l'aviez spécifier mais je n'arrive à cliquer dessus (il reste en mode création).
    -Une fois la sélection faite (certaines feuilles ont disparues), je n'arrive pas a faire réapparaitre les feuilles (je n'ai accès qu'à la dernière).



    Merci encore Hervé, jamais je n'aurais cru trouver une solution à mon problème!!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2012
    Messages : 121
    Points : 78
    Points
    78
    Par défaut
    Hervé, tu es vraiment mon héro...

    Quelques modifications ont permis de faire fonctionner le programme ( en fait, la valeur de ".Height" (initialement à 300) ne permettait pas au bouton de s'afficher (je l'ai simplement augmenté à 400)). J'ai aussi ajouté un bouton aide!!!
    Ton oeuvre est une vedette au bureau!!!



    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    Private Sub UserForm_Initialize()
     
        Dim CaseACocher As MSForms.CheckBox
        Dim Feuille As Worksheet
        Dim Haut As Integer
        Dim Gauche As Integer
        Dim Ligne As Integer
        Const Largeur As Integer = 150
        Const Hauteur As Integer = 15
        Const Espace As Integer = 6
     
        With Me
     
            .Width = 200
            .Height = 400
     
        End With
     
        Haut = 16
        Gauche = 16
     
        For Each Feuille In Worksheets
     
            Set CaseACocher = Controls.Add("Forms.CheckBox.1", "Chk" & Feuille.Name)
     
            With CaseACocher
     
                .Left = Gauche
                .Top = Haut
                .Width = Largeur
                .Height = Hauteur
                .Caption = Feuille.Name
                If Feuille.Visible = True Then .Value = 1
     
            End With
     
            Haut = Haut + Hauteur + Espace
     
        Next Feuille
     
        Set CaseACocher = Nothing
     
        With Me.CommandButton1
     
            .Width = 60
            .Height = 25
            .Top = Haut
            .Left = Gauche
            .Caption = "Valider"
     
        End With
     
    End Sub
     
    Private Sub CommandButton1_Click()
     
        Dim Ctrl As Control
     
        For Each Ctrl In Me.Controls
     
            If TypeName(Ctrl) = "CheckBox" Then
     
                If Ctrl.Value = False Then
     
                    Worksheets(Ctrl.Caption).Visible = False
                    I = I + 1
     
                ElseIf Ctrl.Value = True Then
     
                    Worksheets(Ctrl.Caption).Visible = True
                    I = I + 1
     
                End If
            End If
        Next
     
        Unload Me
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_Open()
     
        Dim Fe As Worksheet
     
        For Each Fe In Worksheets
     
            On Error Resume Next
            Fe.Visible = True
     
        Next Fe
     
        UserForm1.Show
     
    End Sub

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/04/2008, 14h57
  2. Réponses: 10
    Dernier message: 12/04/2006, 10h56
  3. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50
  4. n'afficher que les "print" dans query annalyser
    Par sky_perrinos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/12/2004, 10h58
  5. [XML] n'afficher que les 3 premiers!
    Par Little Sloth dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/06/2004, 10h59

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