VBA: Effacer cellules ne correspondant pas à

Résolu/Fermé
Juliette - 19 avril 2010 à 09:42
 Juliette - 19 avril 2010 à 13:28
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

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2010 à 12:28
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
Michel, c'est génial. Ca marche super ! Merci beaucoup vraiment.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2010 à 11:06
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
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2010 à 11:13
Excuse- moi, un autre truc dont j'ai besoin : combien de colonnes maxi ?
0
Le tableau contient 13 colonnes et les cellules concernées par la rechers sont toujours la 4ème.
0
dct33 Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 20 avril 2010 39
Modifié par dct33 le 19/04/2010 à 14:13
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