Cacher lignes contenant #N/A

Bonjour,

Je souhaiterai cacher les lignes qui contiennent une erreur #N/A dans la colonne E.

Sub Masque_lig() 
Dim zone      As Range
    Dim der_ligne As Long
    Set zone = Range("E2").CurrentRegion
    der_ligne = zone.Rows(zone.Rows.Count).Row
    For i = der_ligne To 1 Step -1
    If Cells(i, 150).Text = "#N/A" Then
    Rows(i).Delete
    End If
    Next i
End Sub

J'ai esayé cela, mais en vain.

Bonjour,

Un fichier serait bienvenu pour t'aider.

Peux-tu néanmoins trouver une ligne contenant #N/A et exécuter l'instruction suivante sur ce numéro de ligne :

MsgBox Cells(i, 150).Text

Voici le fichier joint.

La colonne E de la feuille Task_Table contient :

  • Valeurs (chiffres)
  • Erreurs
  • Textes "#N/A"

L'idée est de ne garder que les lignes qui contiennent des chiffres en colonne 3

14frencky2.xlsm (62.94 Ko)

Comme quoi avec un fichier c'est mieux... Ton code fonctionne si tu lui fais chercher sur la bonne colonne !

Cells(i, 5).Text
'et pas :
Cells(i, 150).Text

Je te conseille aussi de désactiver l'affichage et le calcul automatique en début de macro (et rétablir en fin) :

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Ton code
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

L'idée est de ne garder que les lignes qui contiennent des chiffres en colonne 3

Pour faire ça, il y a plus simple... La fonction VBA IsNumeric().

Merci chef.

Juste, si je souhaite juste les cacher et non les supprimer, que dois je faire ?

Je pensais qu'il suffisait simplement de changer .Delete par .Hidden

Mais non ca ne fonctionne pas

Tu peux juste changer la couleur de police en blanc, et c'est également faisable via une mise en forme conditionnelle.

C'est note chef !

Bonjour

a voir

A+

Maurice

Sub Masque_lig()
Dim zone As Range
Dim der_ligne As Long
Dim I&
    Set zone = Range("E2").CurrentRegion
    der_ligne = zone.Rows(zone.Rows.Count).Row
        For I = der_ligne To 1 Step -1
            If Cells(I, 5).Text = "#N/A" Then
                Rows(I).EntireRow.Hidden = True
            End If
        Next
End Sub

Bonjour à tous,

une autre version

Sub test()

Dim I As Long, derl As Long
derl = Range("E" & Rows.Count).End(xlUp).Row

Application.ScreenUpdating = False
For I = 2 To derl
    If IsError(Cells(I, 5).Value) Or Cells(I, 5).Text = "#N/A" Then
        Rows(I).Hidden = True
    End If

Next I
End Sub

Cordialement,

Rechercher des sujets similaires à "cacher lignes contenant"