VBA: Effacer cellules ne correspondant pas à [Résolu/Fermé]

Signaler
-
 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

Messages postés
16043
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 janvier 2020
2 855
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 83004 internautes nous ont dit merci ce mois-ci

Michel, c'est génial. Ca marche super ! Merci beaucoup vraiment.
Messages postés
16043
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 janvier 2020
2 855
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 ?
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.
michel_m
Messages postés
16043
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 janvier 2020
2 855
Excuse- moi, un autre truc dont j'ai besoin : combien de colonnes maxi ?
Le tableau contient 13 colonnes et les cellules concernées par la rechers sont toujours la 4ème.
Messages postés
41
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
20 avril 2010
38
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