Spécifique macro aidez moi les pro de excel

Fermé
willcomcom Messages postés 2 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 22 juillet 2009 - 22 juil. 2009 à 09:26
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 juil. 2009 à 10:50
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.
A voir également:

5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
22 juil. 2009 à 09:49
bonjour

Il te suffit de faire un filtre personnalisé sur la colonne avec "contient" "OIF" et de supprimer les lignes sélectionnées.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
22 juil. 2009 à 09:51
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


0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
22 juil. 2009 à 10:09
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 ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
22 juil. 2009 à 10:27
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
22 juil. 2009 à 10:50
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
0