Macro pour supprimer des lignes
christ.lenoir
Messages postés
39
Statut
Membre
-
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,
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
-
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
-
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 -
-
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 -
-
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 !
-
-
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
-
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à ..
-