Suprimer les 4 premiers et 4 derniers d'un classement...

  • Initiateur de la discussion Initiateur de la discussion Guido
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Bonjour MK DoubleZero

MK sur mon PC 2003 ca ne marche pas sur mon PC 2013 C'est ok

DoubleZero

Sur mon 1er fichier c'est tout OK

Peux tu SVP adaper ta macro sur ma nouvelle feuille en adaptant les valeurs..a la droite des chx .

Merci.d'avance

Guido
 

Pièces jointes

Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Juste par correction (je vois que la solution vba semble acquise). Le correctif pour la version 2003

Code:
=SI(ESTERREUR(PETITE.VALEUR(DECALER(A$1;$H$1;;NBVAL(A:A)-2*$H$1);LIGNE()));"";PETITE.VALEUR(DECALER(A$1;$H$1;;NBVAL(A:A)-2*$H$1);LIGNE()))
(validation matricielle)
 
Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Bonjour doublezéro, Guido le forum
Votre fichier sans macro (au cas où)
 

Pièces jointes

Dernière modification par un modérateur:
Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Re-bonjour,

...Sur mon 1er fichier c'est tout OK

Peux tu SVP adaper ta macro sur ma nouvelle feuille en adaptant les valeurs..a la droite des chx ...

A l'avenir, merci de bien vouloir joindre en #1 le véritable 🙄 fichier de travail.

Une nouvelle version en pièce jointe.

A bientôt 🙂
 

Pièces jointes

Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Bonjour Guido, MK., DoubleZero,

Ma contribution VBA pour le fichier du post #4 :

Code:
Sub Elimination()
Dim n, depart As Range, clasfinal As Range, deb As Range, fin As Range
n = 4 'modifiable
Set depart = [D11:F30] 'à adapter
Set clasfinal = [I11:K30] 'à adapter
clasfinal = "" 'RAZ
Set deb = depart(n + 1, 1)
Set fin = depart.Find("*", , xlValues, , xlByColumns, xlPrevious)
If fin Is Nothing Then Exit Sub
If fin(1 - n).Row >= deb.Row Then Range(deb, fin(1 - n)).Copy clasfinal(1)
End Sub
Bonne soirée.
 
Dernière édition:
Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Bonsoir

MK.DoubleZero,job75

Merci pour vos propositions

Tout est OK pour moi.yessss

DoubleZero

A l'avenir, merci de bien vouloir joindre en #1 le véritable fichier de travail.

Une nouvelle version en pièce jointe

Oui,mais j'ai du coupé une feuille car le fichier est trop lourd..

Merci

Guido
 
Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Re,

Pour finir j'améliore ma macro :

Code:
Sub Elimination()
Dim n, depart As Range, clasfinal As Range, deb As Range, fin As Range
n = 4
Set depart = [D11:F30] 'à adapter
Set clasfinal = [I11:K30] 'à adapter
clasfinal = ""
Set deb = depart(n + 1, 1)
Set fin = depart.Find("*", , xlValues, , xlByRows, xlPrevious)
If Not fin Is Nothing Then If fin(1 - n).Row >= deb.Row Then _
  Range(deb, Intersect(fin(1 - n).EntireRow, depart)).Copy clasfinal(1)
End Sub
Bonne fin de soirée.
 
Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Bonjour le fil, le forum,

On peut utiliser cette macro évènementielle :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n, depart As Range, clasfinal As Range, deb As Range, fin As Range
n = 4 'modifiable
Set depart = [D11:F30] 'à adapter
If Intersect(Target, depart) Is Nothing Then Exit Sub
Set clasfinal = [I11:K30] 'à adapter
Application.ScreenUpdating = False
clasfinal = "" 'RAZ
Set deb = depart(n + 1, 1)
Set fin = depart.Find("*", , xlValues, , xlByRows, xlPrevious)
If Not fin Is Nothing Then If n < fin.Row Then If fin(1 - n).Row >= deb.Row Then _
  Range(deb, Intersect(fin(1 - n).EntireRow, depart)).Copy clasfinal(1)
End Sub
Fichier joint.

Bonne journée.
 

Pièces jointes

Re : Suprimer les 4 premiers et 4 derniers d'un classement...

Bonjour Guido, le forum,

La dernière formule me plaît bien alors j'utilise son principe en VBA :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n, depart As Range, decalcolonnes%, a$, b&
n = 4 'modifiable
Set depart = [D11:F30] 'à adapter
decalcolonnes = 5 'à adapter, pour obtenir la colonne I
If Intersect(Target, depart) Is Nothing Then Exit Sub
a = depart.Address
b = Application.CountA(depart.Columns(1)) - 2 * n
With depart.Offset(, decalcolonnes)
  .FormulaArray = "=IF(ROW(" & a & ")-" & depart.Row - 1 _
    & ">" & b & ","""",OFFSET(" & a & "," & n & ",))"
  .Value = .Value 'supprime les formules
End With
End Sub
La formule est entrée matriciellement dans la plage I11:K30.

Fichier joint.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
184
Réponses
32
Affichages
1 K
Réponses
1
Affichages
207
Réponses
4
Affichages
304
Réponses
2
Affichages
159
Réponses
14
Affichages
729
Réponses
2
Affichages
172
Deleted member 453598
D
Retour