Supprimer cellule vide

Mojojo53

XLDnaute Nouveau
Bonjour,
Je n'arrive pas à supprimer les cellules vides dans mon fichier. J'aimerais quand appuyant sur le bouton, ça supprime les cellule jaune. Voici mon fichier pour comprendre ma requête.
 

Pièces jointes

  • essaicellulevide1.xlsm
    42.7 KB · Affichages: 26

DoubleZero

XLDnaute Barbatruc
Re : Supprimer cellule vide

Bonjour, Mojojo53, le Forum,

Comme ceci ?

Code:
Option Explicit
Sub Cellules_vides_supprimer()
    Dim i As Long
    Application.ScreenUpdating = False
    With Sheets("Feuil1")
        For i = .Cells(Rows.Count, "d").End(xlUp).Row To 6 Step -1
            If .Range("d" & i) = "" Then .Range("d" & i).Resize(, 2).Delete Shift:=xlUp
        Next
    End With
    Application.ScreenUpdating = True
End Sub

A bientôt :)
 

job75

XLDnaute Barbatruc
Re : Supprimer cellule vide

Bonsoir Mojojo53, bonsoir chère ânesse :)

Pourquoi pas un simple tri :

Code:
Sub Supprimercellulevide()
With Range("D6:E" & Rows.Count)
  .Sort [D6], xlAscending, [E6], , xlAscending, Header:=xlNo
  .Interior.ColorIndex = xlNone 'facultatif
End With
End Sub
Bonne nuit.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Supprimer cellule vide

Bonjour à tous,

Un essai en reprenant une ancienne tentative de procédure paramétrée:
Code:
sub SupprLignesVides(xplage As Range, Optional EnValeur)

  • xplage désigne la plage à traiter
  • Si Envaleur est présent, on ne considère que les valeurs de la plage -> les formules seront transformées en valeurs

Exemple d'utilisation:
  • SupprLignesVides Sheets("Toto").range("a:b")
  • SupprLignesVides Sheets("Toto").range("a1:e999"), 0

Code de SupprLignesVides (dans Module1) :
VB:
Sub SupprLignesVides(xplage As Range, Optional EnValeur)
' supprimer les lignes vides d'une plage
' si EnValeur est présent, on transforme le tableau en valeur
'       ==> les formules sont alors perdues
Dim maplage, T, i&, j&, n&, s, Tplus
  If xplage Is Nothing Then Exit Sub
  Application.ScreenUpdating = False
  With xplage.Parent
    Set maplage = Intersect(.UsedRange, xplage.Areas(1))
    If maplage Is Nothing Then Exit Sub
    If maplage.Rows.Count = 1 Then Exit Sub
    T = maplage.Value
    If Not IsArray(T) Then
      ReDim T(1 To 1, 1 To 1): T(1, 1) = maplage.Value
    End If
    If Not (IsMissing(EnValeur)) Then maplage.Value = T
    ReDim Tplus(1 To UBound(T), 1 To 1)
    For i = 1 To UBound(T)
      s = ""
      For j = 1 To UBound(T, 2): s = s & T(i, j): Next j
      If s <> "" Then
        Tplus(i, 1) = 1
        n = n + 1
      End If
    Next i

    If n = maplage.Rows.Count Then Exit Sub
    Application.ScreenUpdating = False
    maplage.Resize(, 1).Offset(, maplage.Columns.Count).Insert Shift:=xlToRight
    maplage.Resize(, 1).Offset(, maplage.Columns.Count) = Tplus
    maplage.Resize(, maplage.Columns.Count + 1).Sort _
          key1:=maplage(1, maplage.Columns.Count + 1), order1:=xlAscending, _
          Header:=xlNo
    maplage.Columns(maplage.Columns.Count + 1).Delete Shift:=xlToLeft
    maplage.Resize.Offset(n).Resize(maplage.Rows.Count - n).Clear
  End With
End Sub
 

Pièces jointes

  • Mojojo53-essaicellulevide1- v1.xlsm
    49.5 KB · Affichages: 26
Dernière édition:

Discussions similaires

Réponses
1
Affichages
332
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 428
Messages
2 088 332
Membres
103 814
dernier inscrit
Lolo280277