Spécifique macro aidez moi les pro de excel
willcomcom
Messages postés
2
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai sur excel un tableau comprenant 6000 lignes (fichier clients).
Dans ma colonne A, j'ai des cellules contenant des références propre à mon entreprise du type 11669360OIF0001.
J'aimerai creer une macro qui me permetterai de supprimer la ligne entière des qu'une cellule contient les 3 lettres OIF.
SVP merci de me répondre je vous fait confiance
Merci d'avance....
will.
J'ai sur excel un tableau comprenant 6000 lignes (fichier clients).
Dans ma colonne A, j'ai des cellules contenant des références propre à mon entreprise du type 11669360OIF0001.
J'aimerai creer une macro qui me permetterai de supprimer la ligne entière des qu'une cellule contient les 3 lettres OIF.
SVP merci de me répondre je vous fait confiance
Merci d'avance....
will.
Configuration: Windows XP Internet Explorer 7.0
5 réponses
-
bonjour
Il te suffit de faire un filtre personnalisé sur la colonne avec "contient" "OIF" et de supprimer les lignes sélectionnées. -
Bonjour
aidez moi les pro de excel: tu payes combien ?
fonctionne jusqu'à enviiron 2000 "oif"
Sub supprimer_avec_condition() Application.ScreenUpdating = False On Error Resume Next lig = Columns(1).Find("OIF", Range("A65536"), , xlPart).Row Rows(lig).Delete If Err.Number > 0 Then: End supprimer_avec_condition End Sub
-
Bonjour,
Une macro qui fonctionne sur les 6000 lignes (ou plus)Sub supprime() Application.ScreenUpdating = False For i = 6000 To 1 Step -1 If InStr(1, Range("A" & i).Value, "OIF", vbTextCompare) > 0 Then Rows(i).Delete Next Application.ScreenUpdating = True End Sub
Par contre je suis assez curieux de savoir d'où provient la limitation à environ 2000 résultats avec la méthode .Find ? Michel ? -
bonjour
saturation de la pile
pour voir: remplace END par EXIT SUB avec 3 ou 4 "OIF"; chaque fois que tu relance la macro, "l'ancienne" n'est pas considéré comme terminée et ca s'empile jusqu'à saturer
VBa n'aime pas les récurrences:
je m'étais amusé à faire ce système question de rapidité et tester la récurrence car boucler sur toutes les lignes est un peu lourd: la fonction "find" évite cela
mais on pourrait utiliser "find" sans récurrence... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Voici "vite fait"
la macro avec "Find"; on boucle autant de fois qu'il y a de "find" au lieu de 6000 fois
Sub enlever_OIF() Dim nbre As Long, lig As Long, cptr As Long 'initialisation Application.ScreenUpdating = False nbre = Application.CountIf(Columns(1), "*OIF*") lig = 65536 'cherche et supprilmme les lignes OIF While cptr < nbre lig = Columns(1).Find("OIF", Cells(lig, 1), , xlPart).Row Rows(lig).Delete cptr = cptr + 1 Wend End Sub