Excel : suppression de ligne par VBA
lsarfati
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutant en VBA et je souhaite programmer une macro qui me permette de rechercher plusieurs mots (qu'on appellera "mot1", "mot2" et "mot3" par exemple) sur une feuille Excel. Je ne sais pas d'avance sur quelle ligne ou colonne il seront.
(N.B : une cellule peut contenir plusieurs mots, "mot1", "mot2" ou "mot3" étant l'un des mots).
Je souhaite rechercher en effaçant chaque ligne comportant l'un des mots "mot1", "mot2", ou "mot3".
Merci par avance
Laurent
Je suis débutant en VBA et je souhaite programmer une macro qui me permette de rechercher plusieurs mots (qu'on appellera "mot1", "mot2" et "mot3" par exemple) sur une feuille Excel. Je ne sais pas d'avance sur quelle ligne ou colonne il seront.
(N.B : une cellule peut contenir plusieurs mots, "mot1", "mot2" ou "mot3" étant l'un des mots).
Je souhaite rechercher en effaçant chaque ligne comportant l'un des mots "mot1", "mot2", ou "mot3".
Merci par avance
Laurent
2 réponses
-
Bonjour,
Ces "mots" sont ils dans la meme colonne???-
-
-
-
-
Bonjour,
personnellement, je pense à utiliser la fonction Recherche en VBA pour détecter d'abord les lignes contenant le mot "mot1", et les supprimer.
Refaire une passe pour les lignes restantes avec le mot "mot2", et enfin avec le mot "mot3".
Pas trop le temps de faire la macro, mais c'est l'idée qui me vient à la tête.
-
-
Re,
En fonction de ce que j'ai compris de votre demande:
Recherche de x mots dans une plage de xx lignes et 6 colonnes consecutives
Un exemple de code a mettre dans VBA d'un module ou ThisWorkbook
La saisie de la liste peut s'automatiser.
Sub test() Dim col_Test As Range, Liste_Mot(15), derlig_test Dim Nbr, cpt, LigTr, Col_Cherch, rang_Mot t = Timer Erase Liste_Mot 'Liste des mot a chercher sans trou dans la liste Liste_Mot(1) = "A" Liste_Mot(2) = "B" Liste_Mot(3) = "C" Liste_Mot(4) = "D" Liste_Mot(5) = "E" Liste_Mot(6) = "F" Liste_Mot(7) = "" Liste_Mot(8) = "" Liste_Mot(9) = "" Liste_Mot(10) = "" 'mettre le nom de la feuille With Worksheets("Feuil1") For rang_Mot = 1 To 15 Mot_Cherch = Liste_Mot(rang_Mot) If Mot_Cherch = "" Then Exit For For col = 1 To 6 'derniere ligne utilisée de la feuille derlig_test = Worksheets(1).Cells.Find("*", , , , xlByRows, xlPrevious).Row Set col_Test = .Range(Cells(1, col), Cells(derlig_test, col)) 'Nombre d'apparitions Nbr = Application.CountIf(col_Test, Mot_Cherch) If Nbr > 0 Then LigTr = 1 For cpt = 1 To Nbr 'Colonne en caractere Col_Cherch = Chr(64 + col) 'Recherche position mot LigTr = .Columns(Col_Cherch).Find(Mot_Cherch, .Cells(LigTr, Col_Cherch), , , xlWhole).Row 'Suppression ligne .Rows(LigTr & ":" & LigTr).Delete Shift:=xlUp Next cpt End If Next col Next rang_Mot End With Z = Timer - t End Sub
A+