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 des lignes d'une plage sous condititon


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Masquer des lignes d'une plage sous condititon
    Bonjour,

    Je cherche à masquer des lignes d'un tableau dont la colonne A est vide.
    J'ai réussi à faire ce code mais il y a une erreur ...

    Merci d'avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Masquer()
    derlign = Range("B" & Rows.Count).End(xlUp).Row
    For i = 1 To derlign
    If Range("A&i") = "" Then
    Rows("i").Select
    Selection.EntireRow.Hidden = True
    End If
    Next
    End Sub

  2. #2
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour,

    Evitez d'utiliser Select dans vos macros, c'est source d'erreur.

    Et pour ce qui est de votre erreur, elle provient vraisemblablement des 2 lignes suivantes (que je présente ici corrigées) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Range("A" & i).Text = "" Then
    Rows(i).EntireRow.Hidden = True

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Il serait bien plus simple d'utiliser un filtre : Ruban Données > Icone Filtrer.
    Ensuite, tu pourras masquer les vides en deux clics.
    Ca ne vaut pas le coup de faire une macro pour ça.

    Mais si ça te tente, il est aussi possible de placer un filtre en VBA.
    https://msdn.microsoft.com/fr-fr/lib.../ff193884.aspx
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Analyste
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Points : 7
    Points
    7
    Par défaut BenL
    Merci Ben !

    C'est nickel.
    C'est l'enregistreur de macro qui utilise souvent Select...

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Samsams Voir le message
    C'est l'enregistreur de macro qui utilise souvent Select...
    L'enregistreur automatique de macro est un outil formidable.
    Il permet de gagner un temps précieux en pointant du doigt l'enchainement d'objets pouvant conduire à la solution souhaitée.

    Cependant, il doit être utilisé convenablement.
    Il est déconseillé d'utiliser le code qu'il génère sans le comprendre (en utilisant l'aide VBA intégrée à Excel) et le nettoyer.
    Il a, en particulier, le défaut de mettre des Select / Sélection partout, ce qui entraine de mauvaises habitudes de codage. Select / Selection donne un code complexe à lire, ralentit l'exécution et donne un résultat peut agréable à l'écran pour l'utilisateur.

    Donc, je te conseille d'utiliser l'enregistreur de macro ponctuellement, pour comprendre comment réaliser une commande, plutôt que pour réaliser un enchaînement.
    Une fois le code généré, l'étudier et le comprendre pour savoir comment l'intégrer au mieux à sa macro.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Analyste
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Menhir
    Merci pour le conseil et pour votre temps.

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

Discussions similaires

  1. Masquer des lignes avec une condition
    Par mjp06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/03/2019, 19h23
  2. [XL-2007] Comment supprimer des lignes d'une plage dans une colonne sous condition
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/06/2015, 11h34
  3. Réponses: 8
    Dernier message: 24/01/2010, 21h11
  4. Réponses: 1
    Dernier message: 15/09/2008, 10h43

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