VBA Supprimer lignes sous condition
Dernière réponse : dans Programmation
Bonjour,
Je suis débutant en VBA, et une fonction me résiste.
Je cherche à supprimer toutes les lignes de mon tableau dans lesquelles la cellule de la colonne S ne contient PAS l'expression #N/A.
J'ai essayé ce code, mais il m'affiche le message d'erreur "incompatibilité de type".
Je vous remercie par avance
Je suis débutant en VBA, et une fonction me résiste.
Je cherche à supprimer toutes les lignes de mon tableau dans lesquelles la cellule de la colonne S ne contient PAS l'expression #N/A.
J'ai essayé ce code, mais il m'affiche le message d'erreur "incompatibilité de type".
Dim nbligne As Long
nbligne = Range("S2").CurrentRegion.Rows.Count
For i = nbligne To 1 Step -1
If Not Cells(i, 19) = "#N/A" Then
Cells(i, 19).EntireRow.Delete
End If
Next i
Je vous remercie par avance
Autres pages sur : vba supprimer lignes condition
Lassé par la pub ? Créez un compte
Salut,
Merci d'indenter correctement ton code. Pour 10 lignes, on pourrait s'en foutre. Spa une raison. Fais-le par principe.
Bien vu le Step -1
Tu remontes jusqu'à 1. Alors pourquoi ce S2 ? Imagine que la cellule S1 soit vide. Ton nombre de lignes ne correspondra pas à l'adresse de la dernière ligne de ta zone. Le code à adopter est un peu plus lourd :
Ton code :
Le mien :
A la ligne 6, tu compares une cellule et un texte. Ce n'est pas la cellule qu'il faut prendre en considération, mais sa valeur. Donc il faut écrire :
"#N/A" signifie Not applicable, et ce n'est pas du texte. Mais une erreur xlErrNA, qu'il faut comparer à celle de la cellule.
Merci d'indenter correctement ton code. Pour 10 lignes, on pourrait s'en foutre. Spa une raison. Fais-le par principe.
Bien vu le Step -1
Tu remontes jusqu'à 1. Alors pourquoi ce S2 ? Imagine que la cellule S1 soit vide. Ton nombre de lignes ne correspondra pas à l'adresse de la dernière ligne de ta zone. Le code à adopter est un peu plus lourd :
Dim zone As Range Dim der_ligne As Long Set zone = Range("S2" ).CurrentRegion der_ligne = zone.Rows(zone.Rows.Count).Row
Ton code :
Cells(i, 19).EntireRow
Le mien :
Rows(i)
A la ligne 6, tu compares une cellule et un texte. Ce n'est pas la cellule qu'il faut prendre en considération, mais sa valeur. Donc il faut écrire :
.
Cells(i, 19).Value
"#N/A" signifie Not applicable, et ce n'est pas du texte. Mais une erreur xlErrNA, qu'il faut comparer à celle de la cellule.
Merci pour vos réponses, j'ai modifié le code qui ne marche toujours pas, cela bloque toujours à la ligne 7
Sachant que mon #N/A n'est pas une formule mais bien une valeur. J'ai en effet copié dans ma colonne S les résultats donnés par une formule d'une autre colonne.
Dim zone As Range
Dim der_ligne As Long
Set zone = Range("S2").CurrentRegion
der_ligne = zone.Rows(zone.Rows.Count).Row
For i = der_ligne To 1 Step -1
If Not Cells(i, 19).Value = "xlErrNA" Then
Cells(i, 19).EntireRow.Delete
End If
Next i
Sachant que mon #N/A n'est pas une formule mais bien une valeur. J'ai en effet copié dans ma colonne S les résultats donnés par une formule d'une autre colonne.
Mon nouveau code bloque toujours à la ligne 7
Je suis un vrai débutant, je ne comprends pas en quoi le fait que cele soit une constante diffère...
Dim zone As Range
Dim der_ligne As Long
Set zone = Range("S2").CurrentRegion
der_ligne = zone.Rows(zone.Rows.Count).Row
For i = der_ligne To 1 Step -1
If Not Cells(i, 19).Value = xlErrNA Then
Rows(i).Delete
End If
Next i
Je suis un vrai débutant, je ne comprends pas en quoi le fait que cele soit une constante diffère...
INDENTATION DU CODE. DERNIERE SOMMATION.
![[:zeb:4] [:zeb:4]]()
-----------------------------------
Oups, à faire tout de tête, j'ai oublié un tout petit détail :honte:
Merci de relire mon message précédent.
If faut écrire
-----------------------------------
Pour connaître la différence entre xlErrNA et "xlErrDiv0", merci d'étudier le code suivant :
![[:zeb:4] [:zeb:4]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/e9/8b/zeb:4.gif)
-----------------------------------
Oups, à faire tout de tête, j'ai oublié un tout petit détail :honte:
Merci de relire mon message précédent.
If faut écrire
If Cells(i, 19).Value <> CVErr(xlErrNA) Then
-----------------------------------
Pour connaître la différence entre xlErrNA et "xlErrDiv0", merci d'étudier le code suivant :
MsgBox xlErrNA MsgBox "xlErrNa"
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumExcel vba selection lignes avec condition
- ForumVba supprimer ligne
- ForumVba supprimer des caracteres
- ForumVba supprimer caractere chaine
- ForumVba supprimer ligne listbox
- ForumVba supprimer ligne vide
- ForumVba supprimer ligne si valeur
- ForumVba supprimer partie chaine
- ForumVba supprimer une ligne complã te
- ForumExcel vba supprimer plusieurs colonnes
- Voir plus