Excel : suppression de ligne par VBA
Fermé
lsarfati
Messages postés
6
Date d'inscription
vendredi 21 septembre 2012
Statut
Membre
Dernière intervention
21 septembre 2012
-
21 sept. 2012 à 00:57
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 21 sept. 2012 à 14:21
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 21 sept. 2012 à 14:21
A voir également:
- Excel : suppression de ligne par VBA
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
2 réponses
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
21 sept. 2012 à 08:11
21 sept. 2012 à 08:11
Bonjour,
Ces "mots" sont ils dans la meme colonne???
Ces "mots" sont ils dans la meme colonne???
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
Modifié par f894009 le 21/09/2012 à 14:22
Modifié par f894009 le 21/09/2012 à 14:22
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.
A+
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+
21 sept. 2012 à 09:06
Merci d'avance :)
21 sept. 2012 à 11:24
Oui. si vos "mots" sont vraiment dans des colonnes dispersees et que le nombre de lignes est assez consequent le traitement risque d'etre un long
21 sept. 2012 à 11:29
La durée n'est pas un problème : au pire, je laisse mon ordinateur "mouliner" le temps qu'il faut...
Modifié par f894009 le 21/09/2012 à 11:46
Cela fera moins de 5 minutes, faut pas exabuser.
Est-ce-que ces "mots" pourront etre sur la meme ligne??
21 sept. 2012 à 11:49
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.