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   -
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.
Configuration: Windows XP Internet Explorer 7.0

5 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Il te suffit de faire un filtre personnalisé sur la colonne avec "contient" "OIF" et de supprimer les lignes sélectionnées.
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  3. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    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
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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