Spécifique macro aidez moi les pro de excel

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. Contributeur
    bonjour

    Il te suffit de faire un filtre personnalisé sur la colonne avec "contient" "OIF" et de supprimer les lignes sélectionnées.
    0
    1. Contributeur
      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
      1. Contributeur
        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
        1. Contributeur
          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
          1. Contributeur
            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