Excel: supprimer une ligne sur 10
Aurélie
-
Aurélie -
Aurélie -
Bonjour,
Nous recherchons une solution qui permette de ne conserver qu'une ligne sur 10 (nos tableaux reprennent des dizaines de milliers de lignes, un dixième d'entre elles suffiraient)
Le tableau est constitué de 3 colonnes, la première contenant des nombres de 1 à ....
La seconde des données numériques, la troisième des heures.
Nous souhaitons par exemple trier sur la première colonne pour ne conserver que les multiples entiers de 10: 1, 10, 20, 30, etc.
Si quelqu'un peut m'aider ;-)
Nous utilisons Excel 2007
Aurélie
Nous recherchons une solution qui permette de ne conserver qu'une ligne sur 10 (nos tableaux reprennent des dizaines de milliers de lignes, un dixième d'entre elles suffiraient)
Le tableau est constitué de 3 colonnes, la première contenant des nombres de 1 à ....
La seconde des données numériques, la troisième des heures.
Nous souhaitons par exemple trier sur la première colonne pour ne conserver que les multiples entiers de 10: 1, 10, 20, 30, etc.
Si quelqu'un peut m'aider ;-)
Nous utilisons Excel 2007
Aurélie
2 réponses
-
Bonjour,
y'a pas un "édition -> supprimer 9 ligne sur 10" ? mdr
je crois tout faire à la main est la seule solution...
avis aux pros d'excel...
autrement dit: je maitrise parfaitement Excel et si je ne sais pas faire il faut forcément être pro?...
Aurélie,
ci joint maquette sur env 300 lignes
le code VBA est prévu pour un grand nombre de lignes
http://www.cijoint.fr/cjlink.php?file=cj201009/cijxEG8CN4.xls
actuellement le résultat est sur la feuille2 pour garder une trace de l'original. di tu veux supprimer l'original ca ne posera pas de problème pour aménager le code
tu dis si ca te convient
cordialement,
Michel
:-x -
Ca a l'air de fonctionner, mais dis-moi, où puis je trouver le code que tu as utilisé?
Je suis loin d'être pro :-s
;-) Merci!-
-
-
et voilà la macro ; les modifs sont en gras
Const premlig As Byte = 2 ' 1° ligne du tableau Const saut As Integer = 50 ' pas des lignes à conserver Sub garder_1sur10() Dim nbre_lig As Long, derlig As Long, lig As Long, ind_t As Long Dim tab_10 ReDim tab_10(2, 0) 'tableau recueuillant les valeurs des 3 colonnes 'dernier ligne du tableau-array multiple de 10 With Sheets(1) nbre_lig = Int(.Range("A" & .Cells.Rows.Count).End(xlUp).Row / saut) derlig = (nbre_lig * saut) + premlig - 1 '----- ----------------------------remplit le tableau-array 'départ 1 n'est pas multiple de "saut" tab_10(0, 0) = .Cells(premlig, 1) tab_10(1, 0) = .Cells(premlig, 2) tab_10(2, 0) = .Cells(premlig, 3) ReDim Preserve tab_10(2, 1) 'ligne dont colonne A multi^ple de "saut" ind_t = 1 'indice tableau For lig = premlig + saut - 1 To derlig Step saut tab_10(0, ind_t) = .Cells(lig, 1) tab_10(1, ind_t) = .Cells(lig, 2) tab_10(2, ind_t) = .Cells(lig, 3) ind_t = ind_t + 1 ReDim Preserve tab_10(2, ind_t) Next ReDim Preserve tab_10(2, ind_t - 1) End With 'restitue en feuille 2 Application.ScreenUpdating = False With Sheets(2) .Range("A2:C" & .Cells.Rows.Count).ClearContents .Range("A2").Resize(nbre_lig + 1, 3) = Application.Transpose(tab_10) .Range("C2").Resize(nbre_lig + 1, 1).NumberFormat = "h:mm:ss;@" .Activate End With End Sub
j'ai essayé avec 50, mais ca doit marcher aussi avec 21 ou 37.... -
-