Supprimer une ligne avec condition

Résolu/Fermé
mohamed - Modifié par pijaku le 4/08/2016 à 11:34
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016 - 4 août 2016 à 12:41
Bonjour,
je veux supprimer une ligne parmi 100 lignes qui contient des donnés fausses
pouvez vous m'aider
merci
et voila mon tentative:
Sub clear()
Sheets(1).Range("valeurs").Select


Set ActiveRange = ThisWorkbook.Sheets(1).Range("A2:A22")
For i = 1 To 22
ActiveRange.Offset(i - 1, 0).Select
Selection.SpecialCells(xlCellTypeVisible).Select
If Range("valeur").Offset(i - 1, 0).Value = "has" Then
Cells.clear
Cells.EntireRow.Delete
End If
Next

End Sub





A voir également:

3 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié par ThauTheme le 2/08/2016 à 15:35
Bonjour Mohamed, bonjour le forum,

Quand on veut supprimer des lignes, il est d'usage de commencer par la fin en remontant (une boucle inversée) pour éviter une mauvaise interprétation.
De 1 à 22 pour moi ça fait pas 100 lignes ?!...

Essaie comme ça (si j'ai bien compris) :

Sub Macro1()
DIM DL As Integer
Dim I As Byte

DL = Range("A" & Application.Rows.Count).End(xlup).Row
For I = DL To 1 Step -1
    If Cells(I, 1).Value = "has" Then Rows(I).Delete
Next I
End Sub




À plus,
ThauTheme
0
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016
2 août 2016 à 15:37
Grand merci ThauTheme ,je veux l'essayer
0
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016
2 août 2016 à 16:21
oui elle fonctionne comme il faut,, juste Dim I as integer non byte
0
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016
Modifié par mohamed_2016 le 2/08/2016 à 16:26
si je veut supprimer une ligne qui contient n'importe quel "mot" exemple :has, ham et hat etc... sauf les nombres comment va se changer le code cher ami
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
2 août 2016 à 17:48
Bonjour Mohamed, bonjour le forum,

Oui, tu as raison Integer pour I... Essaie ce nouveau code :

Sub Macro1()
Dim DL As Integer
Dim I As Integer

Application.ScreenUpdating = False
DL = Range("A" & Application.Rows.Count).End(xlUp).Row
For I = DL To 1 Step -1
    If Not IsNumeric(Cells(I, 1).Value) = True Then Rows(I).Delete
Next I
Application.ScreenUpdating = True
End Sub
0
Mohamed _2016
2 août 2016 à 19:13
Quel est le rôle de la fonction: application.screenupdating
Merci pour votre aide
Cordialement Mohamed
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
4 août 2016 à 11:14
Bonjour Mohamed, bonjour le forum,

Elle masque les rafraîchissements d'écran. Tu gagnes tu temps car tu ne vois pas les lignes s'effacer les unes après les autres. La macro les supprime et à la fin tu ne vois que les lignes restantes d'un seul coup. Pense toujours à remettre à [True] à la fin du code.
Maintenant, il existe l'aide VBA qui en sélectionnant un mot que tu ne connais pas et avec la touche [F1] te fournira une aide détaillée et souvent très efficace... A utiliser sans modération !...
0
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016
4 août 2016 à 12:41
bonjour ThauTheme
merci beaucoup pour votre aide
bonne journée
cordialement Mohamed
0