OVH Cloud OVH Cloud

Comptage de tours.

12 réponses
Avatar
DB
Bonjour,
Dans le cadre d'une manifestation sportive de VTT, je souhaite développer un
classeur Excel me permettant de comptabiliser le nombre de tours effectués.
En clair, je voudrais, en tapant un numéro de dossard dans une cellule, que
cela incrémente le nombre de tours effectués du coureur en question, dans la
même feuille ou dans un autre feuille du classeur.
Quelqu'un a t il une idée de la manière dont construire ce truc là.
Merci à tous

10 réponses

1 2
Avatar
garnote
Salut DB,

Dossard Tours
23 2
34 4
12 3
54 1
45 6

Deux plages nommées Dossard et Tours.
En D7, j'entre le numéro du dossard.
Et cette macro de feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$D$7" Then
v = Application.WorksheetFunction. _
Match([d7], Range("Dossard"), 0)
Range("Tours")(v) = Range("Tours")(v) + 1
End If
End Sub

Est-ce que ça convient ?

Serge

"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message de
news:
Bonjour,
Dans le cadre d'une manifestation sportive de VTT, je souhaite développer
un

classeur Excel me permettant de comptabiliser le nombre de tours
effectués.

En clair, je voudrais, en tapant un numéro de dossard dans une cellule,
que

cela incrémente le nombre de tours effectués du coureur en question, dans
la

même feuille ou dans un autre feuille du classeur.
Quelqu'un a t il une idée de la manière dont construire ce truc là.
Merci à tous




Avatar
2B or not 2B
N'étant pas un pro, la solution ci-après n'est peut-être pas la
meilleure.

Classeur XL
Une feuille "Base de données"
une zone Zn = decaler(Zn;;;NBVAL(A$))
tu saisis en colonne A le N° du dossard.
(le plus simple est de choisir le mode grille pour la saisie)

Une feuille "Compte tours"
cette feuille contient le rapport de tableau dynamique croisé de la
feuille base de données (attention la référence du TDC doit aussi
utiliser la fonction DECALER pour toujours prendre en compte tous les n°
de dossards saisis)
un champ N° de dossard, et la donnée N° de dossard en NB Val. Tu obtiens
alors pour chaque dossard saisi le nombre d'occurence (donc de tours)
dans la feuille "base de données".

Inconvénient:
il faut arrêter momentanément la saisie, pour passer sur l'autre
feuille, et actualiser le tableau dynamique.

Avantages:
facile, fiable, pas de développement
Avatar
DB
Merci, je teste tout ça

"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message de
news:
Bonjour,
Dans le cadre d'une manifestation sportive de VTT, je souhaite développer
un

classeur Excel me permettant de comptabiliser le nombre de tours
effectués.

En clair, je voudrais, en tapant un numéro de dossard dans une cellule,
que

cela incrémente le nombre de tours effectués du coureur en question, dans
la

même feuille ou dans un autre feuille du classeur.
Quelqu'un a t il une idée de la manière dont construire ce truc là.
Merci à tous




Avatar
DB
Merci ça ,marche :-))

"garnote" a écrit dans le message de
news:8PqWb.32982$
Salut DB,

Dossard Tours
23 2
34 4
12 3
54 1
45 6

Deux plages nommées Dossard et Tours.
En D7, j'entre le numéro du dossard.
Et cette macro de feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$D$7" Then
v = Application.WorksheetFunction. _
Match([d7], Range("Dossard"), 0)
Range("Tours")(v) = Range("Tours")(v) + 1
End If
End Sub

Est-ce que ça convient ?

Serge

"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message de
news:
Bonjour,
Dans le cadre d'une manifestation sportive de VTT, je souhaite
développer


un
classeur Excel me permettant de comptabiliser le nombre de tours
effectués.

En clair, je voudrais, en tapant un numéro de dossard dans une cellule,
que

cela incrémente le nombre de tours effectués du coureur en question,
dans


la
même feuille ou dans un autre feuille du classeur.
Quelqu'un a t il une idée de la manière dont construire ce truc là.
Merci à tous








Avatar
RaMa
Bonsoir

Je te propose ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ColonneDossard
Dim Dossard_P, Dossard_D
'Dans l 'exemple ci-dessous les dossards vont de la ligne 2 à 25 en colonne
A
'en colonne B l'heure d'enregistrement du passage
'en colonne C le nombre de tours effectués
'***********************************************************************

'indique ci_après le numero de colonne des dossards ex:1 col A
ColonneDossard = 1
'indique ci_après le numero de ligne du premier dossard ex:ligne 2
Dossard_P = 2
'indique ci_après le numero de ligne du dernier dossard ex:ligne 25
Dossard_D = 25
If Target.Column = ColonneDossard And _
Target.Row > Dossard_P And _
Target.Row < Dossard_D Then
gg = Target.Offset(0, 1) + 0.0012
If Time > gg Or IsEmpty(Target.Offset(0, 1)) Then
Target.Offset(0, 1) = Time
Target.Offset(0, 2) = Target.Offset(0, 2) + 1
Else
MsgBox "rapide le mec !! il a triché je ne compte pas le tour"
End If
End If
End Sub

Salutations
RaMa
Avatar
DB
Merci bien ton truc à l'air super mais je ne pige pas bien comment
s"effectue la saisie des dossards :-(
Je cherche encore
"RaMa" a écrit dans le message de
news:
Bonsoir

Je te propose ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ColonneDossard
Dim Dossard_P, Dossard_D
'Dans l 'exemple ci-dessous les dossards vont de la ligne 2 à 25 en
colonne

A
'en colonne B l'heure d'enregistrement du passage
'en colonne C le nombre de tours effectués
'***********************************************************************

'indique ci_après le numero de colonne des dossards ex:1 col A
ColonneDossard = 1
'indique ci_après le numero de ligne du premier dossard ex:ligne 2
Dossard_P = 2
'indique ci_après le numero de ligne du dernier dossard ex:ligne 25
Dossard_D = 25
If Target.Column = ColonneDossard And _
Target.Row > Dossard_P And _
Target.Row < Dossard_D Then
gg = Target.Offset(0, 1) + 0.0012
If Time > gg Or IsEmpty(Target.Offset(0, 1)) Then
Target.Offset(0, 1) = Time
Target.Offset(0, 2) = Target.Offset(0, 2) + 1
Else
MsgBox "rapide le mec !! il a triché je ne compte pas le tour"
End If
End If
End Sub

Salutations
RaMa




Avatar
RaMa
bonsoir
tu ne les saisis pas
tu les selectionnes en col A il sont déja pré- saisis
Si tu veux je te bal mon classeur
salutations


--
RaMa
"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message de
news:ut5B4$
Merci bien ton truc à l'air super mais je ne pige pas bien comment
s"effectue la saisie des dossards :-(
Je cherche encore
"RaMa" a écrit dans le message de
news:
Bonsoir

Je te propose ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ColonneDossard
Dim Dossard_P, Dossard_D
'Dans l 'exemple ci-dessous les dossards vont de la ligne 2 à 25 en
colonne

A
'en colonne B l'heure d'enregistrement du passage
'en colonne C le nombre de tours effectués
'***********************************************************************

'indique ci_après le numero de colonne des dossards ex:1 col A
ColonneDossard = 1
'indique ci_après le numero de ligne du premier dossard ex:ligne 2
Dossard_P = 2
'indique ci_après le numero de ligne du dernier dossard ex:ligne 25
Dossard_D = 25
If Target.Column = ColonneDossard And _
Target.Row > Dossard_P And _
Target.Row < Dossard_D Then
gg = Target.Offset(0, 1) + 0.0012
If Time > gg Or IsEmpty(Target.Offset(0, 1)) Then
Target.Offset(0, 1) = Time
Target.Offset(0, 2) = Target.Offset(0, 2) + 1
Else
MsgBox "rapide le mec !! il a triché je ne compte pas le tour"
End If
End If
End Sub

Salutations
RaMa








Avatar
DB
Ok je viens de comprendre merci
"RaMa" a écrit dans le message de
news:
bonsoir
tu ne les saisis pas
tu les selectionnes en col A il sont déja pré- saisis
Si tu veux je te bal mon classeur
salutations


--
RaMa
"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message de
news:ut5B4$
Merci bien ton truc à l'air super mais je ne pige pas bien comment
s"effectue la saisie des dossards :-(
Je cherche encore
"RaMa" a écrit dans le message de
news:
Bonsoir

Je te propose ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ColonneDossard
Dim Dossard_P, Dossard_D
'Dans l 'exemple ci-dessous les dossards vont de la ligne 2 à 25 en
colonne

A
'en colonne B l'heure d'enregistrement du passage
'en colonne C le nombre de tours effectués

'***********************************************************************




'indique ci_après le numero de colonne des dossards ex:1 col A
ColonneDossard = 1
'indique ci_après le numero de ligne du premier dossard ex:ligne 2
Dossard_P = 2
'indique ci_après le numero de ligne du dernier dossard ex:ligne 25
Dossard_D = 25
If Target.Column = ColonneDossard And _
Target.Row > Dossard_P And _
Target.Row < Dossard_D Then
gg = Target.Offset(0, 1) + 0.0012
If Time > gg Or IsEmpty(Target.Offset(0, 1)) Then
Target.Offset(0, 1) = Time
Target.Offset(0, 2) = Target.Offset(0, 2) + 1
Else
MsgBox "rapide le mec !! il a triché je ne compte pas le tour"
End If
End If
End Sub

Salutations
RaMa












Avatar
RaMa
re
tu peux améliorer en créant un toggleButton sur ta feuille
ça donnerait ça

Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
ToggleButton1.Caption = "Enregistrement" & Chr(10) & "Activé"
Else
ToggleButton1.Caption = "Enregistrement" & Chr(10) & "Désactivé"
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ColonneDossard
Dim Dossard_P, Dossard_D
'Dans l 'exemple ci-dessous les dossards vont de la ligne 2 à 29 en colonneA
'en colonne B l'heure d'enregistrement du passage
'en colonne C le nombre de tours effectués
'***********************************************************************

'indique ci_après le numero de colonne des dossards ex:1 col A
ColonneDossard = 1
'indique ci_après le numero de ligne du premier dossard ex:ligne 2
Dossard_P = 2
'indique ci_après le numero de ligne du dernier dossard ex:ligne 29
Dossard_D = 29
If ToggleButton1.Value = True Then
If Target.Column = ColonneDossard And _
Target.Row >= Dossard_P And _
Target.Row <= Dossard_D And _
If Not IsEmpty(Target) Then
gg = Target.Offset(0, 1) + 0.0012
If Time > gg Or IsEmpty(Target.Offset(0, 1)) Then
Target.Offset(0, 1) = Time
Target.Offset(0, 2) = Target.Offset(0, 2) + 1
Else
MsgBox "rapide le mec !! il a triché je ne compte pas le tour"
End If
End If
End If
End Sub



--
RaMa
"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message de
news:
Ok je viens de comprendre merci
"RaMa" a écrit dans le message de
news:
bonsoir
tu ne les saisis pas
tu les selectionnes en col A il sont déja pré- saisis
Si tu veux je te bal mon classeur
salutations


--
RaMa
"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message de
news:ut5B4$
Merci bien ton truc à l'air super mais je ne pige pas bien comment
s"effectue la saisie des dossards :-(
Je cherche encore
"RaMa" a écrit dans le message de
news:
Bonsoir

Je te propose ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ColonneDossard
Dim Dossard_P, Dossard_D
'Dans l 'exemple ci-dessous les dossards vont de la ligne 2 à 25 en
colonne

A
'en colonne B l'heure d'enregistrement du passage
'en colonne C le nombre de tours effectués

'***********************************************************************




'indique ci_après le numero de colonne des dossards ex:1 col A
ColonneDossard = 1
'indique ci_après le numero de ligne du premier dossard ex:ligne 2
Dossard_P = 2
'indique ci_après le numero de ligne du dernier dossard ex:ligne 25
Dossard_D = 25
If Target.Column = ColonneDossard And _
Target.Row > Dossard_P And _
Target.Row < Dossard_D Then
gg = Target.Offset(0, 1) + 0.0012
If Time > gg Or IsEmpty(Target.Offset(0, 1)) Then
Target.Offset(0, 1) = Time
Target.Offset(0, 2) = Target.Offset(0, 2) + 1
Else
MsgBox "rapide le mec !! il a triché je ne compte pas le tour"
End If
End If
End Sub

Salutations
RaMa
















Avatar
DB
ça marche pas chez moi ! Bug ?

"RaMa" a écrit dans le message de
news:
re
tu peux améliorer en créant un toggleButton sur ta feuille
ça donnerait ça

Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
ToggleButton1.Caption = "Enregistrement" & Chr(10) & "Activé"
Else
ToggleButton1.Caption = "Enregistrement" & Chr(10) & "Désactivé"
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ColonneDossard
Dim Dossard_P, Dossard_D
'Dans l 'exemple ci-dessous les dossards vont de la ligne 2 à 29 en
colonneA

'en colonne B l'heure d'enregistrement du passage
'en colonne C le nombre de tours effectués
'***********************************************************************

'indique ci_après le numero de colonne des dossards ex:1 col A
ColonneDossard = 1
'indique ci_après le numero de ligne du premier dossard ex:ligne 2
Dossard_P = 2
'indique ci_après le numero de ligne du dernier dossard ex:ligne 29
Dossard_D = 29
If ToggleButton1.Value = True Then
If Target.Column = ColonneDossard And _
Target.Row >= Dossard_P And _
Target.Row <= Dossard_D And _
If Not IsEmpty(Target) Then
gg = Target.Offset(0, 1) + 0.0012
If Time > gg Or IsEmpty(Target.Offset(0, 1)) Then
Target.Offset(0, 1) = Time
Target.Offset(0, 2) = Target.Offset(0, 2) + 1
Else
MsgBox "rapide le mec !! il a triché je ne compte pas le tour"
End If
End If
End If
End Sub



--
RaMa
"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message de
news:
Ok je viens de comprendre merci
"RaMa" a écrit dans le message de
news:
bonsoir
tu ne les saisis pas
tu les selectionnes en col A il sont déja pré- saisis
Si tu veux je te bal mon classeur
salutations


--
RaMa
"DB" <http://www.cerbermail.com/?4fs7Aj5xxN> a écrit dans le message
de



news:ut5B4$
Merci bien ton truc à l'air super mais je ne pige pas bien comment
s"effectue la saisie des dossards :-(
Je cherche encore
"RaMa" a écrit dans le message de
news:
Bonsoir

Je te propose ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ColonneDossard
Dim Dossard_P, Dossard_D
'Dans l 'exemple ci-dessous les dossards vont de la ligne 2 à 25
en





colonne
A
'en colonne B l'heure d'enregistrement du passage
'en colonne C le nombre de tours effectués

'***********************************************************************




'indique ci_après le numero de colonne des dossards ex:1 col A
ColonneDossard = 1
'indique ci_après le numero de ligne du premier dossard ex:ligne 2
Dossard_P = 2
'indique ci_après le numero de ligne du dernier dossard ex:ligne
25





Dossard_D = 25
If Target.Column = ColonneDossard And _
Target.Row > Dossard_P And _
Target.Row < Dossard_D Then
gg = Target.Offset(0, 1) + 0.0012
If Time > gg Or IsEmpty(Target.Offset(0, 1)) Then
Target.Offset(0, 1) = Time
Target.Offset(0, 2) = Target.Offset(0, 2) + 1
Else
MsgBox "rapide le mec !! il a triché je ne compte pas le tour"
End If
End If
End Sub

Salutations
RaMa




















1 2