Copier dans nouvelle colonne vide valeur heure fin de match

Bonjour

dans un objectif de gestion de tournoi sportif, je recherche à récupérer l heure de fin de match de chaque joueur et mettre cette valeur heure dans une nouvelle colonne à chaque fin de match dans une feuille "dernier match" différente de la feuille principale

Sur la feuille principale "Tables" en remplissant la case orange de 1 à 14 et les cases jaunes de 1 à XX , j'envois les joueurs sur une table en cliquant sur la case rouge validation

Lorsqu ils reviennent de la fin de la rencontre je mets le num de tabledans la case orange puis un clic case rouge validation efface les joueurs sur la table concernée.

A ce moment la je peux récupérer les numéros de dossard des joueurs concernés dans les cases V37 à V40 de "Tables".

A partir de ces données, je souhaite mettre dans la feuille "dernier match" en face du numero de dossard du joueur dans une colonne vide l'heure de retour

Cette donnée doit rester en permanence et lorsque le joueur revient d'un autre match, je dois mettre l heure de fin de ce match dans une colonne suivante vide

Voila , je pense qu une formule VBA doit resoudre mon souci mais c est pas trop mon fort, car il faut identifier le joueur et recopier la valeur dans sa ligne. Un joueur peut faire un seul match , un autre une dizaine. donc nombre de colonnes différentes d un joueur à l autre.

Pourriez vous me donner un coup de main svp?

Bonjour,

je ne suis pas sûr d'avoir compris comment fonctionne ton classeur. j'ai ajouté du code dans ta macro de validation.

la macro détecte si une valeur est introduite en i38. si oui, c'est le signe d'une fin de partie. sur base de cela la macro récupère les N°de dossard et met à jour l'heure dans la feuille horaire ...

si non, on exécute la partie de la macro existante.

j'ai fait également un peu de nettoyage de ta macro enregistrée.

Sub validation()
'
' validation Macro
' Macro enregistrée le 27/05/2006 par fv
    Set wshdm = Sheets("horaire dernier match")
    With Sheets("tables")
        .Unprotect
        If .Range("I38") <> "" Then    'fin de partie car valeur introduite en i38, libération table
            For i = 37 To 40
                dossard = .Range("V" & i)
                ' on recherche le dossard dans wshdm
                Set re = wshdm.Columns("A:A").Find(dossard, lookat:=xlWhole, LookIn:=xlValues)
                If re Is Nothing Then
                    MsgBox "dossard n°" & dossard & " non trouvé dans la feuille horaire dernier match"
                Else
                    ' dc première colonne libre pour ce dossard
                    dc = wshdm.Cells(re.Row, Columns.Count).End(xlToLeft).Column + 1
                    wshdm.Cells(2, dc) = "Fin dernier match"    ' titre pour la nouvelle colonne"
                    wshdm.Cells(re.Row, dc) = Now    'enregistrement de l'heure de fin
                    wshdm.Cells(re.Row, dc).NumberFormat = "hh:mm"
                End If
            Next i
        Else
            'attribution d'une table
            '   selection et variable choix activée
            choix = .Range("M49")
            '   Copie table N-2
            .Range("V35:W41").Copy .Range("X35:Y41")             '   selection de la zone de copie table N-2
            '   sélection variables lettre et chiffre
            lettre = .Range("P48")
            chiffre = .Range("P49")
            '   Copie table N-1
            Range(.Cells(chiffre - 1, lettre), .Cells(chiffre + 4, lettre + 1)).Copy .Range("V35")    '   selection de la zone de copie table N-1
            '   sélection de la zone de copie
            .Range("JOUEURS2").Copy .Range(choix)    '   positionne sur la zone de copie
            '   sélection de la zone de copie pour l'effacer
            .Range("JOUEURS").ClearContents
        End If
        .Range("A1").ClearContents
        '   selection et efface la cellule de la table
        .Range("I36:I38").ClearContents
        .Range("I37") = 0
        '   selection de la cellule A1 pour repositionner l'affichage
        .Select
        .Range("A1").Select
        .Protect
    End With
End Sub

Bonjour

merci de t'intéresser à mon cas

En réalité , la macro existante ne détecte pas la valeur en I38

exemple : En I38, je mets le numéro de la table 3 puis ensuite je mets de I40 à I43 de un à 4 numéro de dossard de joueurs. exemple 1 2 et 6

leurs noms apparaissent en K40 à K43

Ensuite je clique sur validation pour lancer la macro.

la j'ai réalisé le lancement des matchs. Cela efface les joueurs de I40 à I43 et mets les noms dans la table concernée ici la table 3 .

Au retour des joueurs, je n'ai plus qu à rentrer dans I38 le numéro de leur table ( la 3) et cliquer sur validation pour effacer les joueurs de la table.

a ce moment la, je récupère en V37 à V40 les 1 à 4 dossards des joueurs lancés.

C'est sur ces 4 dossards que je souhaite mettre l'heure de retour.

Donc à chaque fois que j'efface une table en indiquant son numéro de table , mes numéros de dossard apparaissent en V37 à V40

Je peux avoir jusqu'à 300 numéros de dossard

La difficulté est que à chaque retour de table , les données précédentes s effacent , il faut donc que l heure reste figée

j'espère avoir été plus clair

Ta modification de la macro ne fonctionne pas aussi bien que la macro existante

patrickping a écrit :

Bonjour

merci de t'intéresser à mon cas

En réalité , la macro existante ne détecte pas la valeur en I38

je me suis mal exprimé, c'est mon ajout à ta macro de validation qui commence par détecter si une valeur est introduite en I38 pour en déduire s'il s'agit d'une fin de partie. j'ai compris que je ne peux pas utiliser ce critère pour détecter que l'appui sur le bouton validation signifie une fin de partie

exemple : En I38, je mets le numéro de la table 3 puis ensuite je mets de I40 à I43 de un à 4 numéro de dossard de joueurs. exemple 1 2 et 6

leurs noms apparaissent en K40 à K43

Ensuite je clique sur validation pour lancer la macro.

la j'ai réalisé le lancement des matchs. Cela efface les joueurs de I40 à I43 et mets les noms dans la table concernée ici la table 3 .

je ne vois aucun nom apparaitre dans la table concernée

Au retour des joueurs, je n'ai plus qu à rentrer dans I38 le numéro de leur table ( la 3) et cliquer sur validation pour effacer les joueurs de la table.

a ce moment la, je récupère en V37 à V40 les 1 à 4 dossards des joueurs lancés.

C'est sur ces 4 dossards que je souhaite mettre l'heure de retour.

c'est ce que fait la partie de macro que j'ai ajoutée, elle prend les dossards de V37 à V40, les recherche dans la feuille horaires ...

et ajoute l'heure dans la première colonne disponible

Donc à chaque fois que j'efface une table en indiquant son numéro de table , mes numéros de dossard apparaissent en V37 à V40

Je peux avoir jusqu'à 300 numéros de dossard

La difficulté est que à chaque retour de table , les données précédentes s effacent , il faut donc que l heure reste figée

j'espère avoir été plus clair

Ta modification de la macro ne fonctionne pas aussi bien que la macro existante

selon moi mes corrections n'ont rien changé au fonctionnement de ta macro, mais si tu le dis je te crois. il te suffit de continuer à utiliser ta macro existante si elle te convient.

Bonjour h2so4

Voila

j'ai remis ma macro

j'ai inclus ton code dedans au bon endroit

et ...tout fonctionne quasi parfaitement.

Les horaires de fin de match s'affichent à chaque retour des joueurs dans une nouvelle colonne

j'ai pu tester sur un grand nombre de joueurs.

J'ai juste un souci que je ne suis pas arrivé à résoudre.

Sur la ligne 2 à chaque fois que je lance ma macro dans la feuille tables, dans la feuille horaire dernier match, ton code remplit 3 à 4 colonnes sur la ligne 2 avec l'heure.

Du coup , au bout de X maacro lancés j'ai un tres grand nombre de colonne remplies sur la ligne 2 uniquement.

as tu une idée pour éviter ceci?

Sinon tout est parfait pour moi .Un grand merci à toi pour ton aide

Je mets ce post en résolu dès ton retour

Bonjour,

j'avoue ne pascomprendre pourquoi il met l'heure en ligne 2. j'ai bien une instruction qui met le titre "fin de dernière partie" dans la colonne de chaque nouvelle heure ajoutée.

si ceci ne te convient pas il te suffit d'enlever l'instruction

wshdm.Cells(2, dc) = "Fin dernier match"    ' titre pour la nouvelle colonne"

par contre pour comprendre le problème avec l'heure en ligne 2, j'aurais besoin au minimum du code et encore mieux ton fichier avec le code, ainsi que la séquence des actions pour reproduire le problème.

Voila le fichier joint avec le code dans la macro validation

Pour la séquence des actions

ex dans la zone orange feuille table mettre 1

Puis rentrer dossard 1 et 2 par ex

valider

puis remettre 1 dans la zone orange et

valider

ceci a eu pour effet la 1ere fois de lancer les joueurs sur une table

la seconde fois de confirmer le retour des joueurs.

et les heures s inscrivent dans la feuille "horaire dernier match"

Il n 'y a plus que cette ligne qui se remplit à chaque fois qu l on lance la macro par validation.

Merci beaucoup

bonjour,

voici une version corrigée. ça m'a l'air de fonctionner.

Super !!

Un grand merci à toi pour ton aide

tout fonctionne parfaitement

Merci beaucoup

Bonjour,

tu m'as posé une question via mail, me semble-t-il. Mais je ne la retrouve plus. peux-tu la poser sur le forum ?

Bonjour

je souhaite optimiser la saisie via des saisie sur une boite de dialogue

est ce compliqué?

ceci entraine t il des modifications dans le code VBA pour récupérer les zones de données?

merci

je pourrai faire un descriptif précis si besoin.

j'aimerai bien le faire mais avoir un peu d'aide

merci

Bonjour

je souhaite optimiser la saisie via des saisie sur une boite de dialogue

est ce compliqué?

tout est relatif, c'est une logique à apprendre à maîtriser pour qui ne l'a jamais fait, et pour moi programmer des userforms n'est pas ce que je trouve le plus amusant

ceci entraine t il des modifications dans le code VBA pour récupérer les zones de données?

oui, nécessairement

je pourrai faire un descriptif précis si besoin.

j'aimerai bien le faire mais avoir un peu d'aide

il faut faire le design d'un userform, qui peut s'inspirer très fort de ta manière actuelle de saisir les données, (les champs à saisir, les boutons de validation, ...)

Bonjour

pour les messages box , je vais conserver la mise en page actuelle pour le moment

je viens à nouveau rechercher une fonction certainement bien simple mais

je recherche donc une macro , une simple ligne je pense qui me dit que si dans un 'onglet appelé "tri horaire" une cellule de la plage A3 :A400 est colorée (j'ai pris une couleur RGB(255, 192, 0 ) ET que le compteur horaire dans la meme cellule A3:A400 est passé à zéro alors cette cellule passe en blanc et reste figée en blanc.

J'avoue ne pas arriver à créer cette fonction en vba

avec une MFC ca fonctionne bien mais des que la condition de temps évolue , ca ne fonctionne plus

merci de votre aide

Bonsoir,

peux-tu nous mettre un fichier avec cet onglet "tri horaire" et les macros associées ?

Voila fichier joint

le fichier présente sur lm onglet "tables" en T3 une liste de noms triés par temps horaire

Le bouton à coté en S3 permet de colorer le nom juste à coté et de trier par couleur. ceci me permet d oter de la liste de tri des joueurs absents ne jouant plus.

a chaque appui sur le bouton validation sur l'onglet "tables" cette liste est mise à jour.

Le souci est de décolorer la case si un joueur revient pour le remettre dans la macro de tri qui est faite sur la couleur et le temps dans l onglet "tri horaire"

a ta dispo pour plus d'explications

mercii

Bonjour Patrick,

voici ce que j'ai compris :

tu veux une macro qui supprime la couleur des cellules de la colonne A sur la feuille tri horaire dont le contenu est 0:00 ?

ai-je bien compris ?

Bnjour

oui

c'est cela mais la case compteur repassant à zero, elle recommence le compteur quasi immédiatemment.

Une condition prenant en compte au bout de 2s me convient aussi si cela t'arrange.

L'important étant que si la case était coloré, elle revienne en blanc à la remise à zero du compteur et reste en blanc.

Une action ultérieure sur le bouton avec la macro de tri pourra la remettre en couleur éventuellement dans la journée

merci

re-bonjour,

comment les valeurs de ces compteurs reviennent à zéro ? il y a une macro chronomètre ou quelque chose du style ?

Oui

c'est la macro que tu as crée qui donne les horaires de fin de match pour chaque joueur dans l'onglet "horaire dernier match". j'ai crée dans cet onglet une colonne donnant le temps depuis le dernier match qui me permet de faire un tri dans l'onglet "tri horaire".

du coup quand un joueur a finit sa rencontre, son compteur de temps revient à zero des que je saisis le numéro de sa table en retour sur l'onglet principal "tables".

Bonjour

j'ai toujours pas compris où tu voulais en venir, mais voici une macro qui enlève la couleur des cellules de la colonne A dont la valeur esr 0.

pour un bon fonctionnement, il faut aussi supprimer la première mise en forme conditionnelle sur cette colonne.

Sub reinitcolor()
    With Sheets("tri horaire")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 1 To dl
            If .Cells(i, 1) = 0 Then
                .Cells(i, 1).Interior.Pattern = xlNone
            End If
        Next i
    End With
End Sub
Rechercher des sujets similaires à "copier nouvelle colonne vide valeur heure fin match"