Macro pour supprimer des lignes

Fermé
christ.lenoir Messages postés 38 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 septembre 2017 - 7 sept. 2017 à 18:49
christ.lenoir Messages postés 38 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 septembre 2017 - 7 sept. 2017 à 19:32
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

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 38 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 septembre 2017
7 sept. 2017 à 19:25
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 38 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 septembre 2017
7 sept. 2017 à 19:26
Je travail avec Excel 2010 ... peut-être ça change quelque chose ??
0
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 38 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 septembre 2017
7 sept. 2017 à 19:29
Ça ne fait toujours rien ...
0
christ.lenoir Messages postés 38 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 septembre 2017
7 sept. 2017 à 19:32
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 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
7 sept. 2017 à 18:54
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 38 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 septembre 2017
7 sept. 2017 à 18:59
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