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

Supprimer certaines cellules suivant condition

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 !

eduraiss

XLDnaute Accro
Bonjour le forum

Voila j'aimerais si possible en VBA un code me permettant d'effacer des cellules suivant plusieurs conditions

Je joins un fichier ou il y a toutes les explications

Merci à vous
 

Pièces jointes

Re : Supprimer certaines cellules suivant condition

Re

eduraiss
J'avais téléchargé ta PJ et je n'ai vu aucune explication dedans.
D'où mon premier message.

Tu peux les repréciser ici dans le corps du message, stp ?

Quelles sont les conditions à remplir pour les lignes devant être supprimées ?
 
Re : Supprimer certaines cellules suivant condition

Voici les explication qui sont dans le fichier
Bonjour le forum

Voila ci contre un tableau, je vous explique la macro qu'il me faudrait si possible

J'ai des données qui arrivent de plusieurs fichier dans ce tableau
il me faudrait La condition SI en VBA
si par exemple k20=l20 alors on efface L20;K20,J20,i20
sI les noms de la colonne J commence par soit A/ ou R/ on efface idem si dessus
La condition la plus complique il me semble
Si L3 = "" on efface comme si dessus sauf si le nom en colonne J existe par rapport au jour
EX on efface pas ALEXENDRE A car en effet la colonne L laisse un blanc mais elle est possitionné 2 fois le 20/10
mais on efface "loulou"

merci a vous
 
Re : Supprimer certaines cellules suivant condition

Suite...


Avec cette formule, le filtre affiche 3 lignes
Code:
=OU(ET(K4=L4;NON(ESTERR(CHERCHE("*/";J4))));ET(NB.SI($J$4:$J$24;J4)=1;NBCAR(L4)=0))

Ces trois lignes sont bien à supprimer ?


Si oui, il suffit de transcrire cela en VBA
Et pour ce faire , utilisez l'enregistreur de macros

Je te laisse essayer de ton côté pendant que je le fais du mien
 
Re : Supprimer certaines cellules suivant condition

Re

j'ai ajouté des éléments dans l'édition de mon précédent message.

Tu bloques sur quoi ?

Voici ce que donnes le VBA de l'enregisteur pour appliquer le filtre
Code:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 21/10/2014 par Staple en extérieur
'
    Range("M4").FormulaR1C1 = _
        "=OR(AND(RC[-2]=RC[-1],NOT(ISERR(SEARCH(""*/"",RC[-3])))),AND(COUNTIF(R4C10:R24C10,RC[-3])=1,LEN(RC[-1])=0))"
    Range("I3:L24").Select
    Range("I3:L24").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("M3:M4"), Unique:=False
End Sub

Je te laisse tester la macro.
 
Dernière édition:
Re : Supprimer certaines cellules suivant condition

Re


Dans ton fichier exemple, seules les lignes 21 et 22 ont les cellules K et L égales, non

Donc les lignes affichés par le filtre élaboré (cf ma copie d'écran précédente) sont les seules à effacer , non ?
(ce ce sont les seuls qui "matchent" tes conditions de suppression, non ?)

EDITION: Ci-dessous version pus aboutie de la macro avec suppression des lignes
Code:
Sub delrows()
Dim MON_CRITERE$, pf As Range
MON_CRITERE = "=OR(AND(RC[-2]=RC[-1],NOT(ISERR(SEARCH(""*/"",RC[-3])))),AND(COUNTIF(R4C10:R24C10,RC[-3])=1,LEN(RC[-1])=0))"
    With Range("M4")
    .FormulaR1C1 = MON_CRITERE
    .Offset(-1, -4).Resize(22, 4).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=.Offset(-1).Resize(2), Unique:=False
End With
Set pf = [_FilterDataBase]
pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.ShowAllData
End Sub
 
Dernière édition:
Re : Supprimer certaines cellules suivant condition

Re

Tu as essayé le code VBA ajouté dans l’édition de mon précédent message ?

EDITION: Nouvelle version de la macro (et correction du critère)
(test semble-t-il OK ici 😉 )
Code:
Sub delrowsII()
Dim MON_CRITERE$, pf As Range, dl&
MON_CRITERE = "=AND(OR(RC[-2]=RC[-1],NOT(ISERR(SEARCH(""*/"",RC[-3])))),OR(COUNTIF(R4C10:R24C10,RC[-3])=1,LEN(RC[-1])=0))"
dl = Cells(Rows.Count, "I").End(3).Row
 
    With Range("M4")
        .FormulaR1C1 = MON_CRITERE
        .Offset(-1, -4).Resize(dl - 2, 4).AdvancedFilter Action:=xlFilterInPlace, _
        CriteriaRange:=.Offset(-1).Resize(2), Unique:=False
    End With
Qn = MsgBox("Voulez_vous effacer ces lignes", vbYesNo, "Effacement")
If Qn = vbYes Then
Set pf = [_FilterDataBase]
pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.ShowAllData
Else
ActiveSheet.ShowAllData
End If
End Sub
 
Dernière édition:
Re : Supprimer certaines cellules suivant condition

Merci

Mais je renvois le fichier avec le code adapté et en jaune ce qu'il aurait du effacer de plus le faites d'effacer la ligne entière me pose des problèmes car j'ai des données en colonne A,B, C,D,E

Merci beaucoup
 

Pièces jointes

- 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

Réponses
5
Affichages
627
Réponses
5
Affichages
260
Réponses
15
Affichages
547
W
Réponses
2
Affichages
238
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…