XL 2019 Suppression des lignes contenant une partie d'un mot

  • Initiateur de la discussion Initiateur de la discussion Ni201
  • Date de début Date de début

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 !

Ni201

XLDnaute Nouveau
Bonjour,
Très novice en VBA, j'essaie d'expliquer:
J'ai une colonne Excel contenant des mots.
Je voudrais effacer la ligne dès que je trouve dans le mot la chaine #NEW#.
Exemple:
1-TOTO#REDOUBLANT#
2-TATA#NEW#
3-TITI#NEW#TRANSFERT
4-TETE#CRITERES#
5- #NEW#TUTU#ADMIS

Je voudrais supprimer les lignes 2, 3 et 5.
Merci pour une réponse ou indication.
 
Solution
Bonsoir Ni201, M12,

J'ai refais [Edit : refait] mon message.
J'ai compris le code.
Oui c'est simple mais avec un grand tableau ça prend beaucoup trop de temps.

Voyez les fichiers joints avec 30 000 lignes, le 2ème avec cette macro :
VB:
Sub Supprime()
Dim ws As Worksheet, tablo, i, n
Set ws = Worksheets("Feuil1")
tablo = ws.[A1].CurrentRegion.Resize(, 2) 'matrice plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    If Not tablo(i, 1) Like "*NEW*" Then
        n = n + 1
        tablo(n, 1) = tablo(i, 1)
    End If
Next
'---restitution---
With ws.[A1] '1ère cellule de destination
    If n Then .Resize(n) = tablo
    .Offset(n).Resize(ws.Rows.Count - n - .Row).ClearContents 'RAZ en dessous
End With
End Sub
Bonne...
Bonsoir Ni201, M12,

J'ai refais [Edit : refait] mon message.
J'ai compris le code.
Oui c'est simple mais avec un grand tableau ça prend beaucoup trop de temps.

Voyez les fichiers joints avec 30 000 lignes, le 2ème avec cette macro :
VB:
Sub Supprime()
Dim ws As Worksheet, tablo, i, n
Set ws = Worksheets("Feuil1")
tablo = ws.[A1].CurrentRegion.Resize(, 2) 'matrice plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    If Not tablo(i, 1) Like "*NEW*" Then
        n = n + 1
        tablo(n, 1) = tablo(i, 1)
    End If
Next
'---restitution---
With ws.[A1] '1ère cellule de destination
    If n Then .Resize(n) = tablo
    .Offset(n).Resize(ws.Rows.Count - n - .Row).ClearContents 'RAZ en dessous
End With
End Sub
Bonne nuit.
 

Pièces jointes

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

Retour