Insérer une fonction qui supprime une ligne si un mot est reconnu

Bonjour,

Je travaille sur des fichiers très volumineux dont j'aimerais supprimer de nombreuses lignes. Je ne sais pas si c'est une question bête mais je n'arrive pas à mettre au point une fonction qui reconnaitrait les lignes à supprimer si elles comportent les mots sélectionnés. Je vous joins les trois premières lignes pour vous donner une idée, l'idée serait de supprimer toutes les lignes dont les codes postaux ne correspondent pas aux codes de nouvelle-aquitaine. Si quelqu'un pouvait m'aider, ce serait tellement aimable (j'avoue que je perds un temps monstre depuis 24h)..

Merci d'avance

10exemple1.xlsx (10.24 Ko)

Bonjour,

Par quel numéro commence les codes postaux de nouvelle aquitaine?

Quel est la colonne avec le code postal à vérifier?

Cindy

Bonjour Cindy,

Il s’agit des codes 16; 17; 19; 23; 24; 33; 40; 47; 64; 79; 86; 87.

C'est en colonne X.

Merci d'avance pour ton aide !

Voilà le code qu'il vous faut :

Sub SuppressionLignesCodePostal()

Dim DerniereLigne As Integer
Dim NumLigne As Integer
Dim Code As String

Application.ScreenUpdating = False
    DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row

    For NumLigne = DerniereLigne To 2 Step -1
        Code = Left(Range("X" & NumLigne), 2)
        Select Case Code
            Case "16", "17", "19", "23", "24", "33", "40", "47", "64", "79", "86", "87"
            Case Else
                Rows(NumLigne).Delete
        End Select
    Next NumLigne
End Sub

Je vous renvoie également votre fichier.

Si cette réponse vous convient, n'oubliez pas de valider cette réponse

Bonne journée!

Cindy

25exemple1.xlsm (18.16 Ko)

Bonjour,

Procédure à essayer :

Sub SupprimerLignes()
    Dim i&
    Application.ScreenUpdating = False
    With ActiveSheet.Range("A1").CurrentRegion
        For i = 2 To .Rows.Count
            Select Case .Cells(i, 24) \ 1000
                Case 16, 17, 19, 23, 24, 33, 40, 47, 64, 79, 86, 87
                Case Else: .Cells(i, 24).ClearContents
            End Select
        Next i
        .Offset(, 23).Resize(, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End With
End Sub

Presque la même méthode que Cindy... mais la colonne X contient des nombres et je préfère travailler sur des nombre et la suppression ligne par ligne peut ensuite prendre pas mal de temps, effacer la cellule permet de les supprimer en bloc à la fin.

Cordialement.

Merci énormément !

N'oubliez pas de valider une réponse en cliquant sur le check à côté de la réponse pour clôturer le sujet.

Bonne journée,

Cindy

Finalement, je ne pense pas que ce soit le code mais je n'arrive pas à le faire fonctionner.. il faut aller dans macro / exécuter non ?

Il faut aller dans Développeur / Macro / Sélectionner la macro puis Exécuter

Cindy

Où as-tu placé la macro ?

Tu as également un accès à la boîte de dialogue macro dans l'onglet Affichage.

Je n'ai pas placé la macro. Lorsque j'ouvre l'onglet macro dans développeur, celle de Cindy est déjà là mais quand je mets exécuter il ne se passe rien.

Bonjour tocata, le forum,

Cindy a écrit :

N'oubliez pas de valider une réponse en cliquant sur le check à côté de la réponse pour clôturer le sujet.

ça signifie que tu dois cliquer sur le bouton qui est situé près du bouton (dans le coin haut droit d'un post, de préférence celui qui t'a aidé à résoudre ton exo) ; toi seul peut le faire, car c'est toi qui a créé ce sujet ; tu sauras que tu as réussi quand tu verras un petit rond vert avec une coche, comme ceci :

dhany

Quand vous la lancez, vous êtes bien sur l'onglet à traiter ?

Cindy

Bonjour,

Un simple AutoFiltre sur la colonne des codes postaux n'aurait pas suffit ? Ensuite il suffisait d'exclure les codes de Nouvelle-Aquitaine et de supprimer ce qui reste affiché.

Je dois être insupportable mais qu'entendez vous par "l'onglet à traiter" ?

Bonjour Pedro,

Je suis vraiment novice en fait, un auto-filtre se fait depuis l'onglet développeur ?

Onglet a traiter = La feuille dans laquelle se trouvent tes données

Pour un AutoFiltre, sélectionne la ligne entière contenant les en-têtes de ton tableau, puis --> Données --> Filtrer

Ok pardon cindy, je pensais que la macro allait supprimer les lignes. En fait les cellules ont été blanchies. Merci beaucoup

Et merci Pedro pour l'aide. Je vais aussi essayer de travailler à partir d'auro-filtres

Bonjour,

Un simple AutoFiltre sur la colonne des codes postaux n'aurait pas suffit ? Ensuite il suffisait d'exclure les codes de Nouvelle-Aquitaine et de supprimer ce qui reste affiché.

Oui on peut procéder par filtrage, manuel ou VBA, on filtre de façon à masquer les codes Aquitaine, on supprime en bloc les cellules visible de la plage et on réaffiche le reste...

Rechercher des sujets similaires à "inserer fonction qui supprime ligne mot reconnu"