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 :

Seléctionner des feuilles en fonction de la valeur d'une cellule [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Seléctionner des feuilles en fonction de la valeur d'une cellule
    Bonjour à tous,

    Je remercie d'avance les personnes qui pourront m'aider. Je galère sur du code VBA qui ne me paraissait pas très compliqué au départ malgré mon niveau de débutant.
    Voilà, j'ai un fichier Excel comprennant plusieurs feuilles.

    La première feuille étant la feuille de garde, elle récapitule, toutes les autres feuilles du classeur. Une case à cocher est en face de chaque titre des feuilles. (chaque case à cocher est liée à une cellule, c'est donc sur la valeur de cette cellule que je travaille).

    Je souhaiterais en fonction de la valeur de la case à cocher, sélectionner cette feuille ou non.

    Le but étant par la suite d'imprimer, seulement les feuilles sélectionnées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectSheet(ByVal Target As Range)
     
     If Sheets("Feuille de garde").Range("D34").Value Like "VRAI" Then
     
        Sheets("1-Fiche").Select
     
       End If
     
    End Sub
    Merci encore pour votre aide!!

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 907
    Points : 28 882
    Points
    28 882
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Où as-tu trouvé cette procédure événementielle Worksheet_SelectSheet(ByVal Target As Range) ?
    N'aurais-tu pas plus facile de créer un USERFORM avec un ListBox ou ComboBox affichant les feuilles en vue de les sélectionner ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Par exemple, sur ta feuille Feuille de garde, tu as en colonne C le nom exact des feuilles à imprimer, en colonne D les cellules liées à tes checkbox
    Ce code permet d'imprimer les feuilles dont les checkbox sont cochées. (dans le code je prends les cellules de C34 à C36 (pour le nom des feuilles)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Impr()
    Dim i As Integer
     
    With Sheets("Feuille de garde")
        For i = 34 To 36                             ' à adapter
            If .Range("D" & i).Value = True Then Sheets(CStr(.Range("C" & i).Value)).PrintOut
        Next i
    End With
    End Sub
    On peut envisager une boucle sur les Checkbox avec le nom des feuilles à imprimer dans la Caption des checkbox
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci à tous les deux.

    #Corona j'ai récupéré ce code au départ sur des petits bouts de code qui se rapprochaient de ce que je voulais. Je vais essayer avec USERFORM

    #Mercatog, ton code fonctionne bien mais je souhaiterais imprimer toutes les feuilles sur un même document (j'imprime en PDF).
    Avec la boucle, cela imprime chaque feuille indépendement.

    Merci encore

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 907
    Points : 28 882
    Points
    28 882
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Si c'est pour réunir dans un seul document pdf, plusieurs feuilles sélectionnées, c'est possible.
    Par exemple si tu utilises l'enregistreur de macro, tu obtiendras.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets(Array("1-Fiche", "3-Fiche")).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    En adaptant le code que t'as donné mercatog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub PrintSheets()
     Dim i As Integer, c As Integer
     Dim Feuille() As String
     c = -1
     With Sheets("Feuille de garde")
       For i = 4 To 6  ' à adapter
        If .Range("B" & i) Then
         c = c + 1: ReDim Preserve Feuille(c)
         Feuille(c) = Sheets(CStr(.Range("D" & i))).Name
        End If
       Next i
     End With
     Sheets(Feuille).PrintOut Copies:=1
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup Corona.

    Ton code fonctionne super bien, je voudrais juste rajouter dans l'impression la feuille de garde par défaut.

    Sinon, dans ton code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     c = c + 1: ReDim Preserve Feuille(c)
    C'est ce qui te permet de garder sélectionné chaque feuille?

    Merci pour ton aide

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 907
    Points : 28 882
    Points
    28 882
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Feuille(c) est une variable dimensionnée contenant le nom de la feuille.
    Redim est l'instruction qui redimensionne un tableau mais qui initialise le tableau. Preserve est l'instruction qui placée après Redim permet de conserver les valeurs contenues dans le tableau.
    Une petite lecture de ce didacticiel t'en apprendra plus.
    Voici un code à adapter qui ajoute une feuille nommée [Page de garde]
    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
    Sub PrintSheets()
     Dim i As Integer, c As Integer
     Dim Feuille() As String
     c = 0: ReDim Preserve Feuille(0)
     Feuille(0) = "Page de garde"
     With Sheets("Feuille de garde")
       For i = 4 To 6  ' à adapter
        If .Range("B" & i) Then
         c = c + 1: ReDim Preserve Feuille(c)
         Feuille(c) = .Range("D" & i)
        End If
       Next i
     End With
     Sheets(Feuille).PrintOut Copies:=1
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci Corona, ton code fonctionne super bien.

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

Discussions similaires

  1. Copier coller des lignes en fonction de la valeurs d'une cellule
    Par Tyu38 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/09/2014, 09h38
  2. Imprimer des feuilles en fonction de la valeur d'une cellule
    Par jdeheul dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 22/03/2013, 13h47
  3. Réponses: 5
    Dernier message: 21/12/2011, 08h31
  4. Réponses: 0
    Dernier message: 09/07/2011, 21h52
  5. modifier le nom de la feuille en fonction de la valeur d'une cellule
    Par triaguae dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2008, 00h40

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