Boucle supprésion #NA

Bonjour à tous et à toutes,

je viens vers vous car j’ai rédigé une macro qui me donne le résultat présent sur longle Feuil1 du fichier exemple en pièce jointe, et normalement par la suite je dois filtrer sur la colonne F , avec comme critère de sélection les #NA et supprimer toutes les cellules visibles, sauf que vu le nombre de lignes important sélectionner mon Excel plante, par moment, donc j’ai décidé de passer par une boucle qui balaie toute la colonne F et qui fait : << si une cellule dans la colonne F est =#NA , sélectionner et supprimer la ligne>> ainsi pour toutes les lignes sauf que je ne sais pas faire les boucles donc si quelqu’un peut m’écrire cette ligne de code je l inclurai dans ma macro

https://www.cjoint.com/c/HDqjciTEYdK

merci

Bonjour,

je te propose de faire sans boucle, beaucoup plus rapide. Commencer par mettre un filtre auto

En enregistrement de macro :

trier sur F pour rassembler tous les N/A

filtrer dessus et supprimer les lignes visibles.

Ré-afficher tout et remettre le tri voulu.

Plus qu'à nettoyer le code pour que ça soit propre, et ajouter application.screenupdating=false au début.

eric

Bonjour,

Une proposition à étudier.

ALT F8 et exécuter la procédure CleanNA.

Cdlt.

4boucle-na.xlsb (231.11 Ko)
Public Sub CleanNA()
Dim N As Long, rng As Range
    Application.ScreenUpdating = False
    With ActiveSheet
        N = .Cells(.Rows.Count, 1).End(xlUp).Row
        On Error Resume Next
        Set rng = .Cells(5, 6).Resize(N - 4).SpecialCells(2, 16)
        On Error GoTo 0
        If Not rng Is Nothing Then rng.EntireRow.Delete shift:=xlUp
    End With
End Sub

Bonjour,

je te propose de faire sans boucle, beaucoup plus rapide. Commencer par mettre un filtre auto

En enregistrement de macro :

trier sur F pour rassembler tous les N/A

filtrer dessus et supprimer les lignes visibles.

Ré-afficher tout et remettre le tri voulu.

Plus qu'à nettoyer le code pour que ça soit propre, et ajouter application.screenupdating=false au début.

eric

Bonjour Eriiic,

c'est effectivement comme cela que j'ai fait mon code mais le nombre de ligne étant assez important après le filtre sur la ligne suppression de cellule visible il buggue selon la mémoire dispo sur mon excel , d’où l'option de suppression ligne par ligne avec une boucle

Bonjour,

Une proposition à étudier.

ALT F8 et exécuter la procédure CleanNA.

Cdlt.

boucle-NA.xlsb

Public Sub CleanNA()
Dim N As Long, rng As Range
    Application.ScreenUpdating = False
    With ActiveSheet
        N = .Cells(.Rows.Count, 1).End(xlUp).Row
        On Error Resume Next
        Set rng = .Cells(5, 6).Resize(N - 4).SpecialCells(2, 16)
        On Error GoTo 0
        If Not rng Is Nothing Then rng.EntireRow.Delete shift:=xlUp
    End With
End Sub

Bonjour Jean Eric et une fois de plus merci pour la pertinence et la promptitude ta réaction , je l'adapte de suite

CDLT

Bonjour Eriiic,

c'est effectivement comme cela que j'ai fait mon code mais le nombre de ligne étant assez important après le filtre sur la ligne suppression de cellule visible il buggue selon la mémoire dispo sur mon excel

C'est pour ça que je te suggérais de trier ta colonne.

Tes #N/A seront rassemblés dans les dernières lignes allégeant le travail d'excel. Il a un seul range à supprimer plutôt que des lignes dispersées, et sans avoir une seule ligne à remonter.

Au lieu de filtrer tu peux aussi chercher le 1er N/A et supprimer toute la fin, ce qui compte c'est le tri.

eric

Rechercher des sujets similaires à "boucle suppresion"