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

Résolu/Fermé
OlivGFT Messages postés 22 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 28 février 2014 - Modifié par OlivGFT le 9/11/2013 à 16:01
OlivGFT Messages postés 22 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 28 février 2014 - 11 nov. 2013 à 16:21
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 !
A voir également:

3 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
10 nov. 2013 à 12:06
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 11/11/2013 à 09:51
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
OlivGFT Messages postés 22 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 28 février 2014
11 nov. 2013 à 16:21
Merci beaucoup à vous deux, cela marche super bien ( et c'est très rapide ! )
0