Macro masque ligne si cellule vide sur l'ensemble des onglets

Résolu
OlivGFT Messages postés 24 Statut Membre -  
OlivGFT Messages postés 24 Statut Membre -
Bonjour,

Je souhaite crée une macro qui masque mes lignes si mes cellules sont vide.
Je souhaite également que cette macro fonctionne pour l'ensemble de mes onglets.
le but étant de crée un bouton " Hide" qui ferait fonctionner la macro pour l'ensemble de mes onglets.

Voici la macro que j'ai trouvé sur ce forum qui fonctionne tres bien :
Sub hide()
Range("C10:C129").Select 'C10:C129 correspond a ta plage de cellule que tu souhaite verifier
For Each o In Selection
If o.Value = "" Then
o.EntireRow.Hidden = True
End If
Next

End Sub

Au risque de me répéter cette macro ne fonctionne que si je selectionne 1 onglet. Je souhaite qu'elle marche pour l'ensemble de mes onglets ( quelque soit le nom de l'onglet) sauf les 3 premier onglet.
cela est t'il possible ?

Merci beaucoup pour votre aide !

3 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    essaye..
    Sub CacheLigne()
    
    Dim TB, i As Integer, Cel As Range, B As Boolean
    Dim Wkb As Worksheet
    'Le nom des feuilles qu'il ne faut pas traiter
    TB = Array("Feuil1", "Feuil2", "Feuil3")
    For Each Wkb In Worksheets
    B = False
    For i = 0 To 2
    If Wkb.Name = TB(i) Then B = True: Exit For
    Next i
    If Not B Then
    For Each Cel In Wkb.Range("C10:C" & Range("C" & Rows.Count).End(xlUp).Row)
    If Cel.Value = "" Then
    Cel.EntireRow.Hidden = True
    End If
    Next Cel
    End If
    Next Wkb
    End Sub

    A+
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    excusez l'incruste :o)
    On peut éviter une boucle pour cacher les cellules vides dans la colonne c

    Derlig = Columns("A").Find("*", , , , , xlPrevious).Row
    
    On Error Resume Next
    Range("C2:C" & Derlig).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

    remarque:
    1/le repérage de la dernière ligne est sur la colonne A (supposée être la colonne de référence) car si la ou les dernières de la colonne C sont vides, ces lignes ne seront pas cachées...
    2/ le "error resume next" est nécessaire pour éviter un blocage sur erreur si il n'y a aucune cellule vide
    Michel
    0
  3. OlivGFT Messages postés 24 Statut Membre
     
    Merci beaucoup à vous deux, cela marche super bien ( et c'est très rapide ! )
    0