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 de la première cellule vide à la dernière cellule vide d'un tableau [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Masquer de la première cellule vide à la dernière cellule vide d'un tableau
    Bonjour,

    Etant amateur dans l'utilisation et la création de macro VBA, je me tourne vers vous, ô experts chevronnés dans la programmation pour m'aider à résoudre un petit problème.
    En fait, je cherche à masquer toutes les lignes vides d'un tableau contenant 2000 lignes, de manière à ce que la ligne de calcul en bas de ce dis tableau apparaisse directemment à la suite de celui-ci...Pour cela, j'ai réalisé la macro suivante :

    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
    Sub masquer_XXX()
     
    Application.ScreenUpdating = False
     
    Dim i As Long
     
    Set p = Sheets("Données XXX").Range("donneesXXX") (j'ai donné des noms à mes plages pour me simplifier la tache)
    Set m = Sheets("Données XXX").Range("nomXXX") (j'ai donné des noms à mes plages pour me simplifier la tache)
     
    i = 1
     
    For i = 1 To m.Rows.Count
     
        If m.Cells(i, 1) = "" Then
     
        p.Rows(i).Hidden = True
     
        End If
     
    Next i
     
    Application.ScreenUpdating = True
     
    End Sub
    Celle-ci fonctionne parfaitement, au soucis près que cela peut durer plusieurs minutes!!
    Ceci étant dit, n'est-il pas possible, vu que je connais exactemment la dernière ligne de mon tableau (ce sera toujours la ligne 2000), de sélectionner la première ligne vide jusqu'à la ligne 2000 de manière à réduire le temps de traitement?
    En gros quelque chose de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 1 To m.Rows.Count
     
        If m.Cells(i, 1) = "" Then
     
        Rows("i;2000").select
        Selection.EntireRow.Hidden = True
    Mais en faisant que cela marche

    Merci de votre aide...

    Ps : il est possible que tout ceci ne soit pas très clair, je suis à disposition pour me réexpliquer...hihi ^^
    Encore merci.

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,


    Pour masquer les lignes vides tu pourrai utiliser specialcells.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette réponse rapide,

    Je me renseigne de suite sur cette nouvelle fonction pour moi...

    Si j'ai des soucis pour l'appliquer, il y a des chances que cela se sache...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Salut,

    Avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
     
    Application.ScreenUpdating = False
     
    For i = Range("A65536").End(xlUp).Offset(1, 0).Row To 2000 'De la ligne suivant la dernière cellule remplie de la colonne A à 2000
        Rows(i).Hidden = True
    Next
     
    Application.ScreenUpdating = True
     
    End Sub
    c'est instantané pour moi

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci Dead78 pour ta réponse rapide et qui fonctionne parfaitement, je l'ai effectivement testée.
    Mais j'ai également réussi à la faire fonctionner avec la fonction specialcells, via la macro suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set ligne = Sheets("Données XXX").Range("donneesXXX")
     
    ligne.Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
    Le temps de réponse est nettement plus cours...Quasi instantanée...
    Reste à faire un choix entre les deux!!

    Mais en tout cas merci bien, car je luttais depuis bien longtemps et j'en avait marre d'attendre 5 min que le traitement soit fini!!

    Vous êtes des maitres, et votre élève vous salue.

  6. #6
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Vous êtes des maitres, et votre élève vous salue.
    Merci, même si pour mon cas c'est très loin de la réalité (tu verras il y a de grand maitres ici) ça fait toujours plaisir, n'est-ce pas DeaD78 !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Tout à fait d'accord ! Ca fait vraiment plaisir des petits messages du genre de temps en temps ! Et pour ma part, avant de passer maître, y'a aussi beaucoup de boulot... Je connais beaucoup de gens sur le forum à côté de qui je fais vraiment pâle figure !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/02/2015, 16h29
  2. Réponses: 0
    Dernier message: 04/09/2013, 17h05
  3. renvoi dernière cellule non vide d'une colonne
    Par emilie31 dans le forum Excel
    Réponses: 5
    Dernier message: 29/09/2008, 15h26
  4. Dernière cellule non vide d'une colonne
    Par RéviAT dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/02/2008, 14h43
  5. masquer les lignes dans une zone si une cellule de la ligne est vide
    Par keguira dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/11/2006, 18h21

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