Supprimer les lignes et colonnes entièrement vides

Bonjour le forum,

J'aimerais avoir un code VBA qui supprime les lignes et colonnes seulement avec cette condition :

Pour les lignes : supprimer la ligne si toute les cellules de cette ligne sont vides

Pour les colonne : supprimer la colonne si toute les cellules de cette colonne sont vides

Bonjour Yassdu, bonjour le forum,

Excel affichera toujours 1.048.576 lignes après avoir supprimer les lignes vides et 16.384 colonnes. En revanche, tu peux les masquer mais pour cela il te faudra passer les lignes une par une pour vérifier la condition ainsi que pour les colonnes. Ça risque d'être long. Si au moins tu nous donnais une limite...

une limite je dirait 4000 en ligne et la colonne 20 (ou colonne T) avec un pas de 1

Bonjour Yassdu, bonjour le forum,

Désolé j'avais zappé ce fil...

Peut-être comme ça :

Sub Macro1()
Dim I As Integer 'déclare la variable I (Incrément)

Rows(4001 & ":" & Application.Rows.Count).Hidden = True 'masque les lignes 4001 à la dernière
For I = 1 To 4000 'boucle des lignes 1 à 40000
    'si la ligne est complètement vide, masque la ligne
    If Application.WorksheetFunction.CountBlank(Rows(I)) = Application.Columns.Count Then Rows(I).Hidden = True
Next I 'prochaine ligne de la boucle
Range(Columns(21), Columns(Application.Columns.Count)).Hidden = True 'masque les colonne 21 à la dernière
For I = 1 To 20 'boucle sur les 20 premières colonnes
    'si la colonne est complètement vide, masque la colonne
    If Application.WorksheetFunction.CountBlank(Columns(I)) = Application.Rows.Count Then Columns(I).Hidden = True
Next I 'prochaine colonne de la boucle
End Sub

Re,

Ton code fonctionne à merveille, mais je ne voulais pas qu'il m'arrache les ligne de mon fichier. C'est à dire que ma ligne max est 100 par exemple.

Une méthode vraiment astucieuse et plus simple que je viens à peine de trouver c'est de filtrer toute les colonnes sur "vides" puis ensuite tout supprimer, c'est long de renseigné le filtre à chaque colonne mais le résultat est là !

Je met quand même ton code en résolu.

Merci mille fois !

Re,

Désolé mais je ne comprends pas ! Qu'entends-tu par "arracher" ? Les lignes/colonnes sont juste masquées. Quant à les supprimer, je ne vois aucun intérêt à supprimer une ligne/colonne vide puisqu'elle sera recréée automatiquement...

Re,

Voici l'exemple ci dessous, si tu supprime la ligne 3, la ligne 4 passera en ligne 3. Seulement tu voit qu'a la ligne 2 il y a une cellule vide que je ne souhaite pas supprimé sa ligne.

Donc si on applique un filtre "vides" sur les 3 colonnes il ne restera que la ligne 3 qu'on pourra supprimé !

TautemTautemTautem
TautemTautem
TautemTautemTautem

C'est pas pratique mais bon, si tu a un code sa serait mieux bien sûr !

Re,

C'est beaucoup plus clair, alors le code que je t'avais proposé peux être adapté et t'éviter les filtres :

Sub Macro1()
Dim PL As Range 'déclare la variable PL (PLage)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim DC As Integer 'déclare la variable DC (Dernière Colonne)
Dim I As Integer 'déclare la variable I (Incrément)

Set PL = ActiveSheet.UsedRange 'définit la plage PL
DL = PL.SpecialCells(xlCellTypeLastCell).Row 'définit la dernière ligne DL
DC = PL.SpecialCells(xlCellTypeLastCell).Column 'définit la dernière colonne DC
For I = DL To 1 Step -1 'boucle inversée des lignes DL à 1 en remontant
    'si la ligne est complètement vide, supprime la ligne
    If Application.WorksheetFunction.CountBlank(Rows(I)) = Application.Columns.Count Then Rows(I).Delete
Next I 'prochaine ligne de la boucle
For I = DC To 1 Step -1 'boucle inversée des colonne DC à 1 en allant vers la gauche
    'si la colonne est complètement vide, supprime la colonne
    If Application.WorksheetFunction.CountBlank(Columns(I)) = Application.Rows.Count Then Columns(I).Delete
Next I 'prochaine colonne de la boucle
End Sub

À l'avenir, dis-toi bien qu'un petit fichier exemple évite de perdre autant de temps...

Merci mille fois !!!!!

Malheureusement mon pc est restreint dans les partage de document, j'essaye d'être le plus clair possible.

Encore une fois un sujet résolu

Rechercher des sujets similaires à "supprimer lignes colonnes entierement vides"