Macro pour supprimer des lignes

christ.lenoir Messages postés 39 Statut Membre -  
christ.lenoir Messages postés 39 Statut Membre -
Bonjour,

J'ai cette macro qui fonctionne :
Sub Macro_2()

'Pour détruire les lignes qui commence par *
Sheets("DATA - Achats").Select

Dim Ligne As Integer

For Ligne = 1 To 10000
If Cells(Ligne, 13) = "Effacer" Then
Rows(Ligne & ":" & Ligne).EntireRow.Delete
End If
Next

End Sub

Toutefois, elle ne semble pas vouloir supprimer plus de deux lignes à la fois ??

Pourtant quand je désire masquer la ligne :
Rows(Ligne & ":" & Ligne).EntireRow.Hidden

ça fonctionne pour tous les lignes ....

Je ne comprends pas pourquoi ?
Y aurait-il un autre moyen pour supprimer mes lignes ?

Merci d'avance,

2 réponses

  1. xavier
     
    Bonjour christ.lenoir,

    Pour une suppression de lignes, il faut faire l'opération
    du bas vers le haut => voici ton code VBA modifié :

    
    Sub SupprLigs()
    
      ' pour supprimer les lignes qui commencent par *
    
      Worksheets("DATA - Achats").Select
      Application.ScreenUpdating = False
    
      Dim dlig As Long, lig As Long
    
      ' derrnière ligne, selon la colonne "M"
      dlig = Range("M" & Rows.Count).End(xlUp).Row
    
      For lig = dlig To 1 Step -1
        If Left$(Cells(lig, 13), 1) = "*" Then Rows(lig & ":" & lig).Delete
      Next lig
    
    End Sub
    
    

    Cordialement
     
    1
    1. christ.lenoir Messages postés 39 Statut Membre
       
      D'accord merci beaucoup Xavier pour votre réponse.
      Toutefois ça ne fait rien ??
      Juste pour ma compréhension, que veut dire cette partie de la macro:
      For lig = dlig To 1 Step -1
      If Left$(Cells(lig, 13), 1) = "*" Then Rows(lig & ":" & lig).Delete
      Next lig

      Je crois que là que ça bogue ... ou sinon là :
      dlig = Range("M" & Rows.Count).End(xlUp).Row
      0
    2. christ.lenoir Messages postés 39 Statut Membre
       
      Je travail avec Excel 2010 ... peut-être ça change quelque chose ??
      0
    3. xavier
       
      Edit :

      
      Sub SupprLigs()
      
        ' pour supprimer les lignes qui commencent par *
      
        Dim dlig As Long, lig As Long
      
        Worksheets("DATA - Achats").Select
        Application.ScreenUpdating = False
      
        ' dernière ligne, selon la colonne "M"
        dlig = Range("M" & Rows.Count).End(xlUp).Row
      
        For lig = dlig To 1 Step -1
          If Left$(Cells(lig, 13), 1) = "*" Then Rows(lig).Delete
        Next lig
      
      End Sub
      
      
      0
    4. christ.lenoir Messages postés 39 Statut Membre
       
      Ça ne fait toujours rien ...
      0
    5. christ.lenoir Messages postés 39 Statut Membre
       
      Je viens de comprendre ce que vous me proposiez...
      J'ai fait une petite modif et ça fonctionné !

      Merci,

      C'est que moi je ne savais pas comment faire la macro avec le Left alors je l'avais fait dans une fonction Si : =SI(GAUCHE(G2;1)="*";"Effacer";"")

      Toutefois avec votre macro, je n'ai plus besoin de cette fonction ...

      Ça fonctionne merci beaucoup !
      0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Poste un exemple de ton fichier sur monpartage.fr, fais créer un lien que tu copies et reviens coller ici, on regardera

    Cdlmnt
    Via
    0
    1. christ.lenoir Messages postés 39 Statut Membre
       
      Je ne peux pas malheureusement, il contient des données confidentielles ...

      Peut-être je peux être plus clair, dans les cellules se trouvant à la colonne 13, j'ai une formule Si qui me dit donne la réponse : Effacer ou"" quand je ne veux pas l'effacer ...
      Alors l'erreur ne provient pas de ce bout là ..
      0