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   -
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
A voir également:

3 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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

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
1
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour
j'ai suivi la demande "colonne par colonne" mais ça me parait quand même bizarre...
0
CamdenTown Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Michel !

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...
0