Supprimer toutes les lignes contenant le mot "Representative"

josanche

XLDnaute Occasionnel
Bonjour,

J'aurais besoin de votre aide. Je voudrais savoir comment on fait via un macro ou une autre fonction excel pour supprimer toutes les lignes du fichier excel contenant le mot "Representative" en sachant que les lignes sont du textes ! J'aimerais un macro qui analyse ligne par ligne et supprime chaque ligne de texte contenant le mot "Representative"

Merci pour votre aide

Cordialement
 

Pièces jointes

  • Echantillon.xlsx
    11.1 KB · Affichages: 233
  • Echantillon.xlsx
    11.1 KB · Affichages: 237
  • Echantillon.xlsx
    11.1 KB · Affichages: 262

fanch55

XLDnaute Barbatruc
Dim Cel As Range
Do
Set Cel = Cells.Find("Rich", , xlValues, xlPart)
If Cel Is Nothing Then Exit Do
If Not Cel.EntireRow.Find("Precious Alloy") Is Nothing Then Exit Do
Cel.EntireRow.Delete
Loop
End Sub

Cela dit s'il y a beaucoup de lignes à supprimer ça prendra du temps car la méthode Find est lente.
Salut @job75 ,
Ta méthode ne cherche pas que le mot Rich : Richelieu,Richard seront également détruits ....

Je suis d'accord quand à la rapidité du Find ...
 

soan

XLDnaute Barbatruc
Inactif
@job75

??? j'comprends pas : dans ton post précédent, que tu as supprimé,
tu as dit toi-même à @fanch55 (salut !) qu'il vaut mieux éviter
d'utiliser Find car c'est une méthode lente ; et dans ton nouveau

Lien supprimé, tu utilises une méthode avec Find ! o_O :eek:

y'a même 2 Find ! pas qu'un seul !!! 😛

soan
 

soan

XLDnaute Barbatruc
Inactif
ah ben @job75 a aussi supprimé son post #33 ! 😛

du coup, les autres posts ont tous remontés d'un cran ; ça explique
pourquoi le post #33 est maint'nant celui de fanch55 ! :D

pas facile de suivre les numéros avec toutes ces suppressions de postes !
est-ce que @job75 nous fait du licenciement économique en masse ?


soan
 

job75

XLDnaute Barbatruc
Bonjour Styv17, le fil,

J'ai supprimé mon 1er message car il était sans intérêt.

Voici une méthode rapide :
VB:
Sub Supprimer()
Application.ScreenUpdating = False
With ActiveSheet 'à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .UsedRange
        With .Columns(.Columns.Count + 1) 'colonne auxiliaire
            .FormulaR1C1 = "=1/SIGN(COUNTIF(RC1:RC[-1],""*Rich*""))/NOT(COUNTIF(RC1:RC[-1],""*Precious Alloy*""))"
            .Value = .Value 'supprime les formules
            .EntireRow.Sort .Cells, xlDescending, Header:=xlNo
            On Error Resume Next 'si aucune SpecialCell
            .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
            .EntireColumn.Delete 'supprime la colonne auxiliaire
        End With
    End With
    With .UsedRange: End With 'actualise les barres de défilement
End With
End Sub
A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

@soan : si on utilise un tableau, autant pousser la logique jusqu'au bout pour être très rapide.

VB:
Sub aBasLesRiches()    
Dim t, n&, i&, j&, d
   d = Timer
   Application.ScreenUpdating = False
   With Worksheets("Feuil1")
      If .FilterMode Then .ShowAllData
      t = .Range("a1:h" & .Cells(.Rows.Count, "g").End(xlUp).Row)
      For i = 1 To UBound(t)
         If t(i, 7) <> "Rich" Or t(i, 6) = "Precious Alloy" Then
            n = n + 1: For j = 1 To UBound(t, 2): t(n, j) = t(i, j): Next
         End If
      Next i
      .Range("a1:h1").Resize(UBound(t)).Clear: .Range("a1:h" & n) = t
   End With
   MsgBox Format(Timer - d, "0.00")
End Sub
 

fanch55

XLDnaute Barbatruc
Salut @soan
C'est vrai, la méthode tableau est de loin la meilleure question rapidité, mais c'est aussi la plus statique .
Tu es parti du postulat de chercher dans 2 colonnes précises et cela colle parfaitement avec ce qui a été demandé .
Imaginons qu'une colonne change de place, le code est à revoir .
La méthode du Find (même plus lente) , dans ce cas est assez rapide pour répondre aussi à la demande, elle n'est pas dépendante de l'ordre des colonnes .

Les 2 méthodes sont donc viables, il doit même en exister d'autres et c'est tant mieux .;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Oui, mais il n'y a aucune modification faite via tableau, juste des delete de row ???

la méthode utilisé par Soan utilise un tableau juste pour pour chercher les mots. La suppression des se fait ligne après ligne. On perd en grande partie l'avantage du tableau.

Je suis du même avis que @job75.

Si le format nous importe peu, utiliser le tableau pour lire d'un seul coup et écrire le résultat d'un seul coup.
Si le format est important, alors la méthode de la formule et du tri s'impose.

La différence entre les deux méthodes est si faible qu'il vaut mieux utiliser qu'une seule méthode (la seconde) dans tous les cas. On n'est pas à une poignée de 100ième de seconde.
 

Discussions similaires

Réponses
34
Affichages
853

Statistiques des forums

Discussions
314 450
Messages
2 109 724
Membres
110 552
dernier inscrit
jasson