Suppression de ligne sous condition Macros VBA
Résolu/Fermé
CamdenTown
CamdenTown
- Messages postés
- 37
- Date d'inscription
- mercredi 16 décembre 2015
- Statut
- Membre
- Dernière intervention
- 6 février 2017
CamdenTown
- Messages postés
- 37
- Date d'inscription
- mercredi 16 décembre 2015
- Statut
- Membre
- Dernière intervention
- 6 février 2017
A voir également:
- Macro excel supprimer ligne sous condition
- Excel vba supprimer ligne avec condition - Meilleures réponses
- Macro supprimer ligne selon critère - Meilleures réponses
- Supprimer ligne ou colonne selon condition VBA ✓ - Forum - Excel
- Suppression de ligne sous condition Macros VBA ✓ - Forum - Excel
- Supprimer ligne ✓ - Forum - VB / VBA
- VBA (Excel) - Supprimer une ligne ✓ - Forum - VB / VBA
- Macro excel et suppression de ligne - Forum - Programmation
3 réponses
michel_m
7 janv. 2016 à 17:43
- Messages postés
- 16569
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 23 mai 2022
7 janv. 2016 à 17:43
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
thev
Modifié par thev le 6/01/2016 à 22:25
- Messages postés
- 1770
- Date d'inscription
- lundi 7 avril 2008
- Statut
- Membre
- Dernière intervention
- 11 novembre 2021
Modifié par thev le 6/01/2016 à 22:25
cell est un mot réservé dans VBA pour désigner l'objet cellule.
Il faut donc remplacer la variable objet cell par exemple, par cellule.
Par ailleurs b et c ne sont pas définis.
Ceci devrait convenir
Il faut donc remplacer la variable objet cell par exemple, par cellule.
Par ailleurs b et c ne sont pas définis.
Ceci devrait convenir
For Each cellule In ActiveSheet.UsedRange
If Left$(cellule.Value, 1) <> "5" Then cellule.EntireRow.Delete
If IsDate(cellule.Value) And cellule.Value < DateValue("01/12/2015") Then cellule.EntireRow.Delete
Next
CamdenTown
6 janv. 2016 à 23:07
- Messages postés
- 37
- Date d'inscription
- mercredi 16 décembre 2015
- Statut
- Membre
- Dernière intervention
- 6 février 2017
6 janv. 2016 à 23:07
Merci Thev ! Ca m'a un peu eclairer mais ca ne fonctionne toujours pas :/ ...
michel_m
7 janv. 2016 à 08:35
- Messages postés
- 16569
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 23 mai 2022
7 janv. 2016 à 08:35
bonjour
ce n'est pas "cell" qui est un mot réservé mais "cells" ...
qu'appelles tu "tableau interminable" ? nombre de lignes : 500,10000 ?
ce n'est pas "cell" qui est un mot réservé mais "cells" ...
qu'appelles tu "tableau interminable" ? nombre de lignes : 500,10000 ?
CamdenTown
7 janv. 2016 à 10:09
- Messages postés
- 37
- Date d'inscription
- mercredi 16 décembre 2015
- Statut
- Membre
- Dernière intervention
- 6 février 2017
7 janv. 2016 à 10:09
Bonjour,
Ca depend puisque je souhaiterai appliquer cette methode sur plusieurs feuilles differentes mais ca va de 5000 a 17000 environ.
j' aimerai si possible appliquer le filtre sur une colonne precise et non sur toute la feuille.
Merci
Ca depend puisque je souhaiterai appliquer cette methode sur plusieurs feuilles differentes mais ca va de 5000 a 17000 environ.
j' aimerai si possible appliquer le filtre sur une colonne precise et non sur toute la feuille.
Merci
michel_m
Modifié par michel_m le 7/01/2016 à 11:18
- Messages postés
- 16569
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 23 mai 2022
- Messages postés
- 37
- Date d'inscription
- mercredi 16 décembre 2015
- Statut
- Membre
- Dernière intervention
- 6 février 2017
Modifié par michel_m le 7/01/2016 à 11:18
OK, c'est parti; un peu de patience
Mais un extrait du classeur (1000 ou 2000 lignes environ, colonnes A B C) m'aiderait beaucoup
D'avance merci
pour cela
Dans l’attente
Mais un extrait du classeur (1000 ou 2000 lignes environ, colonnes A B C) m'aiderait beaucoup
D'avance merci
pour cela
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé (clic droit) dans le message de réponse
Dans l’attente
CamdenTown
7 janv. 2016 à 15:09
- Messages postés
- 37
- Date d'inscription
- mercredi 16 décembre 2015
- Statut
- Membre
- Dernière intervention
- 6 février 2017
7 janv. 2016 à 15:09
Merci Michel !
Voici le lien : https://www.cjoint.com/c/FAhogTVYk5E
Donc en gros supprimer toutes les lignes de dates qui sont avant 01/12/2015 ET supprimer les lignes de references qui ne commencent pas par le chiffre 5.
Voila :)
Voici le lien : https://www.cjoint.com/c/FAhogTVYk5E
Donc en gros supprimer toutes les lignes de dates qui sont avant 01/12/2015 ET supprimer les lignes de references qui ne commencent pas par le chiffre 5.
Voila :)
8 janv. 2016 à 07:17
j'ai suivi la demande "colonne par colonne" mais ça me parait quand même bizarre...
8 janv. 2016 à 10:44
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...
8 janv. 2016 à 11:16
8 janv. 2016 à 11:40
date>=1/12/15 ET AUSSI ref commençant par 5 ?
8 janv. 2016 à 15:52