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.

20tournoi-v6.zip (101.81 Ko)

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

A tester

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

15tournoi-v6.zip (109.49 Ko)

Bonjour

A tester

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

Rechercher des sujets similaires à "recherche fonction couleur"