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 :

Supprimer des lignes "cachés" dans excel [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Par défaut Supprimer des lignes "cachés" dans excel
    Bonjour, j'ai une feuille excel avec des lignes cachés, lorsque je lance mes macros, cela ne fonctionne pas en raison de l'information cachée dans ces lignes... Je voudrais élaborer une macro qui va premièrement supprimer entièrement chaque lignes cachées.

    J'ai fait ce bout de code, j'aimerais le compléter mais il semble que je ne définisse pas bien ma variable lp, quelqu'un peut m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Sub deletehidden()
    Dim lp As Long
    For lp = 256 To 1 Step -1 'loop through all columns
    If Columns(lp).EntireColumn.Hidden = True Then Columns(lp).EntireColumn.Delete Else
    Next
    For lp = 65536 To 1 Step -1 'loop through all rows
    If Rows(lp).EntireRow.Hidden = True Then Rows(lp).EntireRow.Delete Else
    Next
    End Sub

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Bonjour,

    As tu vraiment besoin du Else ? Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    For lp = Cells.SpecialCells(xlCellTypeLastCell).Column To 1 Step -1 'loop through all columns
    If Columns(lp).EntireColumn.Hidden = True Then Columns(lp).EntireColumn.Delete 
    Next lp
     
    For lp = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1 'loop through all rows
    If Rows(lp).EntireRow.Hidden = True Then Rows(lp).EntireRow.Delete Else
    Next lp

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Par défaut
    Bonjour,


    Bien vu pour le else.

    Cependant, il reste toujours cet erreur
    Erreur de compilation : Variable non définie. (lp)

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    J'ai testé ça et ça marche parfaitement chez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub deletehidden()
     
    Dim col, lin As Long
     
    For col = Cells.SpecialCells(xlCellTypeLastCell).Column To 1 Step -1 'loop through all columns
    If Columns(col).EntireColumn.Hidden = True Then Columns(col).EntireColumn.Delete
    Next
    For lin = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1 'loop through all rows
    If Rows(lin).EntireRow.Hidden = True Then Rows(lin).EntireRow.Delete
    Next
     
    End Sub
    Cordialement

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Par défaut
    Ça fonctionne pour les colonnes mais on dirait que le programme ne s'arrête jamais. Ça fait planter mon excel, trop de calculs on dirait !

    De plus, pour les lignes, ça ne fonctionne pas... À moins que ce soit moi qui ait mal compris, mais les petits signes '+' qui font ouvrir un panneau de lignes, ce n'est pas des lignes 'hidden' en fin de compte ? Petit exemple ici :

    Nom : +.JPG
Affichages : 969
Taille : 229,1 Ko

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Citation Envoyé par antoinepoirier Voir le message
    De plus, pour les lignes, ça ne fonctionne pas... À moins que ce soit moi qui ait mal compris, mais les petits signes '+' qui font ouvrir un panneau de lignes, ce n'est pas des lignes 'hidden' en fin de compte ? Petit exemple ici :
    Je pense que ce sont des données groupées ! C'est une fonction d'Excel ! + pour dissocier et - pour grouper je crois et donc ce ne sont pas des lignes masquées.

  7. #7
    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 heu....
    bonjour
    tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test1()
        With ActiveSheet
            For Each cel In .UsedRange
                If cel.EntireRow.Hidden = True Then cel.EntireRow.Delete
              Next  
           For Each cel In .UsedRange
             If cel.EntireColumn.Hidden = True Then cel.EntireColumn.Delete
           next    
        End With
    End Sub
    ou alors encore plus simple en ecriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test2()
        With ActiveSheet
            For Each cel In .UsedRange
                If cel.EntireRow.Hidden = True Or _
                cel.EntireColumn.Hidden = True Then cel.EntireRow.Delete
            Next
        End With
    End Sub
    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

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Par défaut
    Merci Patrick,

    Nous en sommes venus à la conclusion que mes données sont 'groupées' et non 'cachées'... Une idée ?

    @Aziz Merci énormément de ton aide

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

Discussions similaires

  1. [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
  2. Réponses: 5
    Dernier message: 30/06/2011, 21h15
  3. Réponses: 5
    Dernier message: 11/08/2008, 15h25

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