Vba suppression lignes filtrées
isatut
-
NicoDisso Messages postés 231 Statut Membre -
NicoDisso Messages postés 231 Statut Membre -
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....
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....
A voir également:
- Vba suppression lignes filtrées
- Forcer suppression fichier - Guide
- Suppression compte gmail - Guide
- Suppression page word - Guide
- Suppression facebook - Guide
- Suppression compte google - Guide
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
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
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.
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.
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...
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...