Compteur particulier ....

  • Initiateur de la discussion Initiateur de la discussion karinette
  • 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 !

karinette

XLDnaute Occasionnel
Bonsoir au forum et @ ses experts ...
Petite question pour les pro des compteurs.J'ai une colonne K avec des noms de personnes. Dans la colonne B, je saisie des noms présents dans cette fameuse colonne K, je les exporte, et les efface.
Serait-il possible de mettre un compteur en colonne L, pour savoir le nombre de fois un nom a été saisie en B ??
Sachant que la base de nom de la colonne K peut s'agrandir ET changer d'ordre (tri alphabétique) ....
J'ai joint un classeur en exemple .... Plus clair .... 😛
Perso, ça me dépasse ....
 

Pièces jointes

Re : Compteur particulier ....

Bonsoir Karinette, Catrice, bonsoir le forum,

Arf Catrice est trop rapide ! Tant pis, j'envoie quand même ton fichier modifié en pièce jointe avec la macro ci-dessous :

Code:
Private test As Boolean 'déclare la variable test
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range 'déclare la variable r (Recherche)
 
If Target.Column <> 2 Then Exit Sub 'si l'édition à lieu ailleurs que dans la colonne B, sort de la procédure
'si la variable test est vrai, alors test=faux, sort de la procédure (évite la boucle sur l'événement "Change")
If test = True Then test = False: Exit Sub
'si la sélection est supérieure à 1, sort de la procédure (permet d'effacer plusieurs lignes sans bug)
If Selection.Count > 1 Then Exit Sub
'si la cellule est éffacée, sort de la procédure (permet d'effacer une cellule)
If Target.Value = "" Then Exit Sub
 
test = True 'définit la variable test
Set r = Columns(11).Find(Target.Value, LookAt:=xlWhole) 'définit la variable r
'si il existe au moins une occurrence de r, incrémente le compteur de r
If Not r Is Nothing Then r.Offset(0, 1).Value = r.Offset(0, 1).Value + 1
End Sub
 

Pièces jointes

Re : Compteur particulier ....

Bonjour boulou,

J'ai beaucoup de mal à te comprendre :
Comment puis-je obtenir que lorsque M23 = M32 la valeur de G15 soit additionnée à I15, G15 prenant alors la valeur 0.
si M23 = M32 et G15 <>0 alors
on additionne G15 et I15 --> OUI mais où mettons nous le résultat de l'addition ??
G15=0
fin si


Est-ce bien cela ? Conclusion quand G est nul il est inutile de poursuivre la même addition.

Seconde condition.
Ce transfert doit être impossible 2 fois CONSECUTIVES dans le cas où M23 serait à nouveau égal à M32. >>> 40 dans le cas présent.

Si pour toi "transfert" signifie "addition" alors l'opération ne sera pas menée 2 fois bien qu'évidemment M32 sera encore égal à M23.
Et enfin que signifie "M32 >>> 40" ??? M32 doit-il être strictement supérieur à 40 ?

cordialement
 
Re : Compteur particulier ....

Julberto bonjour.
Pardon d'avoir ainsi mal exposé la question.
"I15" est en fait un compteur initialement de valeur 0 auquel ne peut s'additionner la valeur de "G15" que lorsque les valeurs de "M23" et "M32" sont identiques. Cette égalité rencontrée envoi une valeur "x" à "I15" et une fois "I15" additionné à "G15" nous avons donc bien "I15" = "" juqu'au retour d'une nouvelle égalité.
Seconde condition.
Comme il s'agit d'un jeu, je veux interdire au joueur de revalider une xéme fois la réponse qu'il vient de trouver. "M32" est une valeur aléatoire alors que "M23" correspond à la réponse du joueur.

Suis-je assez explicite cette fois ? et merci beaucoup pour ton attention.
 
Re : Compteur particulier ....

Bonjour boulou, le forum

"I15" est en fait un compteur .... auquel ne peut s'additionner la valeur de "G15" que lorsque les valeurs de "M23" et "M32" sont identiques.
si M23=M32 alors I15=I15+G15
Cette égalité rencontrée envoi une valeur "x" à "I15"
donc "x" ne peut être que la valeur de G15
une fois "I15" additionné à "G15" nous avons donc bien "I15" = ""
Cette affirmation n'est vraie que si "x" (la valeur contenue dans G15) est l'opposée de celle contenue préalablement dans I5. C'est à dire G15 vaut -I15 (étrange ??? non!).
juqu'au retour d'une nouvelle égalité.
Nécessité donc d'une évènementielle : Private Sub Worksheet_Change(ByVal Target As Range)
interdire au joueur de revalider une xéme fois la réponse qu'il vient de trouver. ........... "M23" correspond à la réponse du joueur.
Donc l'évènementielle est activée par la modification de M23.
Et pour interdire la répétition des réponses d'un même joueur, il ajouter un flag qui met en relation l'identité du dernier joueur à celle du joueur courant.
Supposons que M24 contienne l'identité du dernier joueur alors l'exclusion d'une réponse multiple deviendrait :
M23 n'est modifiée que si M24 est différent de l'identité du joueur courant. Donc la procédure qui génère M23 doit aussi renseigner l'id du joueur en M25 par exemple.

Voici l'expression de ce que j'ai cru comprendre :
VB:
 Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$M$25" Then Range("M25").Value = ---> ' "id_du_joueur_courant_à_préciser"

If Target.Address = "$M$23" Then
  If Range("M23") = Range("M32") And Range("M24") <> Range("M25") Then
      ' en M24 id du dernier joueur pris en compte
      ' en M25 id du joueur courant
  Range("I15") = Range("I15") + Range("G15")
  Range("M24") = Range("M25") ' le joueur courant devient le dernier joueur
End If: End If

End Sub   'à condition qu'il n'y ait pas d'autres évènements dans cette feuille

cordialement
 
Re : Compteur particulier ....

Tes commentaires sont trés clairs et c'est donc moi qui ne le suis pas suffisament. Puis-je me permettre de t'envoyer, à ton adresse personnelle, ce jeu qui existe bien entendu sous d'autres présentations, afin que tu juges de l'ensemble. Nous ne changeons pas de jouer mais nous voulons simplement interdire de valider plusieurs fois la même réponse.

Merci beaucoup à toi.
 
Re : Compteur particulier ....

re,
Il te suffit de transposer ce que j'ai fait pour les joueurs et l'appliquer aux réponses répétitives.
Quand une solution est donnée et acceptée, la sauvegarder. Une réponse est acceptée si elle diffère de celle sauvegardée.
Je ne pense pas que ce soit utile de m'envoyer ton fichier d'autant que je ne sais quand je pourrais le dépouiller.

A +
 
- 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

Discussions similaires

Réponses
3
Affichages
1 K
P
  • Question Question
Réponses
3
Affichages
1 K
C
Réponses
3
Affichages
2 K
claivier_58
C
C
Réponses
1
Affichages
2 K
claivier_58
C
J
  • Question Question
Réponses
6
Affichages
1 K
jean_jack
J
J
Réponses
9
Affichages
1 K
JBond13600
J
L
Réponses
12
Affichages
1 K
linebich
L
A
Réponses
0
Affichages
8 K
Arpopa
A
B
Réponses
1
Affichages
712
bluet
B
M
Réponses
20
Affichages
3 K
massol
M
Retour