VBA pour masquer toutes les lignes dont la colonne A est vide

Bonjour

Dans une feuille de 1000 lignes, je souhaite masquer par macro toutes les lignes dont la colonne A = « »

Avec un for i = 1 to 1000, masquage ligne par ligne, je sais que ça va marcher, mais je préférerais progresser et connaitre la méthode pour sélectionner d’un coup toutes les lignes dont la valeur de la colonne A est à blanc (« ») et les masquer en 1 seule fois. Je pense que c'est très basique, mais mes connaisances en VBA le sont encore + !!!!

Pouvez vous m’aider svp ? D’avance merci . Vincent

Hello,

Voici un exemple :

Range("A1:A7").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp

ou + cours

Range("A1:A7").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp

@Rag02700, il faut encore ajouter "entirerow" et c'est masquer et ne pas supprimer, donc on utilise ".hidden=true"

@BsAlv un bonjour tu connais conn... ?

Bonjour,

Merci beaucoup pour vos réponses, j'en ai fait ça, qui pour moi, est déjà un miracle !!!

Range("A1:A27").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Hidden = True

MAIS... (ehh, oui, toujours un mais !!!)

mes cellules en A ne sont pas vides mais ="" car résultats d'une fonction si dont la valeur renvoyée est "".

Elles ne sont donc pas vides...

Pouvez vous svp encore me guider pour que j'arrive à mes fins ? Merci d'avance et bonne journée

Vincent

supprimé

re, faute dans mon dernier message

je vous offre 2 options, une pour supprimer et une pour cacher (mais vous pouvez les mélanger, si vous voulez).

Pour des raisons évident, il faut supprimer dans une séquence descendant

Sub Test_Supprimer()
     Dim c As Range, s As String
     t = Timer
     Set c = Sheets("feuil1").Range("A1:A1000")
     s = ""

     For i = c.Rows.Count To 1 Step -1       'if faut reculer !!! du dernier vers le premier
          If c(i, 1).Value = "" Then         'cellule est vide
               s = s & "," & c(i, 1).Address(0, 0)     'string avec les addresses des cellules vides séparé par une virgule
               If Len(s) >= 250 Then Supprimer c, s     'le longueur max du string =255, donc juste avant, lancer "Supprimer"
          End If
     Next
     Supprimer c, s                          'pour le reste des lignes
MsgBox Timer - t
End Sub

Sub Supprimer(c As Range, s As String)
     If Len(s) > 1 Then c.Parent.Range(Mid(s, 2)).EntireRow.Delete
     s = ""
End Sub

Sub Test_Cacher()
     Dim c As Range, UN As Range
     t = Timer
     Set c = Sheets("feuil1").Range("A1:A1000")
     c.EntireRow.Hidden = False

     For i = 1 To c.Rows.Count       'direction n'a pas d'importance
          If c(i, 1).Value = "" Then         'cellule est vide
               If UN Is Nothing Then Set UN = c(i, 1) Else Set UN = Union(UN, c(i, 1))
               If UN.Cells.Count >= 100 Then Cacher UN     'ce n'est pas nécessaire, mais c'est souvent plus vite de vider UN régulièrement
          End If
     Next
     Cacher UN                               'pour le reste des lignes
MsgBox Timer - t
End Sub

Sub Cacher(c As Range)
     If c Is Nothing Then Exit Sub
     c.EntireRow.Hidden = True
     Set c = Nothing
End Sub
2vmercy.xlsb (24.07 Ko)

Waouhhhh !! Merci pour ce boulot, il va me falloir un peu de temps pour tout comprendre et tester, mais en tout cas, un grand merci pour votre aide.

Cordialement,

Vincent

Rechercher des sujets similaires à "vba masquer toutes lignes colonne vide"