Suppression ligne #N/A

Bonjour,

J'ai un tableau avec 7 colonnes. Parmi ces7 colonnes, certaines contiennent des #N/A e d'autres des dates. Je souhaite supprimer l'ensemble des #N/A en décalant les cellules vers la gauche (je suis totalement incapable de faire sa. si vous pouvez me lancer sur le code je finirais).

J'ai environ 250 000 lignes a exécuter de cette façon...

merci d'avance.

15classeur1.xlsm (21.17 Ko)

A voir si satisfaisant :

15estna.xlsm (24.06 Ko)

Merci de ta proposition mais ce n'est pas ce que je cherchais.

je pense qu'il faut faire une macro qui supprime les cellules contenant #N/A en les déplaçant par la gauche.

En gros il faut que sa donne sa

Selection '#N/A.Delete Shift:=xlToLeft

Le but est que toutes les dates partent de la colonne 1, histoire qu'elles soient alignées

Est-ce plus clair ?

bonsoir

ceci peut-être

Sub suppna()

    Range("A1:H100").SpecialCells(xlCellTypeFormulas, 16).Delete shift:=xlToLeft
End Sub

Bonsoir,

Bonsoir h2so4,

Solution basique

Cdlt

31thomas5f-v1.xlsm (27.73 Ko)

re-obnsoir, bonsoir Jean-Eric

Sub suppna()

    Range("A1:H100").SpecialCells(xlCellTypeFormulas, 16).Delete shift:=xlToLeft
End Sub

ce code ne fonctionne pas pour #n/a. J'ai fait l'hypothèse (sans vérifier ) que #N/A était considéré comme une erreur, ce qui n'est pas le cas.

Heureusement Jean-Eric a pu te proposer une élégante solution.

Re,

à h2so4,

Tu n'a pas de solution en déclarant la plage en tableau (250.000 lignes)?

Cdlt.

re-bonsoir,

une solution basée sur la proposition de Jean-Eric, mais qui selectionne les cellules avant de lancer le .delete, ce qui semble avoir un impact positif sur les performances.

à tester sur des gros volumes.

Sub repna()

    Dim bigrange As Range

    Set Ws = Worksheets("Feuil1")
    With Ws
        lngRows = .Range("A" & Rows.Count).End(xlUp).Row
        intColumns = .Cells(1, Columns.Count).End(xlToLeft).Column
        For r = 2 To lngRows
            For c = intColumns To 2 Step -1
                If Application.IsNA(.Cells(r, c)) Then If bigrange Is Nothing Then Set bigrange = .Cells(r, c) Else Set bigrange = Application.Union(bigrange, .Cells(r, c))
            Next
        Next
        bigrange.Delete shift:=xlToLeft
    End With
End Sub

Merci bcp, c'est ce que je voulais! vous etes des stars!

Rechercher des sujets similaires à "suppression ligne"