Maximum TCD

Bonjour à tous!

Je vous expose mon problème.

Dans le classeur ci joint, j'aimerai récupérer les 3 plus grandes valeurs de la colonne durée ( colonne C ) mais uniquement pour la semaine 14 de l'année 2017, puis extraire les lignes complètes correspondantes vers une autre feuille du classeur.

Merci d'avance pour votre aide !

13classeur1.xlsx (302.76 Ko)

Bonjour,

Sub transfert()
Dim sh1, sh2
Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("Feuil2")
 With sh1.ListObjects("Tableau1")
  .Range.AutoFilter Field:=7, Criteria1:="2017"
  .Range.AutoFilter Field:=6, Criteria1:="14"
 End With
 sh1.Cells.SpecialCells(xlCellTypeVisible).Copy sh2.Range("A1")
For i = 1 To 3
    sh2. Range("I" & i) = "Max " & i
    sh2.Range("J" & i).Formula = "=LARGE(" & Columns(3).Address & "," & i & ")"
Next
End Sub

Merci beaucoup sabV!

Exactement ce que je voulais faire, plus qu'à l'adapter à mon fichier de base.

Je vais essayer à présent d'extraire la ligne entière correspondant à ces 3 maximums.

Bonjour,

l'extraction des 3 lignes pour les 3 maximums est mit en Feuil3

ça va bien pour cette exemple car chacun des maximuns n'apparait qu'une seul fois dans la liste (Criteria1:="2017" et Criteria1:="14")

mais si il y a plus d'un résultat (max) trouvé la fonction match renvoie le premier trouvé.

Sub transfert()
Dim sh1, sh2, sh3, i, m, n, LastRw
Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("Feuil2")
Set sh3 = Sheets("Feuil3")
LastRw = sh3.Cells(Rows.Count, 1).End(xlUp).Row + 1
 sh2.Cells.ClearContents
 With sh1.ListObjects("Tableau1")
  .Range.AutoFilter Field:=7, Criteria1:="2017"
  .Range.AutoFilter Field:=6, Criteria1:="14"
 End With
 sh1.Cells.SpecialCells(xlCellTypeVisible).Copy sh2.Range("A1")
 For i = 1 To 3
    m = Application.Large(sh2.Range("C:C"), i)
    n = Application.Match(n, sh2.Range("C:C"), 0)
    sh3.Range("A" & LastRw & ":G" & LastRw).Value = sh2.Range("A" & m & ":G" & m).Value
    LastRw = sh3.Cells(Rows.Count, 1).End(xlUp).Row + 1
Next
End Sub

Bonjour,

=NO.SEMAINE(B2;2)-1

ceci ne fonctionnera pas tous les ans !


Proposition sans macro via TCD ...

6classeur1.xlsx (376.42 Ko)

Salut à vous 2 et encore merci de votre aide.

SabV. Etant novice sur VBA, je n'arrive pas à voir ce qui ne va pas dans ton code mais les lignes copiées en feuille 3 ne correspondent pas aux 3 durées les plus longues malheureusement. Je vais essayer de combiner les 2 que tu m'as donné.

Steelson. Je vais essayer de voir avec un TCD sur mon fichier de base.

Concernant le numéro de semaine, la fonction NO.SEMAINE.ISO règlerait-elle le problème ?

Jhavidbest a écrit :

Concernant le numéro de semaine, la fonction NO.SEMAINE.ISO règlerait-elle le problème ?

Oui
Rechercher des sujets similaires à "maximum tcd"