Recherche en fonction de la couleur de la cellule
Bonjour le forum,
je reviens vers vous puisqu'à chaque fois une solution est trouvée à mes problèmes, j'en appelle donc à vos lumières.
Sur le fichier joint (fichier qui gère des rencontres entre joueurs), je cherche sur la feuille "match en cours" à faire apparaitre le nom des 2 joueurs qui doivent s'affronter en fonction des terrains disponibles.
Sur l'exemple, pour le premier tour il y a 16 matches à jouer et 8 terrains disponibles : je voudrais que soit affiché les 8 premiers matches, puis lorsqu'un de ces matches est terminée (double-click sur le gagnant qui se colore en vert et se déplace dans le tableau vers la droite), j'aimerais que les noms des joueurs du match suivant s'affiche à la place de ceux du match terminé et ainsi de suite.
Je ne sais pas comment indiquer au programme qu'un match est terminé (peut être en utilisant la couleur de la cellule ?) et où chercher les joueurs suivants.
J'espère avoir été assez clair ... Je reste dispo pour toutes les questions ...
Merci à ceux qui voudront me donner un début de réponse.
JB
J'ai commencé avec ça :
Sheets("1er tour").Select
For Each Cell In Range("B3:N114")
If Cell.Interior.ColorIndex = 4 Then
Cell.Copy
Sheets("Match en cours").Select
Range("C4").Paste
End If
Next Cell
Je suis dans le bon ?
Re-bonsoir
je cherche depuis plusieurs heures sur le net, mais je dois avouer que je sèche...
Quelqu'un pour me mettre sur la voie ?
Merci d'avance
Bonjour Banzai64,
d'abord merci de vous être penché sur mon souci.
Le code fonctionne très bien pour l'instant, j'ai compris que les couleurs sont utilisés pour déterminer le statut d'un match.
Mais plusieurs problèmes vont se poser maintenant :
- d'abord le nombre de terrains disponibles : l'utilisateur devra rentrer le nombre en D1 et les terrains dispo s'actualisent : j'avais mis 8 pour l'exemple (j'ai prévu 20 terrains maximum : de C4 à E23 maximum)
Le programme doit donc tenir compte de cela : si seulement 4 terrains sont dispo, il ne devra afficher que 4 lignes.
- est-il possible de faire en sorte que la macro s'actualise sans interruption : si un match se termine, l'utilisateur valide le match puis se rend sur la feuille "Match en cours" et le match suivant s'inscrit directement sans avoir à relancer la macro ou alors elle se lance dès que l'on clique sur la feuille "Match en cours". Peut-être serait-il possible de faire ressortir (gras / couleur ?) le match suivant qui vient de s'inscrire sur le terrain laissé libre ?
- enfin, un autre souci que je n'ai pas exposé lors de mon 1er message (je m'en excuse) est que par la suite, les noms des joueurs à rechercher ne seront plus sur la colonne 2 (comme noté dans le code) mais sur les colonnes 3, 4, 5 et 6 et également 10, 11 et 12.
Lors de la suite du tournoi, les joueurs ne seront également plus placé l'un en dessous de l'autre (ligne +1), mais qq lignes plus bas (peut-être utiliser prochaine ligne non vide ? puisqu'ils seront tjs l'un en dessous de l'autre sans rien entre eux).
J'ai également plusieurs couleurs pour chaque période du tournoi (reclassement des joueurs perdants) : si la couleur de base est celle du 1er tour, les tours suivants ne seront plus détectés ? Puis-je indiqué 4 couleurs de base ? En utilisant la commande Or ?
Je pourrais aussi utiliser le même fond pour toutes les parties du tableau, mais ça serait moins ergonomique ...
Ca fait beaucoup de nouvelles données et je m'en excuse.
Je vais essayer d'avancer sur ce code, si vous avez des propositions je suis évidemment preneur.
Encore un grand merci !
JB
Bonjour
Je me disais que c'était trop simple
Cela devient trop ardu moi je bloque
Imagines: Pour l'affection des terrains, en colonne B un match est fini donc on libère le terrain en cherchant le joueur sur les terrains, mais manque de bol, ce joueur est déjà sur un terrain mais pour un autre match (1/4) donc on l'enlève de son terrain et on risque de placer une autre équipe qui est peut être en (1/8) sur ce terrain devenu libre
Je m'explique mal mais c'est une difficulté que je rencontre
Je n'ai pas d'idée comment résoudre ça
Pour le nombre de terrains qui peut varier, regardes le fichier joint
Je le met sous le coude et qui sait (mais pas trop d'espoir)
Bonjour
Il fallait que j'abandonne pour trouver une idée
A vérifier soigneusement
Si erreur indiques la démarche à suivre pour la refaire
Alors là un grand coup de chapeau : je savais que vous étiez fort mais là c'est du grand art !
A la lecture de la première réponse, je me suis dis que c'était insoluble...
Mais non, ça fonctionne, c'est génial !
J'ai vu dans le code que tu avais créer des zones de recherche, en conservant les couleurs de base de chaque zone.
Peux-tu me dire comment se réalise la recherche des matches à jouer : en effet, pour l'instant, les matches se déroule dans la partie "haute" avant de passer dans la partie "basse" (si j'ai bien suivi).
Dans la réalité, les joueurs perdants au 1er tour sont censés rejouer "en même tps" que les vainqueurs dès qu'ils ont un adversaire, cad que la recherche doit se dérouler par colonne (tous les matches de colonne B "haut" puis colonne C et B "bas" puis D et J et C "bas" etc ...
Si tu peux m'indiquer comment tu as organiser ça dans le code, je peux peut-être le modifier moi-même ?
En tout cas un grand bravo à toi !
Je suis bluffé. Merci encore.
JB
Bonjour
Tout est indiqué dans les tableaux, j'ai mis des remarques pour indiquer la teneur des tableaux
La macro recherche d'abord tous les matchs finis et dans l'ordre suivant
Matchs zone haut gauche, matchs zone haut droite, matchs zone bas gauche et matchs zone bas droite
Les colonnes sont balayées du numéro le plus petit au numéro le plus grand (pas exact exact - mais c'est l'idée) de chaque zone
Ensuite la macro parcourt les mêmes zones dans le même ordre pour les matchs en cours afin d'attribuer un terrain si disponible
Si tu veux modifier le programme, il faut que tu construises les tableaux, la macro se débrouillera en fonction de
Chaque sous tableau (les Array surlignées -pour l'exemple) doivent commencer toujours par les mêmes informations (voir les remarques)
zones =Array(Array(.......),Array(........) etc .......)
Si tu respectes la bonne organisation il n'y aura pas de problème
Si des difficultés tu peux revenir ici : Mais pas pour refaire tous les tableaux
Bonsoir,
J'ai bien avancé grâce à ton aide, je retouché les tableaux pour que la recherche se fasse au fur et à mesure de l'avancée des matches.
Ca marche nickel ! C'est top !
Si je peux me permettre une dernière requête, j'aimerais pouvoir améliorer le visuel de la feuille 'match en cours".
Est-il possible de colorer le dernier match apparu dans le tableau ? Et de faire en sorte qu'à chaque nouveau match à jouer le précédent perde sa couleur : en fait faciliter la lecture du dernier match qui apparait.
Ce que j'ai commencé à faire fonctionnait pour colorer : mais avec la même couleur que les précédents, l'effet est raté ! J'ai essayé random mais ça ressemble à un arc en ciel !
En tout cas un grand merci pour ton aide sur ce projet !
JB
Bonjour,
c'est carrément top ! Pile ce que je souhaitais ! Merci, merci, merci !!!
Une question : penses-tu qu'un message box serait plus propice pour annoncer le match suivant en restant sur la page "1er tour", ainsi la feuille 'match en cours" pourrait ne servir que pour superviser l'ensemble des matches ?
C'est juste une question d'optimisation que je me pose, ne te sens pas obligé de t'y pencher.
Encore un grand merci.
JB