Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres Excel 2007: Rang avec une macro dans une feuille de calcul

kkamadou

XLDnaute Junior
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig&
Application.ScreenUpdating = False
Application.EnableEvents = False
If FilterMode Then ShowAllData 'si la feuille est filtrée
derlig = Cells(Rows.Count, 1).End(xlUp).Row
If derlig < 4 Then Exit Sub 'sécurité
With Rows("4:" & derlig)
.Sort .Columns(4), Header:=xlNo 'tri sur les classes
.Columns(27) = "=IFERROR(RANK(Z4,OFFSET(Z$4,MATCH(D4,D,0)-4,,COUNTIF(D,D4))),"""")"
.Columns(27) = .Columns(27).Value 'supprime les formules
.Sort .Columns(4), xlAscending, Header:=xlNo 'tri par classe
.Sort .Columns(2), xlAscending, Header:=xlNo 'tri alphabétique sur les noms des élèves
End With
Application.EnableEvents = True
End Sub

Salut le forum

Ce code ci-dessus marche bien lorsqu' on change le valeur d'une cellule, mais ce qui pose problème
est que les données sont copiées à partir d'une autre feuille pour être copiées dans la feuille INDEX
du coup ce code ne s’exécute pas. je ne sais pas comment faire pour que ça marche.
 

kkamadou

XLDnaute Junior
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig&
Application.ScreenUpdating = False
Application.EnableEvents = False
If FilterMode Then ShowAllData 'si la feuille est filtrée
derlig = Cells(Rows.Count, 1).End(xlUp).Row
If derlig < 4 Then Exit Sub 'sécurité
With Rows("4:" & derlig)
.Sort .Columns(4), Header:=xlNo 'tri sur les classes
.Columns(27) = "=IFERROR(RANK(Z4,OFFSET(Z$4,MATCH(D4,D,0)-4,,COUNTIF(D,D4))),"""")"
.Columns(27) = .Columns(27).Value 'supprime les formules
.Sort .Columns(4), xlAscending, Header:=xlNo 'tri par classe
.Sort .Columns(2), xlAscending, Header:=xlNo 'tri alphabétique sur les noms des élèves
End With
Application.EnableEvents = True
End Sub

Salut le forum

Ce code ci-dessus marche bien lorsqu' on change le valeur d'une cellule, mais ce qui pose problème
est que les données sont copiées à partir d'une autre feuille pour être copiées dans la feuille INDEX
du coup ce code ne s’exécute pas. je ne sais pas comment faire pour que ça marche.
 

Pièces jointes

  • note eleve rang.xlsm
    27.9 KB · Affichages: 17

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir kkamadou,
Peut être une solution simple : garder la macro pour la mise à jour automatique et rajouter un bouton qui exécute cette macro lorsque vous importez des données.
 

Pièces jointes

  • note eleve rang (3).xlsm
    30.6 KB · Affichages: 8

Discussions similaires

Réponses
3
Affichages
591
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…