Supprimer 4 lignes sur 5 Excel (VBA)

Résolu/Fermé
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - Modifié par Swiss Knight le 2/06/2010 à 17:28
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 2 juin 2010 à 17:52
Bonjour,
je souhaiterai supprimer 4 lignes sur 5 dans un fichier excel de plusieurs colonnes et plusieurs milliers de lignes. (toute la ligne doit partir, pour toutes les colonnes hein).
En gros j'ai ça :

A B C ...
1
2
3
...

Et j'aimerai ça :

A B C ...
1
6
11
16
...

Je n'y connais strictement rien en VBA alors je m'en remets à vous.
Un grand merci d'avance !!

PS : j'ai gribouillé ça mais ça efface absolument tout mon fichier :
 Sub Delete_Every_Other_Row() 

   For I = 0 To (Selection.Rows.Count -1) 
       If I Mod (5) <> 1 Then 
           ' ...delete an entire row of cells. 
           Selection.Rows.EntireRow.Delete 
       End If 
   Next I 

End Sub
A voir également:

2 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 juin 2010 à 17:38
Bonjour,

Je ferai plutôt un truc comme ça :

Dim Derlig As Long
Dim i As Long

Derlig = Range("A1").End(xlDown).Row

For i = 6 To Derlig Step 5
     Rows(i).Delete
     i = i - 1
Next i


;o)
0
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
Modifié par Swiss Knight le 2/06/2010 à 19:59
Salut et merci de ton coup de main, c'est presque ça...
en commençant par 1 au lieu de 6 ça va un peu mieux...
mais...

ça supprime exactement les lignes que je souhaiterai garder (à savoir 1 sur 5) et ça garde les 4 autres (que je souhaiterai virer)...

Petite précision :
les chiffres que j'ai mis sur l'exemple dans mon premier post, ce sont les numéros des lignes d'excel, en aucun cas les valeurs des cellules de la colonne A.

Mais si ça peut aider, les valeurs de la colonne A sont incrémentées de 0,2 à chaque fois en partant de 200 jusqu'à 700. Et donc, celles que je souhaite garder sont les valeurs "rondes". Mais ces valeurs peuvent changer dans un autre fichier où je serai amené à faire pareil, donc je préfère faire ça de manière relative à excel et pas à ce qu'il y a dans les cellules.
Je vais essayé quelque chose en attendant...


EDIT : finalement résolu :
  Sub supress()
           
           Dim I     As Long
           Dim Plage As Range
           Set Plage = Range("A1:A" & Range("A2").End(xlDown).Row)
           For I = Plage.Cells.Count To 1 Step -1
             If Plage.Cells(I).Value Mod (5) <> 1 Then
               Plage.Cells(I).EntireRow.Delete
             End If
           Next
           
           End Sub


Et il y avait un autre moyen, sans code, que j'avais pas vu...

Bonne soirée à tout le monde.

"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
0