Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 effacre ligne et colonne vides

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

coco1969

XLDnaute Nouveau
Bonjour à tous,
Quelqu'un pourrais m'aider, j'aimerais éliminer les lignes et colonnes vide d'un rapport qui m'a été envoyé MAIS pas trop pratique à utiliser .
Pourriez-vous SVP y insérer le code VBA ou autre afin que je visualise dans le fichier existant SI cela n'est pas trop demander ?????
 

Pièces jointes

Bonjour Coco, Riton, bonjour le forum,

Essaie ce code :

Code:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim NC As Range 'déclare la variable NC (Nombre de Colonnes)
Dim I As Range 'déclare la variable I (Incrément)
Dim NL As Range 'déclare la variable NL (Nombre de Lignes)

Set O = Worksheets("Sheet1") 'définit l'onglet O
Set PL = O.UsedRange 'définit la plage PL
NC = PL.Columns.Count 'définit le nombre de colonnes NC de la plage PL
For I = NL To 1 Step -1 'boucle inversée sur toutes les lignes I de la plage PL (de la dernière à la première)
    'si le nombre de cellules vide de la ligne I est égale au nombre de colonne NC, supprime la ligne
    If Application.WorksheetFunction.CountBlank(PL.Rows(I)) = NC Then PL.Rows(I).EntireRow.Delete
Next I 'prochaine ligne de la boucle
NL = PL.Rows.Count 'définit le nombre de lignes NL de la plage PL
For I = NC To 1 Step -1 'boucle inversée sur toutes les colonnes I de la plage PL (de la dernière à la première)
    'si le nombre de cellules vide de la colonne I est égale au nombre de lignes NL, supprime la colonne
    If Application.WorksheetFunction.CountBlank(PL.Columns(I)) = NL Then PL.Columns(I).EntireColumn.Delete
Next I 'prochaine colonne de la boucle
End Sub
 
Bonjour

salut Robert 🙂 , pour les variables numériques, les déclarer plutôt ainsi, non ?​

Dim NC As Long 'déclare la variable NC (Nombre de Colonnes)
Dim I As Long 'déclare la variable I (Incrément)
Dim NL As Long 'déclare la variable NL (Nombre de Lignes)

Au revoir
 
Bonjour coco1969, riton00, Robert, Si...

La suppression des lignes ou colonnes une par une peut prendre beaucoup de temps si elles sont nombreuses.

Avec cette macro c'est bien plus rapide :
Code:
Sub SupprimerLignesColonnesVides()
Application.ScreenUpdating = False
On Error Resume Next 'pour les SpecialCells si aucune valeur d'erreur
With ActiveSheet.UsedRange
  '---suppression des colonnes vides---
  .Rows(.Rows.Count + 1) = "=1/SIGN(COUNTA(R1C:R[-1]C))"
  .Rows(.Rows.Count + 1) = .Rows(.Rows.Count + 1).Value 'supprime les formules
  .Resize(.Rows.Count + 1).Sort .Rows(.Rows.Count + 1), xlAscending, Orientation:=xlLeftToRight 'tri pour accélérer
  .Rows(.Rows.Count + 1).SpecialCells(xlCellTypeConstants, 16).EntireColumn.Delete
  .Rows(.Rows.Count + 1).ClearContents
  '---suppression des lignes vides---
  .Columns(.Columns.Count + 1) = "=1/SIGN(COUNTA(RC1:RC[-1]))"
  .Columns(.Columns.Count + 1) = .Columns(.Columns.Count + 1).Value 'supprime les formules
  .Resize(, .Columns.Count + 1).Sort .Columns(.Columns.Count + 1), xlAscending, Orientation:=xlTopToBottom 'tri pour accélérer
  .Columns(.Columns.Count + 1).SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
  .Columns(.Columns.Count + 1).ClearContents
End With
With ActiveSheet.UsedRange: End With 'actualise les barres de défilement
End Sub
Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Super Un grand merci c'est exactement ce don't j'ai besoin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
773
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…