Suppression de ligne sous condition Macros VBA
Résolu
CamdenTown
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
CamdenTown Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
CamdenTown Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous et merci pour votre attention,
Voila j'ai un tableau Excel interminable. Deux colonnes :
- Une avec des dates.
- Une avec des références sous forme de numéro et lettres. Ces références peuvent commencer par des numéros ou des lettres ca dépend.
Deux taches à faire :
- Supprimer toutes les lignes de references qui ne commencent pas par le chiffre 5.
- Supprimer toutes les lignes de dates antérieurs au 01/12/2015.
Voila mon essai mais ca ne fonctionne pas :
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
If Left$(cell.Value,1) <> "5" Then cell.EntireRow.Delete
If IsDate(b) And b.Value < #01/12/2015# Then
If c.Value < #01/12/2015# Then Rows(i).Delete
Next
Merci
Voila j'ai un tableau Excel interminable. Deux colonnes :
- Une avec des dates.
- Une avec des références sous forme de numéro et lettres. Ces références peuvent commencer par des numéros ou des lettres ca dépend.
Deux taches à faire :
- Supprimer toutes les lignes de references qui ne commencent pas par le chiffre 5.
- Supprimer toutes les lignes de dates antérieurs au 01/12/2015.
Voila mon essai mais ca ne fonctionne pas :
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
If Left$(cell.Value,1) <> "5" Then cell.EntireRow.Delete
If IsDate(b) And b.Value < #01/12/2015# Then
If c.Value < #01/12/2015# Then Rows(i).Delete
Next
Merci
A voir également:
- Excel vba supprimer ligne avec condition
- Supprimer rond bleu whatsapp - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne excel - Guide
- Liste déroulante excel - Guide
- Partager photos en ligne - Guide
3 réponses
Bonsoir
proposition ci dessous
colonnes A et B traitées indépendamment (j' aimerai si possible appliquer le filtre sur une colonne precise et non sur toute la feuille).
tes 5137 lignes traitées en 0,06 secondes
proposition ci dessous
colonnes A et B traitées indépendamment (j' aimerai si possible appliquer le filtre sur une colonne precise et non sur toute la feuille).
tes 5137 lignes traitées en 0,06 secondes
Option Explicit
Const Seuil As Long = #12/1/2015# 'format UK;=1/12/2015 format FR
'--------------------------------
Sub Supprimer_sous_conditions()
Dim Derlig As Integer, T_in, Cptr As Integer
Dim T_date, Cptd As Integer, T_cinq, Cptq As Integer
Dim start As Single
'------------------------initialisations
start = Timer
Application.ScreenUpdating = False 'fige l'écran: rapidité, confort
With ActiveSheet ' plusieurs feuilles
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
T_in = .Range("A2:B" & Derlig)
ReDim T_date(1 To UBound(T_in))
ReDim T_cinq(1 To UBound(T_in))
'-------------------------Traitements
For Cptr = 1 To UBound(T_in)
'Traitement des dates
If T_in(Cptr, 1) >= Seuil Then
Cptd = Cptd + 1
T_date(Cptd) = T_in(Cptr, 1)
End If
'traitement des ref
If T_in(Cptr, 2) Like "5" & "*" Then
Cptq = Cptq + 1
T_cinq(Cptq) = T_in(Cptr, 2)
End If
Next
'-------------------------Restitution
'nettoyage
.Range("A2:B" & 20000).Clear
'dates
.Range("A2").Resize(UBound(T_date), 1) = Application.Transpose(T_date)
.Range("A2:A" & UBound(T_date) - 1).Borders.Weight = xlThin
'ref
.Range("B2").Resize(UBound(T_cinq), 1) = Application.Transpose(T_cinq)
.Range("B2:B" & UBound(T_cinq) - 1).Borders.Weight = xlThin
End With
Application.ScreenUpdating = True
MsgBox Derlig & " lignes traitées en " & Timer - start & " sec."
End Sub
j'ai suivi la demande "colonne par colonne" mais ça me parait quand même bizarre...
C'est deja beaucoup mieux vraiment un grand merci !
Cependant je vois que c'est pas encore parfait au niveau des dates et il me reste des cases vides dans les deux colonnes ce que j'aimerai supprimer aussi...