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

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 !

thierry440

XLDnaute Junior
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
 
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

Discussions similaires

  • Question Question
Microsoft 365 Formule Excel
Réponses
4
Affichages
246
Réponses
8
Affichages
884
  • Question Question
Microsoft 365 formule addition
Réponses
4
Affichages
114
Réponses
1
Affichages
168
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…