Supprimer toutes les lignes contenant le mot "Representative"

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 !

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

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 ...
 
@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 ! 😵 😱

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

soan
 
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 ! 😀

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
 
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+
 
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
 
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 .😉
 
S'il y a des formats à conserver la méthode par tableau VBA ne convient pas.
Oui, mais il n'y a aucune modification faite via tableau, juste des delete de row ??? 🤔

Bien sûr sauf s'il y a "Precious Alloy", c'est ce que veut notre ami.
C'est vrai qu'il n'a pas précisé si ce sont des mots ou des chaines de caractères ...😙
 
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.
 
- 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
1
Affichages
249
Retour