XL 2013 Supprimer ligne contenant mot "mp3"

linadeau

XLDnaute Nouveau
Bonjour à vous

Je souhaite supprimer toutes les lignes contenant le mot mp3 avec une macro (j'imagine)

Pourriez-vous m'aider?

Merci à l'avance

Lise N
 

job75

XLDnaute Barbatruc
y a t'il une possibilité de faire respecter la casse du mot à rechercher.
Like respecte la casse :
VB:
Sub Suppr_mp3()
Dim c As Range
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
    For Each c In .Cells
        If c Like "*mp3*" Then c = "#N/A"
    Next
    If Application.CountIf(.Cells, "#N/A") Then .Cells.SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
End With
End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
VB:
Sub Suppr_mp3()
Dim c As Range
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
    For Each c In .Cells
         If InStr(1, c, "mp3", vbBinaryCompare) > 0 Then c = "#N/A" ' la casse est respecté "MP3" en majuscule ne sera pas remplacé
    Next
    If Application.CountIf(.Cells, "#N/A") Then .Cells.SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
End With
End Sub
 

job75

XLDnaute Barbatruc
Bonjour à tous,

On peut aussi ajouter un argument à Replace :
VB:
Sub Suppr_mp3()
Cells.Replace "*mp3*", "#N/A", MatchCase:=True
If Application.CountIf(Cells, "#N/A") Then Cells.SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
End Sub
A+
 

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour linadeau, bon,jour job75 & bonjour Patrick

@ job75 - Cette dernière version sera la plus adaptée à notre ami linadeau (s'il revient) car à la vue de son fichier image joint, l'on peut voir que le mot (extension) à retirer est
VB:
mp3',MP3
. Or like n'admet pas l'apostrophe ni la virgule ...
Par contre, si 2 mots identiques se trouvent sur la même ligne, le programme plante car les sélections se superposent.
Merci pour lui
Ma signature.gif
 

Eric C

XLDnaute Barbatruc
Re le fil

@ Patrick - Oui j'ai tenté de mettre Like "*mp3',MP3*" et j'ai une incompatibilité de type... donc je n'ai pas insisté. J'ai tenté avec les croches, croche et point d'exclamation mais en vain. Tu connais mon niveau.
Bonne journée
@+ Eric c
 

patricktoulon

XLDnaute Barbatruc
re
ben maintenant tu sais comment on fait
VB:
Sub test()
For Each cel In [A1:A10].Cells
If cel Like "*[']*" Then Debug.Print "avec apostrophe " & cel.Address(0, 0) & "  " & cel.Value
If cel Like "*[,]*" Then Debug.Print "avec virgule " & cel.Address(0, 0) & "  " & cel.Value
If cel Like "*mp3[,|']MP3*" Then Debug.Print "mp3 min maj " & cel.Address(0, 0) & "  " & cel.Value
Next
End Sub

demo7.gif
 

job75

XLDnaute Barbatruc
Chez moi Like "*mp3',MP3*" ne pose pas de problème.

Par contre le chevauchement en pose en effet alors essayez :
VB:
Sub Suppr_mp3_MP3()
Dim c As Range, sup As Range
For Each c In ActiveSheet.UsedRange
    If c Like "*mp3',MP3*" Then Set sup = Union(IIf(sup Is Nothing, c.EntireRow, sup), c.EntireRow)
Next
If Not sup Is Nothing Then sup.Delete
End Sub
qui va bien si le nombre de plages disjointes à unir ne dépasse pas quelques centaines.
 

job75

XLDnaute Barbatruc
Si l'on veut supprimer mp3 ou MP3 ou Mp3 ou mP3 :
VB:
Sub Suppr_mp3_MP3()
Dim c As Range, sup As Range
For Each c In ActiveSheet.UsedRange
    If LCase(c) Like "*mp3*" Then Set sup = Union(IIf(sup Is Nothing, c.EntireRow, sup), c.EntireRow)
Next
If Not sup Is Nothing Then sup.Delete
End Sub
 

job75

XLDnaute Barbatruc
Ah mais je découvre !

Pour ce qui est du chevauchement la suppression se fait bien avec Intersect, voyez ces codes :
VB:
Sub Suppr_mp3_fonctionne_pas()
Cells.Replace "*mp3*", "#N/A", MatchCase:=True
If Application.CountIf(Cells, "#N/A") Then Cells.SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
End Sub

Sub Suppr_mp3_fonctionne()
Cells.Replace "*mp3*", "#N/A", MatchCase:=True
If Application.CountIf(Cells, "#N/A") Then Intersect(Cells, Cells.SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete
End Sub

Sub RAZ()
[C4] = "mp3"
[E4] = "xxxmp3"
[G4] = "yyymp3zzz"
End Sub
 

Pièces jointes

  • Classeur(1).xlsm
    17.1 KB · Affichages: 4

Eric C

XLDnaute Barbatruc
Re le fil

@ Patrick - Oui, ta solution est également valable sauf que si l'on a plusieurs valeurs identiques sur une même ligne, la macro plante à cause des superpositions de valeurs.
Je vais tenter de faire un condensé de ta macro avec celle de job75 pour que cela fonctionne.

@ job75 - Personnellement, je vais garder sous le coude, la macro du post #26 qui est tout aussi efficace que la dernière "Sub Suppr_mp3_fonctionne()". Je ne vois pas de différence mais bon, il ne faut trop m'en demander.

Bonne soirée et merci pour ma boîte à macro et en espérant que linadeau vienne s'inspirer.
PS : la macro que j'avais sorti de ma boîte est efficace aussi, non ? Elle ne tient pas compte des superpositions.

@+ Eric c
 

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400