Trier à l'aide d'une macro

Résolu
Salut les amis
j'ai une grande tache a traiter il s'agit de préparer 22 fichiers concernat les liste des élèves qui vont bénéficier du soutien pendant le 2 eme semestre dans les matières suivantes : math ; langue arabe et langue française chaque liste doit contenir les noms et les moyennes des élèves ayant une moyenne inférieure strictement à 5
la liste des élèves et les moyenne se trouvent dans la feuille " semestre " je veux les extraire les listes dans la feuille " soutien " par une macro
le classeur se trouve dans l'adresse ci-dessous
http://www.cjoint.com/c/FBfqC0hdqjP
merci infiniment

4 réponses

  1. Bonjour,

    Le code suivant devrait répondre à votre demande :

    Sub ElevesEnSoutien()

    Dim DernLigne As Long
    DernLigne = Sheets("semestre").Range("B" & Rows.Count).End(xlUp).Row
    m = 6 'début de collage pour soutien

    For i = 5 To DernLigne

    'Français
    Sheets("semestre").Select
    If Range("AI" & i).Value >= 5 Then
    Else

    'Nom français
    Sheets("semestre").Select
    Range("B" & i).Select
    Selection.Copy
    Sheets("soutien").Select
    Range("L" & m & ":M" & m).Select
    ActiveSheet.Paste

    'Moyenne français
    Sheets("semestre").Select
    Range("AI" & i).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("soutien").Select
    Range("N" & m & ":O" & m).Select
    ActiveSheet.Paste

    End If 'Fin Français

    'Maths
    Sheets("semestre").Select
    If Range("X" & i).Value >= 5 Then
    Else

    'Nom Maths
    Sheets("semestre").Select
    Range("B" & i).Select
    Selection.Copy
    Sheets("soutien").Select
    Range("H" & m & ":I" & m).Select
    ActiveSheet.Paste

    'Moyenne Maths
    Sheets("semestre").Select
    Range("X" & i).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("soutien").Select
    Range("J" & m & ":K" & m).Select
    ActiveSheet.Paste

    End If 'Fin Maths

    'Arabe
    Sheets("semestre").Select
    If Range("P" & i).Value >= 5 Then
    Else

    'Nom Arabe
    Sheets("semestre").Select
    Range("B" & i).Select
    Selection.Copy
    Sheets("soutien").Select
    Range("D" & m & ":E" & m).Select
    ActiveSheet.Paste

    'Moyenne arabe
    Sheets("semestre").Select
    Range("P" & i).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("soutien").Select
    Range("F" & m & ":G" & m).Select
    ActiveSheet.Paste

    End If 'Fin Arabe

    Sheets("semestre").Select
    If Range("AI" & i).Value < 5 Or Range("X" & i).Value < 5 Or Range("P" & i).Value < 5 Then
    m = m + 1
    End If

    Next i

    End Sub
    0
    1. Elle est efficace mais elle prend un certain temps
      si vous ne trouvez pas de macro guidez moi par une formule
      merci
      0
  2. m
    Même si vous trouvez une formule qui pourra faire la même chose faites moi signe
    cordialement
    0
    1. Bonjour a vous deux,

      Theo.R:
      les selects et activate sont a eviter car tres goumands en temps d'execution

      neo2008: trois fichiers

      https://www.cjoint.com/c/FBgkAwUzIbf

      celui de Theo.R avec son temps d'execution
      et deux autres avec temps d'execution qui peut etre ameliore un peu si vous trouvez que c'est encore trop long

      le premier meme classement que Theo.R
      le deuxieme un classement par matiere que je trouve plus logique

      A vous de voir
      0
      1. oui elle marche bien mais est il possible qu'il n'aura plus de cellules vides
        0
        1. Re,
          "Plus de cellules vides". Que voulez-vous dire????????
          0
        2. @f894009oui merci
          0
        3. @noe2008Re,

          Mais encore .......
          0
        4. Par exemple entre entre eleveA et eleveB il ya des cellules vides car les noms d’élèves correspondants ont une moyenne sup à 5
          0
        5. @noe2008Re,

          Si vous prenez le fichier notes-des-eleves_2.xlsm le tri n'est pas le meme, donc regardez!!

          Relisez ce que j'ai ecrit f894009 6 févr. 2016 à 11:28
          0