• Initiateur de la discussion Initiateur de la discussion steff72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

steff72

Guest
bonjour,
je souhaiterai faire un stat sur des comptes de tarot. je voudrai faire apparaitre le nombre de fois qu'un joueur prend (qu'il perde ou non) dans la cellule désigné à cette effet.
Merci de l'aide. STEFF.
 

Pièces jointes

Re : statistique tarot

Bonjour Steff, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro événementielle Change ci-dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim nj As Byte 'déclare la variable nj (Nombre de Joueurs)
Dim li As Range 'déclare la variable li (LIgne)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim col1 As Byte 'déclare la variable col1 (COLonne 1)
Dim col2 As Byte 'déclare la variable col2 (COLonne 2)
Dim max1 As Integer 'déclare la variable max1 (maximum 1)
Dim max2 As Integer 'déclare la variable max2 (maximum 2)

'si le changement a lieu ailleurs que dans la plage B4:K45, sort de la procédure
If Application.Intersect(Target, Range("B4:K45")) Is Nothing Then Exit Sub
'si le nombre de cellule sélectionnées est supérieur à 1, sort de la procédure
If Selection.Cells.Count > 1 Then Exit Sub
nj = Application.WorksheetFunction.CountA(Range("B1:K1")) 'définit le nombre de joueurs
Set li = Range(Cells(Target.Row, 2), Cells(Target.Row, 11)) 'définit la ligne li (ligne de la première cellule éditée)

If Application.WorksheetFunction.CountA(li) = nj Then 'condition 1 : si le nombre de valeurs dans la ligne est égal au nombre de joueurs
    
    For Each cel In li 'boucle 1 : sur toutes les cellules de la ligne li
        If Abs(cel.Value) > max Then 'condition 2 : si la valeur absolue de la cellule cel est supérieure à la variable max
            max = Abs(cel.Value) 'définit le maximum max
            col1 = cel.Column 'recupère la colonne col1 de cette valeur max
            If col1 Mod 2 <> 0 Then col1 = col1 - 1 'si col1 est impaire alors col1 = col1 - 1 (Preneur)
        End If 'fin de la condition 2
    Next cel 'prochaine cellule cel de la boucle 1
    
    If nj > 4 Then 'condition 3 : si il y a 5 joueurs
        For Each cel In li 'boucle 2 : sur toutes les cellules de la plage li
            If cel.Value = Cells(cel.Row, col1) / 2 Then 'condition 4 : si la valeur de la cellule est la moitié de la valeur max
                col2 = cel.Column 'récupère la colonne col2 de cette valeur
                If col2 Mod 2 = 0 Then col2 = col2 + 1 'si col2 est paire alors col2 = col2 + 1 (Appelé)
                Exit For 'sort de la boucle 2
            End If 'fin de la condition 4
        Next cel 'prochaine cellule cel de la boucle 2
        If col2 > 0 Then Cells(3, col2).Value = Cells(3, col2).Value + 1 'incrément le joueur appelé
    End If 'fin de la condition 3
    
    Cells(3, col1).Value = Cells(3, col1).Value + 1 'incrémente le joueur preneur
End If 'fin de la condition 1
End Sub
Le calcul se fera automatiquement dès que tu auras rentré les points du dernier joueur. Le fichier :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
256
Réponses
10
Affichages
825
Réponses
5
Affichages
201
Réponses
10
Affichages
1 K
Réponses
23
Affichages
677
Retour