IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

classement des équipes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 18
    Par défaut classement des équipes
    Bonjour

    Mes connaissances en VBA sont limité mais j'essaie d'apprendre en faisant. J'utilise excel 2021

    j’essaie d’améliorer un fichier excel sur la conception de matchs poule . Le fichier demande le nom des équipes et une macro permet de créer tous les matchs possibles. Une fois les scores rentrer j'ai réussi à créer une macro qui créée une colonne temporaire qui permet de comptabiliser tous les buts mis par les équipes. J'ai ensuite créé un autre tableau dans lequel apparaitra le tri des équipes (de la meilleur à la moins bonne.)
    La macro que j'ai faite pour fonctionne si aucune équipe est à égalité. Mais s'il y égalité alors là COUAC....

    Quelqu'un peut me dire ce qui ne va pas dans ma macro (ci dessous) ?

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    Sub classement_5equipe()
     
    Dim Cel As Range
    Dim club As String, club_ref As String, club_ref2 As String, club_ref3 As String, club_ref4 As String
    Dim score_ref As Integer, score_max As Integer, score_min As Integer
     
    ' ==== Initialisation des variables
     
    score_ref = 0
    score_max = 0
    score_min = 0
     
    ' ==== trouver le 1er du classement
     
    For Each Cel In Range("C5:C9")
        If Cel.Value > score_ref Then
            score_ref = Cel.Value
            club = Cel.Offset(0, -1)
        End If
    Next Cel
     
    Range("D5") = club
    Range("E5") = score_ref
     
    ' ==== trouver le 2eme du classement
     
    score_min = 0
    score_max = Range("E5").Value
    club_ref = Range("D5").Value
    For Each Cel In Range("C5:C9")
     
    ' ==== Boucle pour tenir compte d'une égalité
     
        If Cel.Value = score_max Then
            If Cel.Offset(0, -1).Value <> club_ref Then
                Range("D6") = Cel.Offset(0, -1).Value
                Range("E6") = Cel.Value
            End If
     
     ' ==== Boucle si pas d'égalité
     
        ElseIf (Cel.Value < score_max) And (Cel.Value > score_min) Then
                If Cel.Value <> score_max Then
                    score_ref = Cel.Value
                    club = Cel.Offset(0, -1)
                    score_min = Cel.Value
                End If
                Range("D6") = club
                Range("E6") = score_ref
     
        End If
    Next Cel
     
    ' ==== trouver le 3eme du classement
     
    score_max = Range("E6").Value
    club_ref = Range("D6").Value
    club_ref2 = Range("D5").Value
    score_min = 0
    For Each Cel In Range("C5:C9")
        If Cel.Value = score_max Then
            If (Cel.Offset(0, -1).Value <> club_ref) And (Cel.Offset(0, -1).Value <> club_ref2) Then
                Range("D7") = Cel.Offset(0, -1).Value
                Range("E7") = Cel.Value
            End If
        ElseIf (Cel.Value < score_max) And (Cel.Value > score_min) Then
                If Cel.Value <> score_max Then
                    score_ref = Cel.Value
                    club = Cel.Offset(0, -1)
                    score_min = Cel.Value
                End If
                Range("D7") = club
                Range("E7") = score_ref
        End If
    Next Cel
     
     
    ' ==== trouver le 4eme du classement
     
    score_max = Range("E7").Value
    club_ref = Range("D6").Value
    club_ref2 = Range("D5").Value
    club_ref3 = Range("D7").Value
    score_min = 0
    For Each Cel In Range("C5:C9")
        If Cel.Value = score_max Then
            If (Cel.Offset(0, -1).Value <> club_ref) And (Cel.Offset(0, -1).Value <> club_ref2) And (Cel.Offset(0, -1).Value <> club_ref3) Then
                Range("D8") = Cel.Offset(0, -1).Value
                Range("E8") = Cel.Value
            End If
        ElseIf (Cel.Value < score_max) And (Cel.Value > score_min) Then
                If Cel.Value <> score_max Then
                    score_ref = Cel.Value
                    club = Cel.Offset(0, -1)
                    score_min = Cel.Value
                End If
                Range("D8") = club
                Range("E8") = score_ref
        End If
    Next Cel
     
     
    ' ==== trouver le 5eme du classement
     
    score_max = Range("E8").Value
    club_ref = Range("D6").Value
    club_ref2 = Range("D5").Value
    club_ref3 = Range("D7").Value
    club_ref4 = Range("D8").Value
    score_min = 0
    For Each Cel In Range("C5:C9")
        If Cel.Value = score_max Then
            If (Cel.Offset(0, -1).Value <> club_ref) And (Cel.Offset(0, -1).Value <> club_ref2) And (Cel.Offset(0, -1).Value <> club_ref3) And (Cel.Offset(0, -1).Value <> club_ref4) Then
                Range("D9") = Cel.Offset(0, -1).Value
                Range("E9") = Cel.Value
            End If
        ElseIf (Cel.Value < score_max) And (Cel.Value > score_min) Then
                If Cel.Value <> score_max Then
                    score_ref = Cel.Value
                    club = Cel.Offset(0, -1)
                    score_min = Cel.Value
                End If
                Range("D9") = club
                Range("E9") = score_ref
        End If
    Next Cel
     
    Range("B4").Select
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    Pourquoi passer par une macro alors qu'il y a une formule Excel pour calculer le "rang" d'une valeur contenue dans une plage.
    Exemple: =EQUATION.RANG([@Points];[Points]).

    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 18
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Pourquoi passer par une macro alors qu'il y a une formule Excel pour calculer le "rang" d'une valeur contenue dans une plage.
    Exemple: =EQUATION.RANG([@Points];[Points]).

    Cordialement.
    Tout simplement car je ne connaissais pas cette formule.

    Je vais tester cela

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Classement des équipes
    Par snals dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/12/2012, 10h54
  2. classement des équipes
    Par petchy dans le forum Modélisation
    Réponses: 6
    Dernier message: 10/12/2006, 08h20
  3. Réponses: 8
    Dernier message: 29/05/2006, 07h50
  4. Classement des fichiers
    Par php_de_travers dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2006, 10h20
  5. Classement des langages
    Par trattos dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 07/12/2005, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo