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 :

Cacher des lignes sur feuilles actives


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Cacher des lignes sur feuilles actives
    Bonjour,

    je voudrais appliquer la macro ci dessous à tous les onglets selectionnés.
    Quand j'essaie de faire tourner la boucle, ca ne marche que sur la premiere feuille (peut etre un probleme de variable ?)

    merci pour votre aide


    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
    Sub HideRows()
    
    Application.ScreenUpdating = False
      
      Dim rngCell As Range, rngToHide As Range, rngToCheck As Range 
      Set rngToCheck = ActiveSheet.Range("E44:E147,E151:E254")
    
        For Each rngCell In rngToCheck.Cells
            If rngCell.Value = " " Or rngCell.Value = 0 Then
                If rngToHide Is Nothing Then
                    Set rngToHide = rngCell
                Else
                    Set rngToHide = Union(rngToHide, rngCell)
                End If
            End If
         
        Next rngCell
        rngToCheck.EntireRow.Hidden = False
        If Not rngToHide Is Nothing Then
            rngToHide.EntireRow.Hidden = True
        
        End If
        Application.ScreenUpdating = True
       
    End Sub

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    Quand j'essaie de faire tourner la boucle, ca ne marche que sur la premiere feuille (peut etre un probleme de variable ?)
    sans analyser ton code, je vois tout de même que tu n'a pas de boucle pour les différentes feuilles à traiter,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rngToCheck = ActiveSheet.Range("E44:E147,E151:E254")
    ne veut pas dire que tu vas traiter toutes les feuilles sélectionnées mais uniquement la feuille active

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    et quel serait le code a ajouter?

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Pour des feuilles choisies, un exemple, mais je ne peux controler ton code car il manque des renseignements
    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
      Dim rngCell As Range, rngToHide As Range, rngToCheck As Range
      Dim Sh As Worksheet
      For Each Sh In Sheets(Array("Feuil1", "Feuil3", "Feuil5"))
          Set rngToCheck = Sh.Range("E44:E147,E151:E254")
            For Each rngCell In rngToCheck.Cells
              If rngCell.Value = " " Or rngCell.Value = 0 Then
                If rngToHide Is Nothing Then 'là je ne vois pas que représente "rngToHide"
                  Set rngToHide = rngCell
                Else
                  Set rngToHide = Union(rngToHide, rngCell)
                End If
              End If
          Next rngCell
          rngToCheck.EntireRow.Hidden = False
          If Not rngToHide Is Nothing Then
              rngToHide.EntireRow.Hidden = True
          End If
      Next Sh

Discussions similaires

  1. [Toutes versions] Vba: Copier des lignes sur une autre feuille
    Par yassxavi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/02/2015, 11h48
  2. Excel-copier des lignes sur une autre feuille
    Par petecul dans le forum Excel
    Réponses: 7
    Dernier message: 13/09/2007, 02h56
  3. Ordre de sélection des lignes sur une table DB2
    Par Pierre Formosa dans le forum DB2
    Réponses: 1
    Dernier message: 26/04/2006, 20h03
  4. Cacher des lignes d'un tableau
    Par frechy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/07/2005, 12h05

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