Excel: supprimer une ligne sur 10

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

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. Aurélie
     
    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
    1. Aurélie
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      pour les 50 ou 100 ou 20 je regarde et te dis...
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    4. Aurélie
       
      Merciiiiiiiii :-)
      0