Classement podium pour jeu de cartes

Bonjour à tous,

Un défi aux grands connaisseurs de VBA.

J'ai faits un petit fichier de classement du jeu de Rota se joue avec un jeu de tarot et consiste à marquer le moins de points possible, et se joue entre 3 et 12 joueur.

Avec nos amis, nous nous amusons comme des fous.

Est il possible, que en cliquant sur Podium de la feuille Marquages, renvoyer le classement sur la feuille podium ou bien sûr il y a un podium et j'aimerais pouvoir importer sur ce podium les 3premiers, avec image homme ou femme.

Idem pour les autres noms selon leur classement mais seulement leurs noms.

S'il y a un nom non renseigné en ligne 2, ne pas en tenir compte dans le classement car il y aura d'office 0 point et normalement, il est possible de jouer entre 3 à 12 joueurs maximum. Actuellement, ça fausse les résultats car si 0, classé N° 1. Donc si 6 noms non renseignés, 6 ex_aequo en N°1 et le véritable gagnant est N°7

S'il n'y a que (exemple) que 8 joueurs, obtenir un classement de 1 à 8 seulement face aux noms renseignés et non 4 N°1 à 12

Obtenir sur la feuille Podium

Les images de Dame et Homme qui sont stoquées sur la feuille Données.

N° 1 en A16S Si c'est une Dame, mettre l'image Dame en bonne place sur le podium

N° 2 en C16 Si c'est un Homme, mettre l'image d'un Homme en bonne place sur le podium

N° 3 en E16

et les autres selon leur classement

Le sexe est renseigné manuellement en ligne 1 de la feuille Marquages. l'idéal serait que lorsque l'on choisi le nom, en ligne 2, le sexe s'inscrive automatiquement en ligne 1 au dessus du nom.

Les lignes 15 à 19 sont des récapitulatifs faits avec le bouton Session suivante toutes les 10 parties en inscrivant les totaux de la ligne 13 avant d'effacer les résultats des lignes 3 à 12 pour refaire une série de 10 parties.

J'ai l'impression de demander l'impossible. Le fichier sera certainement plus parlant.

Merci pour votre aide

@+

Robert

27fichier-podium.zip (532.77 Ko)

Bonjour,

Ci-joint une petite proposition, a part la maj des images du podium, le reste est géré par des formules.

Cliquer sur votre bouton "podium" pour le mettre a jour.

24fichier-podium.zip (407.42 Ko)

Bonjour,

Excellent, je ne connaissais pas cette formule. En début de matin, j'avais faits quelques tentatives, mais notre fournisseur électricité à décidé de faire des travaux dans la rue, donc plus de pc.

Je vais patienter avant de clore le sujet car j'ai la sale habitude de clore trop vite.

Peut être que quelqu'un a une solution pour ma luxueuse demande de déplacement homme, femme

Merci beaucoup pour votre aide

bonne soirée

Robert

Bonjour Robert,

Peut être que quelqu'un a une solution pour ma luxueuse demande de déplacement homme, femme

Je n'ai pas compris cette partie… Il manque quelque chose dans le fichier que je vous ai partagé ?

Bonne journée.

Bonjour,

Je désir , dans la feuille Données, avoir face à chaque nom une silhouette féminine ou masculine, à chaque silhouette, j'ai intégré les initiale du nom et je voudrais que, au classement, sur le podium apparaisse la personne.

J'ai essayer une piste, mais ça ne fonctionne pas car je suis sous Excel 2016

Je pense que c'est possible, mais mes connaissances sont limitées. Je continue mes essais.

Bonne journée

Robert

Sur Excel 2016 c'est possible via VBA oui. Si vous pouviez me joindre le fichier avec ces images, que je vous fasse une proposition. Vous pouvez mettre n'importe quelle image, meme des formes simples, ce qui compte c'est qu'elles aient bien les bon noms.

Après je me dis que ça va etre petit non, si il y en a 1 par ligne… Et du coup oui on pourrait les mettre sur le podium au lieu de celles "génériques".

Bonjour

C'est bien sur le podium que je désir mettre les trois personnages et pas les autres.

Pour le podium, j'ai créé une ligne de 290 de hauteur. J'ai trouvé des formules, mais dans Excel 2016, il n'y a pas le collage spécial, images liées.

Je vais essayer de préparer un fichier, car sur mon fichier d'origine, j'ai les photos réelles de mes amis et cet après midi, j'ai en RDV.

Bon après midi

Robert

Bonsoir,

Le nouveau fichier avec les images à placer sur le podium.

14fichier-podium-v2.zip (455.92 Ko)

Rebonjour,

Ok super, ci-joint le fichier mis à jour, l'ajustement était rapide.

Pour vos images, faites juste attention à 1 chose : c'est la cellule qui contient le coin haut gauche qui sert de référence pour les reconnaitre. Dans votre exemple ça correspond nickel mais si jamais vous aviez un soucis vérifiez bien cela.

Aussi j'anticipe un autre point : si les vraies images ont une forme différente de celles actuelles (peut-être +/- larges/hautes), vous risquez d'avoir un podium un peu moins joli : encore une fois les images sont placées par rapport à leur coin haut gauche. Pour l'ajuster, dans la macro "MAJClt", ce sont les positions qu'il faut adapter. Si vous n'y arrivez pas je pourrai vous le faire, mais sinon essayez ce n'est pas très difficile.

Bonne journée.

19fichier-podium-v2.zip (457.94 Ko)

La macro pour les curieux :

Public Sub MAJClt()
  ' recuperation des images dans le tableau de score
  Dim podiumPics(1 To 3) As Shape
  Dim i As Long, shp As Shape
  With Feuil3.ListObjects("tblClt").ListColumns(4).DataBodyRange
    For i = LBound(podiumPics) To UBound(podiumPics)
      For Each shp In Feuil3.Shapes
        If shp.TopLeftCell.Address = Feuil3.Cells(.Cells(i).Value2, 2).Address Then
          Set podiumPics(i) = shp
          Exit For
        End If
      Next shp
    Next i
  End With
  ' suppression des anciennes
  For Each shp In Feuil4.Shapes
    If shp.Name Like "Joueur_*" Then shp.Delete
  Next shp
  ' ajout des nouvelles images
  Dim positions(1 To 3, 0 To 1) As Double
  positions(1, 0) = 201.750152587891: positions(1, 1) = 0#          ' <- positions adaptables
  positions(2, 0) = 107.249366760254: positions(2, 1) = 19.5        ' (2,0) = gauche de la 2e image, (2,1) = hauteur
  positions(3, 0) = 311.250152587891: positions(3, 1) = 51.75

  For i = 1 To 3
    podiumPics(i).Copy
    Feuil4.Paste Feuil4.Range("A1")
    With Feuil4.Shapes(Feuil4.Shapes.Count)
      If .TopLeftCell.Address(False, False) = "A1" Then
        .Name = "Joueur_" & i
        .Left = positions(i, 0)
        .Top = positions(i, 1)
      End If
    End With
  Next i

  Feuil4.Activate
  Feuil4.Range("C8").Activate
End Sub

Bonjour,

Vraiment génial. Merci beaucoup.

Je vais étudier cela de très prés. Je vous tien au courant.

Petit souci, les images Argent et Bronze sont inversées après ajout d'une manche !

Merci

Bonne journée

Robert

Merci pour votre retour.

Que voulez-vous dire ? J'ai bien la 2e personne sur Argent et la 3e sur Bronze… Il faut bien relancer la macro MAJClt pour mettre à jour les images du classement.

Bonjour,

Pardonnez moi, je n'avais pas compris qu'il fallait lancer la macro MAJclt. Je l'ai vu après avoir posté.

J'ai essayé de remplacer des personnages par mes photos et bien faits attention à votre remarque, mais un des candidats est récalcitrant, Sur la feuille Données en M Row, s'affiche #N/A. Même en essayant d'ajuster et même en remettant l'image d'origine, j'ai toujours le même résultat.

Donc bug sur la ligne:

If shp.TopLeftCell.Address = Feuil3.Cells(.Cells(i).Value2, 2).Address Then

J'ai essayé également d'intégrer la macro MAJclt à la fin du déroulement de SessionSuivante, mais ça ne fonctionne pas.

Chose que je n'avais peut être pas précisé, ce jeux consiste à faire le moins de points possibles il s’appel Rota et se joue avec un jeux de tarot.

Un autre bug dans les formules, si j'ai un candidat inscrit et qu'il soi très bon, donc 0 points à chaque fois, il est considéré absent et le candidat qui devrait être second se retrouve premier.

Je vais continuer à creuser.

@+

Robert

Bonjour,

Mes excuses, veuillez trouver ci-joint le fichier corrigé pour l'histoire du score à 0 considéré absent. Pour le calcul du total, au lieu de vérifier si le score est >1, on regarde si la cellule B2 est vide.

Pour le #N/A, à mon avis le joueur n'est pas présent dans la colonne A49:A68 de la feuille données. Si il est en dessous, vous devez étirer la plage dans la formule de la case M3 pour le trouver. Si il est dans la liste… Vérifiez bien l'orthographe de son prénom. Elle doit être absolument identique à celle du tableau Joueur/Genre (dans la colonne B = Joueur).

Pour intégrer ma macro à la fin de la votre, à la fin de votre code, dernière ligne avant "End Sub", ajoutez simplement : Call MAJClt (fait dans le fichier joint)

21fichier-podium-v2.zip (459.69 Ko)

Ça fonctionne, merci beaucoup.

C'était bien une faute d’orthographe qui bloquait.

Je finalise le projet et je vous le communiquerais en message personnel si ça vous intéresse.

Je vais regarder maintenant pour ajouter une musique mp3 "du genre champions" qui je l’espère se déroulera pendant le déroulement de ma macro et encore 10 seconde après.

Je ne vais pas mettre la Marseillaise car un couple de mes amis sont militaires de carrière

Bonne soirée

Robert

Bonjour,

Merci pour votre retour. Pour la musique je n'y connais rien, mais je vous renvoie sur le dernier post à ce sujet Ajouter SON/MUSIQUE feuille Excel (onedrive) , @LouREED en connait un paquet sur le sujet !

Bonne journée

Bonjour,

Merci beaucoup.

Je vais allez voir le lien et clore ce sujet ou vous avez été d'un grand secours.

Vous ne m'avez pas dits si le fichier final vous intéressait ?

Si oui, je vous le passerais en message personnel, mais je ne sais pas si nous pouvons joindre un fichier sur les MP du forum.

Bonne journée

Robert

Merci c'est gentil mais je ne joue pas au tara (seulement tarot, ce qui m'intéresse c'est de faire des points 😜). Donc je n'ai pas besoin de ce fichier, il y a ceux de la discussion qui sont accessibles c'est suffisant pour moi.

Content de vous avoir aidé, c'était intéressant de travailler avec "le moins de VBA possible" en utilisant les fonctions là où c'est possible.

Bonne journée.

Bonjour,

J’essaie de comprendre le positionnement des images sur le podium,

Dans mon essai, je voudrais que les pieds touchent le podium. Je n'arrive pas à comprendre comment vous avez défini la position de l'image.

positions(1, 0) = 201.750152587891: positions(1, 1) = 0#

Que signifie le chiffre = 201.750152587891 ? et comment l'avez vous défini ?

Si je remplace position (1, 0) par (2, 0) il se déplace totalement à gauche, si je remplace position (1, 1 par (2, 1), ça bug (1, 2) il se positionne totalement à gauche.

Je suis perdu

Pour les essais, je conserve les mêmes résultats à chaque foi.

Merci pour vos explications de formation à un ignorant

Bon Weekend

Robert

Ça y est, j'ai compris

J'ai modifié les derniers chiffres et mis mes images toutes à la même dimension en hauteur et mes personnages sont bien à la hauteur souhaitée.

Donc, malgré que je ne comprends pas les chiffres cités plus haut, le fichier est OK

Maintenant, je vais passer à la musique de victoire

Bon Weekend

Robert

Bonjour,
saboh12617 bonjour,

en apportant de "petites" modification au fichier on peut se retrouver avec ce code :

Public Sub MAJClt()
  Dim I As Long, Sh As Shape
  Dim Positions(1 To 3, 0 To 1) As Double
  With Feuil4
    ' suppression des anciennes
    For Each Sh In .Shapes
      If Sh.Name Like "Joueur_*" Then Sh.Delete
    Next Sh
    ' mise en mémoir des positions centrales de chaque marche en fonction des cellules
    Positions(1, 0) = .Range("D7").Left + .Range("D7").Width / 2: Positions(1, 1) = .Range("D8").Top
    Positions(2, 0) = .Range("B10").Left + .Range("B10").Width / 2: Positions(2, 1) = .Range("B11").Top
    Positions(3, 0) = .Range("F10").Left + .Range("F10").Width / 2: Positions(3, 1) = .Range("F11").Top
    ' ajout des images en fonction de la donnée en colonne 3 du tableau tblClt
    For I = 1 To 3
      ' on duplique l'image "invisible" de la feuille Données correspondant au sexe du joueur
      ' l'avantage du Duplicate avec le SET= fait qu'il n'y a pas de sélection de shape
      Set Sh = .Shapes("Image_" & Range("tblClt").Cells(I, 3)).Duplicate
      With Sh
          ' on lui donne un nom
          .Name = "Joueur_" & I
          ' son left est égal au point central de la marche moins la moitié de sa largeur
          .Left = Positions(I, 0) - Sh.Width / 2
          ' ses pied se trouve à la hauteur du point central moins sa hauteur
          .Top = Positions(I, 1) - Sh.Height
          ' on le rend visible
          .Visible = True
      End With
    Next I
  End With
End Sub

Les modifications :
- déplacement des silhouettes homme dame sur la feuille Podium en les rendant invisible
- positionnement des marches au position des cellules grâce à la touche [ALT], en effet si vous touchez au poignées de redimensionnement en ayant la touche [ALT] appuyée, alors le shape s'agrandi ou diminue jusqu'à la prochaine bordure de cellule ce qui permet de le mettre à la taille des ces dernières, le déplacement réagit de la même manière.
- calcul de la position central de la marche du podium en fonction de la cellule où cette marche se trouve, donc plus de valeur en dur (si ce n'est la référence des cellules où se trouve les marches, mais en les nommant, cela peut devenir "dynamique")
- utilisation de SET = avec DUPLICATE pour copier coller un shape sans le sélectionner, et comme les shapes sources sont invisibles il faut rendre ces nouveaux visibles.
- Les shapes sont choisis en fonction de la donnée colonne 3 du tableau tblClt.

Le fichier ainsi modifié :

@ bientôt

LouReeD

Rechercher des sujets similaires à "classement podium jeu cartes"