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 :

masquer / afficher lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Accompagnateur personnes handicapés
    Inscrit en
    Juillet 2016
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Accompagnateur personnes handicapés

    Informations forums :
    Inscription : Juillet 2016
    Messages : 111
    Par défaut masquer / afficher lignes
    Bonjour,

    J'ai un code qui met permet par un clic droit sur des cellules (B56, B65, B74 ... B182) de masquer ou afficher des lignes, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
     
    Private Sub Worksheet_BeforeRightClick(ByVal R As Range, Cancel As Boolean)
      If Intersect(R, [B56:B182]) Is Nothing Or (R.Row - 2) Mod 9 Then Exit Sub
      Dim P As Range
      Cancel = True
      Set P = R(3, 1).Resize(7)
      P.EntireRow.Hidden = Not P.EntireRow.Hidden
      If P.EntireRow.Hidden = True Then Exit Sub
      R(4, 1).Resize(3).EntireRow.Hidden = True 'pour cacher
      R(9, 1).EntireRow.Hidden = True
    End Sub

    Serait-il possible à l'aide d'un bouton de commande "Tout Masquer" de lancer cette procédure pour toutes la feuille d'un coup de B56:B182
    Je veux quand même garder la procédure actuelle pour pouvoir par un clic droit masquer uniquement les lignes par personne, ce qui fonctionne trés bien.

    Je vous remercie de votre aide

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour,

    Avec un bouton bascule (ToggleButton) sur la feuille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ToggleButton1_Click()
     Range("B6:B182").EntireRow.Hidden = ToggleButton1.Value
     ToggleButton1.Caption = IIf(ToggleButton1, "Tout Afficher", "Tout Masquer")
    End Sub
    dans les propriétés, initialiser Value à False et Caption à 'Tout Masquer'.

    si on clique, les lignes sont masquées, le bouton se trouve alors en position "enfoncée" avec affichage= 'Tout Afficher'
    si on clique à nouveau, les lignes sont affichées, le bouton est en position "relevée" avec affichage= 'Tout Masquer'

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Accompagnateur personnes handicapés
    Inscrit en
    Juillet 2016
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Accompagnateur personnes handicapés

    Informations forums :
    Inscription : Juillet 2016
    Messages : 111
    Par défaut
    Désolé mais je me suis mal expliqué, ce n'est pas ce que je cherchais

    Le code suivant me permet par exemple
    quand je fais un clic droit sur B56 masquer (pour la plage B56 à B64) toutes les lignes de B56 à B64 sauf B56 et B57
    et quand je refais un clic droit sur B56 afficher les lignes 56,57,58,62,63 et masquer les lignes 59,60,61,64

    Idem quand je fis clic droit sur B65 pour la plage B65 à B73 : masquer toutes les lignes de B65 à B73 sauf B65 et B66 - et au prochain clic droit afficher les lignes 65,66,67,71,72 et masquer les lignes 68,69,70,73
    Idem pour B74 pour la plage B74 à B82
    et ainsi de suite
    jusqu'à B182
    Ce code fonctionne bien

    Mais je voudrais avec un bouton de commande que toutes ces opérations se fasse automatiquement pour tous les blocs de plages
    sans faire clic droit sur chaque cellule de début de bloc

    Peut-être avec une boucle dans ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_BeforeRightClick(ByVal R As Range, Cancel As Boolean)
      If Intersect(R, [B56:B182]) Is Nothing Or (R.Row - 2) Mod 9 Then Exit Sub
      Dim P As Range
      Cancel = True
      Set P = R(3, 1).Resize(7)
      P.EntireRow.Hidden = Not P.EntireRow.Hidden
      If P.EntireRow.Hidden = True Then Exit Sub
      R(4, 1).Resize(3).EntireRow.Hidden = True 'pour cacher
      R(9, 1).EntireRow.Hidden = True
    End Sub
    Ce n'est peut-être pas très clair

    Merci

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjou
    sauf erreur de ma part c'est pas le premier post sur ce meme sujet me semble t'il
    c'est pas tres apprécié les doubles posts
    cela dit
    j'espere que tu comprends que
    Le code suivant me permet par exemple
    quand je fais un clic droit sur B56 masquer (pour la plage B56 à B64) toutes les lignes de B56 à B64 sauf B56 et B57
    et quand je refais un clic droit sur B56 afficher les lignes 56,57,58,62,63 et masquer les lignes 59,60,61,64
    represente 3 positions d'affichage
    1. toute visible
    2. masquer toutes les lignes de B56 à B64 sauf B56 et B57
    3. afficher les lignes 56,57,58,62,63 et masquer les lignes 59,60,61,64



    ca devrait deja te mettre la puce a l'oreille du comment faire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    re et bonjour patricktoulon

    Sans doute mal réveillé, j'avais lu en travers.

    Une solution possible = adaptation dans une boucle dans un ToggleButton du code existant.

    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
    Private Sub ToggleButton1_Click()
    Dim P As Range, R As Range
        For i = 56 To 173 Step 9
            Set R = Range("B" & i)
            Set P = R(3, 1).Resize(7)
            P.EntireRow.Hidden = True
            If Not ToggleButton1 Then
                P.EntireRow.Hidden = Not P.EntireRow.Hidden
                R(4, 1).Resize(3).EntireRow.Hidden = True 'pour cacher
                R(9, 1).EntireRow.Hidden = True
            End If
        Next
     
     ToggleButton1.Caption = IIf(ToggleButton1, "Tout Afficher", "Tout Masquer")
    End Sub

    Sur les 3 positions, n'effectue que les 2 et 3, comme le code du Worksheet_BeforeRightClick.

    A+

  6. #6
    Membre confirmé
    Homme Profil pro
    Accompagnateur personnes handicapés
    Inscrit en
    Juillet 2016
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Accompagnateur personnes handicapés

    Informations forums :
    Inscription : Juillet 2016
    Messages : 111
    Par défaut
    Ok. Merci beaucoup ��

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

Discussions similaires

  1. [XL-MAC 2016] Masquer-Afficher ligne en simplifiant le code
    Par myk636 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/12/2017, 16h43
  2. [XL-2010] Masquer/afficher lignes selon valeurs dans colonne
    Par Wyrgle dans le forum Excel
    Réponses: 7
    Dernier message: 02/01/2017, 09h40
  3. [XL-2010] Masquer/afficher ligne vides dans un range dynamique
    Par Algolik dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/10/2016, 10h35
  4. [XL-2007] Masquer/afficher ligne/colonne par rapport à une date
    Par uwestern dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/07/2013, 18h43
  5. Liste déroulante : afficher/masquer des lignes
    Par arxpression dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/08/2006, 16h50

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