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 :

Imputer points a chaque partie [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut Imputer points a chaque partie
    Bonjour,
    Voila je recherche un code un peut trop compliquer pour mois
    Voila j'ai une colonne "F" avec une liste de joueur, des colonnes "K:Y" avec des points.
    A chaque partie on ajoute les points que le joueur a gagné jusque la tous va bien.
    Pour donné toute les chance aux 14 premier ,les joueur se voit doté d'une notes a chaque partie, soit pour le premier 130 points le second 120 points ainsi de suite.
    Le problème est comment imputer les points au joueurs à chaque partie ?
    J'ai joint mon fichier auquel il y a les explications car se n'est évident d'expliquer
    Un très grand merci à tout ceux qui pourront m'aider...
    Cordialement
    Max

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Une proposition (selon ma compréhension)
    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
    Sub Macro1()
    Dim j As Byte, i As Byte, n As Byte
    Dim m As Integer
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")
        'On efface la colonne G Point par Barèmes
        .Range("G4:G17").ClearContents
        'Pour chaqu colonne de K à Y (Analogiquement Partie j)
        For j = 11 To 25
            'Pour chaque ligne de 4 à 17 (Analogiquement concurrent i)
            For i = 4 To 17
                'Si le nombre de points du concurrent i pendant la partie j est renseigné
                If .Cells(i, j) <> "" Then
                    'n Correspond au Rang du participant i dans la partie j
                    n = Evaluate("RANK(" & .Cells(i, j).Address & "," & .Range(.Cells(4, j), .Cells(21, j)).Address & ")")
                    'm est le nombre de points selon le barème du participant i pendant la partie j
                    m = IIf(n = 14, 5, 140 - 10 * n)
                    'en ajoute dans la cellule G, le nombre de points selon le barème du concurrent i
                    .Cells(i, 7).Value = Val(.Cells(i, 7).Value) + m
                End If
            Next i
        Next j
        'On tri sur le points barèmes puis sur le total des points gagnés dans les parties
        .Range("F4:Y21").Sort Key1:=.Range("G4"), Order1:=xlDescending, Key2:=.Range("I4"), Order2:=xlDescending, Header:=xlNo
    End With
    End Sub

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    bonjour,

    Une autre solution en utilisant les formules

    Cette formule traite les parties 1 à 3 (même principe pour les autres parties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =DECALER($B$3;SI(ESTERREUR(RANG(K4;$K$4:$K$17));0;RANG(K4;$K$4:$K$17));0)
    +DECALER($B$3;SI(ESTERREUR(RANG(L4;$L$4:$L$17));0;RANG(L4;$L$4:$L$17));0
    )+DECALER($B$3;SI(ESTERREUR(RANG(M4;$M$4:$M$17));0;RANG(M4;$M$4:$M$17));0)

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut
    Bonjour jfontaine,

    Je vous remercie beaucoup.

    Sa marche Nickel

    Bonne soiré

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut
    Bonjour,

    Suite a la proposition de code qui a fait mercatoq et que je remercie encore et ne pouvant pas joindre autrement que par ce site.

    Pour commencer un grand merci du temps que tu ma consacrer.
    j'aimerais si possible une petite modif au sujet des points, je m'explique.

    Le premier à 130, le deuxième 120, le troisième 110, quatrième 105, cinquième 100, 6eme 95, 7éme 90, 8éme 85 jusqu'au 24 qui aura 05.

    Un très grand merci d'avance

    Cordialement
    Max

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Changer l’équation de m (ligne 18)
    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
    Sub Macro1()
    Dim j As Byte, i As Byte, n As Byte
    Dim m As Integer
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")
        'On efface la colonne G Point par Barèmes
        .Range("G4:G27").ClearContents
        'Pour chaqu colonne de K à Y (Analogiquement Partie j)
        For j = 11 To 25
            'Pour chaque ligne de 4 à 27 (Analogiquement concurrent i)
            For i = 4 To 27
                'Si le nombre de points du concurrent i pendant la partie j est renseigné
                If .Cells(i, j) <> "" Then
                    'n Correspond au Rang du participant i dans la partie j
                    n = Evaluate("RANK(" & .Cells(i, j).Address & "," & .Range(.Cells(4, j), .Cells(27, j)).Address & ")")
                    'm est le nombre de points selon le barème du participant i pendant la partie j
                    m = IIf(n <= 3, 140 - 10 * n, 125 - 5 * n)
                    'en ajoute dans la cellule G, le nombre de points selon le barème du concurrent i
                    .Cells(i, 7).Value = Val(.Cells(i, 7).Value) + m
                End If
            Next i
        Next j
        'On tri sur le points barèmes puis sur le total des points gagnés dans les parties
        .Range("F4:Y27").Sort Key1:=.Range("G4"), Order1:=xlDescending, Key2:=.Range("I4"), Order2:=xlDescending, Header:=xlNo
    End With
    End Sub

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut
    Bonjour Mercatoq

    Je te remercie super sympa ...

    Bonne journée

    @+

    Max

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/05/2010, 13h00
  2. Affectation des points pour chaque courbe
    Par azertyuio dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 09/04/2010, 00h07
  3. Auteurs différents pour chaque partie
    Par Casio57 dans le forum Débuter
    Réponses: 3
    Dernier message: 20/09/2009, 18h32
  4. Une URL pour chaque partie de mon swf (URL Rewriting)
    Par Touillette85 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 11/12/2008, 14h26

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