VBA: Effacer cellules ne correspondant pas à

Résolu
Juliette -  
 Juliette -
Bonjour à tous et bon début de semaine,

je cherche depuis un certain moment un moyen d'effacer toutes les lignes dont la cellule de la colonne "D" ne contient pas la valeur d'un textbox. Les cellules de la colonne D contiennent un nom précédé d'un code client. (exemple : "123456 Jean"). Si la valeur de mon textbox est 123456 comment effacer toutes les lignes ne contenant pas 123456 ?

Merci d'avance pour votre aide qui m'a déjà été fort précieuse par le passé.

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    en supprimant les lignes fautives d'un seul coup

    Const lig_dep As Byte = 2 'ta ligne de départ
    Const col_dep As Byte = 4 'ta colonne de recherche (ici D)
    
    Sub supprimer_intrus()
    Dim numero As String * 9
    Dim derlig As Integer, cptr As Integer
    Dim ligs_del As String
    
    numero = CStr(123456789) '  123456789 a remplacer par ton textbox
    derlig = Cells(10000, col_dep).End(xlUp).Row
    For cptr = lig_dep To derlig
        If Left(Cells(cptr, col_dep), 9) <> numero Then
            ligs_del = ligs_del & cptr & ":" & cptr & ","
        End If
    Next
    If ligs_del <> "" Then
        Application.ScreenUpdating = False
        ligs_del = Left(ligs_del, Len(ligs_del) - 1)
        Range(ligs_del).Delete
    End If
    End Sub

    1
    1. Juliette
       
      Michel, c'est génial. Ca marche super ! Merci beaucoup vraiment.
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    as tu toujours 6 chiffres et un espace entre le code et le nom ( je suppose aussi que les codes varient ?)

    Combien de lignes à traiter ?
    0
    1. Juliette
       
      Bonjour michel,

      Le code est toujours composé de 9 chiffres et est toujours suivi d'un espace. Les lignes a traiter varient mais sont en général proche du millier.

      Merci de prendre une nouvelle fois du temps pour résoudre mon problème.
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Excuse- moi, un autre truc dont j'ai besoin : combien de colonnes maxi ?
      0
    3. Juliette
       
      Le tableau contient 13 colonnes et les cellules concernées par la rechers sont toujours la 4ème.
      0
  3. dct33 Messages postés 42 Statut Membre 39
     
    Bonjour,
    Faire une boucle sur la colonne D du début des données à la fin des données

    ' 1- en colonne D il peut y avoir des cellules vides
    ' les cellules vides seront supprimées

    Sub Macro5()

    Dim Debut_Donnees As Integer
    Dim Fin_Donnees As Integer

    Debut_Donnees = 3 ' mettre la bonne valeur

    Fin_Donnees = Range(Cells(65536, 4), Cells(65536, 4)).End(xlUp).Row

    For X = Debut_Donnees To Fin_Donnees

    If Left(Cells(X, 4), Len(TextBoX.text)) <> TextBoX.text) Then

    Cells(X, 4).EntireRow.Delete
    X = X - 1
    Fin_Donnees = Fin_Donnees - 1
    End If

    Next X

    End Sub

    Bonne programmation
    0