Excel: supprimer une ligne sur 10

Fermé
Aurélie - 9 sept. 2010 à 12:20
 Aurélie - 22 sept. 2010 à 14:23
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

A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 9/09/2010 à 15:00
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
0
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!
0
Ok j'ai trouvé la macro, c'est super!!!

Merci ça va beaucoup nous aider.

Si on souhaite faire tous les 50 par exemple, où doit-on changer?

Encore merci!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 sept. 2010 à 17:11
pour les 50 ou 100 ou 20 je regarde et te dis...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 sept. 2010 à 17:22
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....
0
Merciiiiiiiii :-)
0