Masquer ligne dans plage B11:B20

Bonsoir le forum

J'ai adapté ce code mais elle est très lent.

En effet, je souhaite masquer certaines lignes de la plage B11:B20 qui sont vides.

NB : les lignes vides de la plage seulement doivent être masqué.

Mon code fonctionne mais difficilement.

Merci de voir ce qui est faisable.

Sub masquer_Lignes()
Application.ScreenUpdating = False

For i = 11 To 20
    'nbvide = WorksheetFunction.CountBlank(Range("B" & i))
    nbvide = Range("B" & i).Value
        If nbvide = "" Then
            Rows(i).EntireRow.Hidden = True
        End If
Next i
Range("E2").Select
Application.ScreenUpdating = True
End Sub

Bonjour,

à tester,

Sub masquer_Lignes()
Application.ScreenUpdating = False
Rng = Range("B11:B20").Value
rw = 10
For i = LBound(Rng) To UBound(Rng)
    rw = rw + 1
    If IsEmpty(Rng(i, 1)) Then Rows(rw).EntireRow.Hidden = True
Next i
Application.ScreenUpdating = True
End Sub

Bonjour,

Isabelle

A priori, certaines cellules ne sont pas vraiment vides dans la plage donc tu sélectionnes tes cellules vides (celles qui sont sensées l'être) puis bouton "Supprimer" !

Testes ce code pour voir :

Sub Test()

    Range("B11:B20").Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

End Sub

Bonjour i20100 et Theze

Merci pour vos solutions.

Je viens de tester et je constate qu'il n'ya que les lignes 12,13 et 15 qui se masquent.

Les lignes 16:20 qui sont concernées ne se masquent pas.

Aussi je sent toujours une lenteur.

Cordialement

avec quel code tu as cette lenteur et les lignes qui ne ce cache pas, celui d'Isabelle, le mien, les deux ?

Bonsoir Theze

avec quel code tu as cette lenteur et les lignes qui ne ce cache pas, celui d'Isabelle, le mien, les deux ?

Mon constat porte sur le 2codes.

Merci

Bizarre, sur ton classeur exemple, (après avoir supprimé les valeurs parasites) le code fonctionne en une fraction de seconde !

Si tu as cette lenteur avec les deux codes, le problème ne vient pas des codes mais d'autre chose donc, tu crées un nouveau classeur, tu inscris une ou deux valeur dans la colonne B entre B11 et B20 puis tu testes les deux codes pour voir le résultat et tu nous dis ce qu'il en est !

Bonsoir Theze

Merci pour votre retour.

Je vais faire le teste sur une autre machine avec un nouveau classeur et je vous reviens.

Merci

Bonsoir Thèse

Je viens de tester les 2codes sur 1autre machine mais c'est le même résultat.

Seules les lignes 14 et 20 sont masqué.

Les lignes 15 a 19 restent non masquées.

Je sais pas pourquoi

Je te retourne ton classeur avec avec 3 procédures que je poste aussi ici :

Sub Masquer()

    Range("B11:B20").Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

End Sub

Sub Afficher()

    Range("B11:B20").EntireRow.Hidden = False

End Sub

Sub SavoirSiVide()

    'cette procédure a inscrit en colonne G si la cellule
    'correspondante est vide ou non et on voit bien que les 5 cellules
    'du bas ne sont pas considérées comme vides
    Dim Cel As Range

    For Each Cel In Range("B11:B20")

        Cel.Offset(, 5) = IsEmpty(Cel)

    Next Cel

End Sub

Une pour masquer (la première postée), une pour tout afficher et une pour indiquer en colonne G si les cellules correspondantes sont considérées comme vides. Tu prends ton fichier original (celui posté sur ce topic) et tu lances la procédure "SavoirSiVide" ensuite, tu sélectionnes tes cellules "vides" puis bouton "Supprimer" et tu testes à nouveau !

Pour la lenteur, suspends la liaison que tu as avec l'autre classeur (mets une apostrophe devant la formule) pour voir si ça peut venir de là !

Bonsoir Theze

Les tests sont concluants avec votre dernier fichier.

Merci pour tout.

Bonjour,

Content de t'avoir aidé

Rechercher des sujets similaires à "masquer ligne plage b11 b20"