Vba suppression lignes filtrées

Fermé
isatut - 17 janv. 2008 à 15:58
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 - 26 mai 2009 à 16:40
Bonjour,

Je débute en programmation VBA...

J'ai deux feuilles de calculs excel. Une de base (Base) et une dont la 1e colonne est liée à la 1e colonne de la base (liaison).
Je cherche à supprimer les cellules #REF! qui apparaissent dans (liaison) lorsque l'on supprime des cellules dans (base).
J'ai donc fait cela en plusieurs étapes et avais l'idée de filtrer les données de la feuille liée (liaison) et de supprimer les cellules qui auront été filtrées.

Je suis bloquée après la partie filtre car quelle que soit la formule utilisée, ça ne m'efface pas uniquement les lignes filtrées mais toutes ou aucune... Voici donc la partie jusqu'au filtre que j'aimerais pouvoir compléter....

Sub Filtre_Suppression()
'
''
Dim i As Integer
Dim DernLign As String
'
DernLign = Sheets("liaison").UsedRange.Row + Sheets("liaison").UsedRange.Count - 1
'Permet de faire la macro en commençant par le bas, quel que soit le nombre de lignes

For i = DernLign To 1 Step -1
'enclenche le compte à rebours
'
Cells(i, 1).Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="#REF!"
Next

End Sub


Merci d'avance de m'aider à compléter....

3 réponses

Bonjour,
as tu essayé de récupérer le code généré par l'assistant.
En manuel je ferais, Filtre Automatique =!#REF.

CRTL + * Pour Sélectionner le bloc
CRTL + - pour supprimer.

Tu récuperes le code, et tu l'adaptes.

@+

G-Rom
0
Hello,

J'ai essayé d'utiliser l'assistant manuel.

Ca me donne la formule suivante:

Sub Essai_filtre_suppression()
'
'
Selection.AutoFilter Field:=1, Criteria1:="#REF!"
Rows("7:79").Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=1
End Sub


Ca fonctionne s'il y a effectivement des #REF! qui ont été trouvés mais si le filtre ne trouve aucun #REF! alors ça me supprime des données valides!!!
Donc pas top!!!
Donc merci pour votre aide pour résoudre ce problème.
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
26 mai 2009 à 16:40
as tu essayé d'utiliser la formule "TYPE.ERREUR()"
En mettant cette formule dans la ligne testée et en tapant "=TYPE.ERREUR(cellule testée)" tu obtiendras une valeur,
#NUL! => 1
#DIV/0! => 2
#VALEUR! => 3
#REF! => 4
#NOM? => 5
#NOMBRE! => 6
#N/A => 7
Une autre valeur => #N/A

Du coup, tu n'as plus qu'a tester sur les lignes ou la valeur de ta cellule est 4...
0