Macro cherche mots dans colonne et supprime lignes n'ayant pas ces mots

Bonjour,

Je suis débutant en excel vba et je souhaiterais savoir si vous pouvez m'aider svp pour le sujet suivant :

J'ai un fichier excel qui a énormément de lignes plus de 400 000 lignes (il s'agit d'un fichier brut que je veux dégrossir et ne garder qu'une sélection de lignes spécifiques avec des mots précis). Les lignes dont je n'ai pas besoin représentent environ 200 000 lignes.

Dans la colonne AN (exemple ci-joint), je cherche une macro qui irait chercher les mots Taxi ou Balai sur toute la colonne AN (énormément de lignes), si elle ne trouve pas ces mots, alors elle supprime toutes les lignes qui n'ont pas ces mots; merci

30classeur1.xlsx (7.49 Ko)

Hello,

Tableau de gauche, tu mets ta liste de mots à rechercher.

Tableau du milieu tu mets mots dans lesquels tu vas aller chercher une correspondance

Tableau de droite : clique droit puis "Actualiser")

@+

25classeur1-9.xlsx (18.38 Ko)

Bonjour,

Merci mais je ne vois pas le code macro

Hello,

Normal cest du PowerQuery je n’avais pas fait attention à ta version il faut que tu l’installes car pas intégré en natif avant les versions de 2016.

Tu tapes installer PowerQuery et tu vas vite tomber sur le site de Microsoft.

Je t’invite à te renseigner dessus cest hyper addictif =D

bonjour le fil,

on utilise une formule dans une colonne pour vérifier la présence de balai et de taxi, puis on utilise un autofilter et on copie les cellules visibles, puis on nettoie la feuille

Sub Taxi2()
     Dim t, c
     Dim MyCol As String: MyCol = "AA"       'une colonne aléatoire auxiliaire

     t = Timer                               'chronomètre
     Application.ScreenUpdating = False      'bloquer l'écran
     With Sheets("Données Brutes")           'la feuille
          .Range("A1").EntireColumn.ClearContents     'vider cette colonne
          If .AutoFilterMode Then .AutoFilterMode = False     'supprimer filtres actives

          Set c = Range(.Range("AN1"), .Range("AN" & Rows.Count).End(xlUp))     'la plage
          c.Offset(, .Cells(1, MyCol).Column - c.Column).FormulaR1C1 = "=(ISNUMBER((SEARCH(""balai"",RC" & c.Column & ")))+ISNUMBER((SEARCH(""taxi"",RC" & c.Column & ")))>0)+0"     'une formule dans la colonne auxiliaire
          c.Offset(, .Cells(1, MyCol).Column - c.Column).AutoFilter 1, 1     'autofilter sur cette colonne
          c.Copy .Range("A1")                'copier et coller les cellules visibles vers A1

          If .AutoFilterMode Then .AutoFilterMode = False     'supprimer filtres actives
          c.Offset(, .Cells(1, MyCol).Column - c.Column).ClearContents     'RAZ colonne auxiliaire
          .Range("A1").EntireColumn.AutoFit  'ajuster largeur colonne
     End With

     MsgBox "Prêt en " & Format(Timer - t, "0.0\s")
End Sub
15debutant.xlsb (21.56 Ko)

re,

une macro "débutante"

16debutant.xlsb (22.54 Ko)
Sub taxi1()
     t = Timer                               'chronomètre
     With Sheets("Données Brutes")           'la feuille
          .Range("A1").EntireColumn.ClearContents     'vider cette colonne
          .Range("A1").Value = .Range("AN1").Value     'les entêtes

          For Each c0 In .Range(.Range("AN2"), .Range("AN" & Rows.Count).End(xlUp)).Cells     'la plage
               If c0.Row Mod 1000 = 0 Then Application.StatusBar = c0.Row     'montrer le  progrès dans le statusbar
               If InStr(1, c0.Value, "balai", 1) + InStr(1, c0.Value, "taxi", 1) > 0 Then
                    c0.Copy .Range("A" & Rows.Count).End(xlUp).Offset(1)
               End If
          Next
     End With

     MsgBox "Prêt en " & Format(Timer - t, "0.0\s")
     Application.StatusBar = ""
End Sub

Bonjour à tous !

Selon ma compréhension du besoin (), une approche Power Query :

Hello à tous,

JFL merci pour cette approche, en effet je ne comprends même plus ce que j'ai proposé. L'utilisation de List.ContainsAny et vraiment astucieux quand on fait de la recherche de mot en particulier dans des chaîne de caractères. Je garde l'astuce précieusement

@+

Rechercher des sujets similaires à "macro cherche mots colonne supprime lignes ayant pas"