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. 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
  2. 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. m
      Même si vous trouvez une formule qui pourra faire la même chose faites moi signe
      cordialement
      0
      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