Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

macro qui supprime les lignes suivant conditions

  • Initiateur de la discussion Initiateur de la discussion thierry440
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

thierry440

Guest
Bonjour

je cherche à faire une macro qui balaye et supprime les lignes ayant le conditions suivantes :
-statut : cloturé
et
-année : inférieur 2016

Merci d'avance
 

Pièces jointes

Bonsoir,

Ton fichier en retour.

Code :
VB:
Sub Efface()
Dim i As Integer
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
    If Cells(i, 3) = "cloturé" And CDate(Cells(i, 9)) < CDate(2016) Then
        Cells(i, 3).EntireRow.Delete
    End If
Next i
End Sub

A+
 

Pièces jointes

Bonsoir le fil, le forum

Sans boucle (n'est-ce pas Calvus 😉)
VB:
Sub a()
Dim pf As Range
With [B1].CurrentRegion
    .Item(2, 10).FormulaR1C1 = "=(RC[-8]=""cloturé"")+(YEAR((""1/1/""&RC[-2])*1)<2016)=2"
    .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("K1:K2"), Unique:=False
End With
Set pf = [_FilterDataBase]
Application.DisplayAlerts = False
If WorksheetFunction.Subtotal(3, pf.Offset(1).Resize(pf.Rows.Count - 1, 1)) > 0 Then
    pf.Offset(1).Resize(pf.Rows.Count - 1).EntireRow.Delete
End If
ActiveSheet.ShowAllData: Range("K1:OK2") = ""
End Sub
 
Bonjour

J'essaye d'optimiser échantillon 200 lignes ( 420000) dans fichier source.
le but étant de supprimer les lignes remplissant condition :
colonne 4 : Clôturé
colonne 26 : < 2016

merci d'avance.
 

Pièces jointes

Bonsoir le fil, le forum

@thierry440
Avant de penser à optimiser, il faudrait d'abord penser à anonymiser non ?
Piqûre de rappel 😉

EDITION: Il semblerait que tu n'as pas testé la macro que je t'ai proposée dans mon précédent message, non ?
Pourtant elle fonctionne bien
La voici (ajustée au nouveau fichier)
VB:
Sub test_OK()
Dim pf As Range
With [A1].CurrentRegion
    .Item(2, 28).FormulaR1C1 = "=(RC4=""clôturé "")+(YEAR((""1/1/""&RC26)*1)<2016)=2"
    .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("AB1:AB2"), Unique:=False
End With
Set pf = [_FilterDataBase]
Application.DisplayAlerts = False
If WorksheetFunction.Subtotal(3, pf.Offset(1).Resize(pf.Rows.Count - 1, 1)) > 0 Then
    pf.Offset(1).Resize(pf.Rows.Count - 1).EntireRow.Delete
End If
ActiveSheet.ShowAllData: Range("AB1:AB2") = ""
End Sub
NB: Avant emploi, remplacer Clôturé par clôturé dans la colonne idoine (grâce à CTRL+H)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
139
Réponses
18
Affichages
459
Réponses
3
Affichages
205
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…