Rechercher si ce qui est dans les cellules est dans un ordre croissant, NON = pénal

moupa

XLDnaute Junior
Bonjour le forum

J'ai un truc spécial à vous demander, car pour moi c'est vraiment trop spécial :confused:…..
Voilà, j'ai un chronométrage à faire pour mon club ou on me demande si je peux à partir de mon fichier de calcul excel 2007, savoir si le concurrent à fait les postes d'une course dans un ordre bien précis et si ce n'est pas le cas lui attribuer une pénalité.
Peut importe le mode, formule ou macro je suis preneur. :)

Comme vous le voyez ce n'est pas si simple, surtout pour moi et pour vous?

Je vous ai mis un fichier afin que vous puissiez voir au cas ou je me serais mal exprimé.
Merci d'avance pour votre aide
Moupa
 

Pièces jointes

  • ordre_temps.xls
    14 KB · Affichages: 38

Misange

XLDnaute Barbatruc
Re : Rechercher si ce qui est dans les cellules est dans un ordre croissant, NON = pé

Bonjour

en Q2
=SOMMEPROD(--(C2:p2<B2:O2))
te donne 2 dans ton exemple, c'est à dire le nombre de fois ou la "croissance" de la série est interrompue.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Rechercher si ce qui est dans les cellules est dans un ordre croissant, NON = pé

Bonjour Moupa, Misange, Efgé, bonjour le forum,

Ce que Misange ou Efgé expriment en un nombre incalculable de mots, je te le résume avec ce code VBA :

Code:
Sub Macro1()
Dim o As Object 'définit la variable o (Onglet)
Dim dl As Integer 'définit la variable dl (Dernière Ligne)
Dim col As Integer 'définit la variable col (Colonne)
Dim li As Integer 'définit la variable li (LIgne)
Dim tm As Double 'définit la variable tm (Temps Maximum)
Dim cm As Integer 'définit la variable cm (Colonne du temps Maximum)

Set o = Sheets("Pen_dec") 'définit l'onglet o
dl = o.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne édité dl de la colonne 1 (=A) de l'onglet o
For li = 3 To dl 'boucle 1 : sur toutes les lignes li de 3 à dl
    For col = 16 To 3 Step -1 'boucle 2 : inversée sur toutes les colonnes col de P à C
        'condition : si la valeur de la cellule est inférieure à la valeur de la cellule à sa gauche
        If Cells(li, col).Value < Cells(li, col - 1).Value Then
            tm = Application.WorksheetFunction.Max(Rows(li)) 'définit la temps le plus élevée de la ligne
            cm = Application.WorksheetFunction.Match(tm, Rows(li)) 'definit la colonne du temps le plus élevé de la ligne
            o.Cells(li, cm).Value = o.Cells(li, cm).Value + o.Range("Q1").Value 'ajoute la pénalité en Q1 au temps le plus élevé
        End If 'fin de la condition
    Next col 'prochaine colonne de la boucle 2
Next li 'prochaine ligne de la boucle 1
End Sub

Je hais les formulistes... Sont trop forts !
 

moupa

XLDnaute Junior
Re : Rechercher si ce qui est dans les cellules est dans un ordre croissant, NON = pé

Bonjour, Misange, Efgé,Robert,
Vous êtes vraiment très fort:)
Merci de vos réponses et de votre rapidité. C'est exactement cela que je cherchais à faire.

Suite à vos formules je viens de faire un test dans mon fichier et j'ai oublié un autre truc, c'est que si une cellule n'a pas de temps il ne faut pas en tenir compte.

Exemple dans le fichier en H5 il n'y a pas de temps mais G5 et I5 on bien été fait dans l'ordre.

D'après vous?
Encore merci de votre aide
Moupa
 

Pièces jointes

  • ordre_temps-v2.xls
    25 KB · Affichages: 35

Misange

XLDnaute Barbatruc
Re : Rechercher si ce qui est dans les cellules est dans un ordre croissant, NON = pé

hello tutti

Il suffit de soustraire les cellules vides
ou celles avec une * si tu signales avec ça que le temps n'a pas été pris
=SOMMEPROD(--(C4:p4<B4:O4))-NB.SI(B4:p4;"*")
 

Statistiques des forums

Discussions
311 720
Messages
2 081 907
Membres
101 836
dernier inscrit
karmon