Trier à l'aide d'une macro
Résolu
noe2008
Messages postés
191
Statut
Membre
-
noe2008 Messages postés 191 Statut Membre -
noe2008 Messages postés 191 Statut Membre -
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
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
-
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 -
m
Même si vous trouvez une formule qui pourra faire la même chose faites moi signe
cordialement -
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 -
oui elle marche bien mais est il possible qu'il n'aura plus de cellules vides