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,

A voir également:

2 réponses

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
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
christ.lenoir Messages postés 39 Statut Membre
 
Je travail avec Excel 2010 ... peut-être ça change quelque chose ??
0
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
christ.lenoir Messages postés 39 Statut Membre
 
Ça ne fait toujours rien ...
0
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
via55 Messages postés 14730 Date d'inscription   Statut Membre Dernière intervention   2 750
 
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
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