Procedure trop grande code course d'orientation

Bonjour à tous,

Je suis arrivé (rapidement) à la limite de mes capacités de débrouille avec VBA et j'en appelle donc à vos lumières pour débloquer ma situation.

J'ai commencé à créer un kifékoi pour me libérer du temps dans le suivi de mes élèves en course d'orientation. J'ai donc fais concorder les codes de balises aux parcours existants (si l'élève est sur le parcours 1 et note le code IVAF alors réussi, si autre code alors erreur).

Mon problème est le suivant, j'ai 52 balises (pour le moment) et une fois les procédures rentrées pour l'ensemble des blaises la procédure est trop longue.

J'ai déjà fais quelques raccourcis (et autres boucles) sur certaines lignes qui m'ont permis de diminuer la procédure mais je ne vois pas comment faire plus court à ce stade.

Je laisse le fichier en pièce jointe à vos yeux experts ce sera certainement plus compréhensible qu'un long discours.

D'avance merci de vos retours !

Bonjour,

Un essai ...

Je n'ai pas optimisé le code, il y en a tellement que la tête me tourne.

Je n'ai que coupé la macro en deux entre 35 et 36.

Comme le budget, d'autres coupures seraient à prévoir.

ric

Bonsoir Ric et merci de ta réactivité !

Pas de soucis pour l'optimisation ^^ moi aussi je me suis donné mal au crâne !

Toujours est il que ça me convient tout à fait comme solution !

je vais donc clore le sujet !

Encore merci

Salut jb schouteten,

Salut ric,

100 ans après la guerre mais bon...

Il manque les codes de balise 8 et 42 !

Vision personnelle de la chose :

  • plus de Userform ;
  • 3 procédures ;
  • élimination des feuilles vides (surtout pour me faciliter le travail!) ;
  • renommage des feuilles principales ;

Tout se joue en 'COURSES'

  • double-clic en [A1] = nouvelle journée de courses ;
  • en ['B] et [C], la liste de validation ne reprend que soit les noms d'élèves, soit les parcours, NON ENCORE utilisés ;
  • inscription automatique des nouveaux inscrits en 'RESULTATS', sans formule ;
  • re-clic en [C] pour un nouveau parcours efface les données en [D:G] ;
  • double-clic en [D] valide le temps de départ de la course pour le parcours défini (obligatoire) en [C] ;
  • renseigner le bon code de la balise en [E] validera le temps d'arrivée et entraînera le calcul des temps en [F:G:H] ;
  • le code de la balise peut être encodé en minuscule.

Question : à quoi sert de calculer les temps de courses si ils ne sont pas exploités en 'RESULTATS' ?

'Balise si départ effectif en [D]
If Not Intersect(Target, Range("E:E")) Is Nothing And Range("D" & iTRow) <> "" Then
    Target = UCase(Target)
    iFlag = IIf(Target = tBalise(Range("C" & iTRow).Value), Range("C" & iTRow).Value + 1, 0)
    MsgBox IIf(iFlag > 0, "Bien joué ! Arrête le chrono et vérifie que tu es dans les temps!", "FAUX, n'arrête pas le chrono et retourne chercher au bon endroit !"), _
            IIf(iFlag > 0, vbExclamation, vbCritical) + vbOKOnly, "RETOUR AU MENU DES STATISTIQUES"
    iCol = sWk.Rows(1).Find(what:=Range("B" & iTRow).Value, lookat:=xlWhole).Column
    sWk.Cells(iFlag, iCol).Value = sWk.Cells(iFlag, iCol).Value + 1
    If iFlag > 0 Then
        Range("F" & iTRow).Value = Format(Time, "h:mm:ss")
        Range("G" & iTRow).Value = Format(CDate(Range("F" & iTRow).Value) - CDate(Range("D" & iTRow).Value), "h:mm:ss")
        Range("H" & iTRow).Value = Format(CDate(Range("H" & iTRow).Value) + CDate(Range("G" & iTRow).Value), "h:mm:ss")
    Else
        Target = ""
    End If
End If

Allez, pour le plaisir du code!

A+

Merci de ta contribution ! Il n’est jamais trop tard à mon sens ! Je vais donc prendre le temps de regarder y’a proposition avec attention !

Encore merci !

Rechercher des sujets similaires à "procedure trop grande code course orientation"