IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Onglet et affectation des données selon un tableau de correspondance


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    RETRAITE
    Inscrit en
    Août 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Août 2018
    Messages : 32
    Par défaut Onglet et affectation des données selon un tableau de correspondance
    Bonsoir Cher Forum,
    Cela dépasse complètement mes capacités à faire ce que je souhaiterai pour éviter de générer des tableaux à ne plus en finir dans le cadre de l’organisation d’un tournoi de tennis de table, si c’est possible évidemment.

    J’ai une feuille de calcul « POULE » qui contient le classement des joueurs 1,2 ou 3 ou on a affecté un code de sortie A1,A2,B1,B2 etc
    Seul les 2 premiers de poules pourront continuer la compétition, pour cela, ils doivent être ventilés dans l’un tableau soit T32, T16, T8 ou T4 en fonction de la feuille de calcul « Sortie de Poule ».

    Ainsi, je cherche une solution de manière à dupliquer le tableau soit T32, T16, T8 ou T4 , le renommé « T+SérieN°xxx » qui :
    - Affecte dans la colonne B du Tableau soit T32, T16 ou T8 ou T4 les lettres de sorties de poules
    - Affecte dans la colonne C du même Tableau selon les codes de sorties les noms & prenoms

    A titre d’exemple pour la série C0, j’ai 5 poules soit 10 joueurs qui continueront. Au regard, de la feuille de calcul sortie de poule :
    - il faudrait dupliquer la feuille de calcul T16
    - Renommée la feuille TS0
    -Affecté dans la colonne B de la feuille TS0 les codes
    -Affecté les noms & prénoms de la colonne A de la feuille de calcul « poule » en fonction des codes de sortie de la colonne C

    En espérant d’avoir été suffisamment clair. Vous trouverez en PJ un fichier reprenant les éléments.
    Merci de me faire savoir si c’est faisable et un énorme merci à ceux qui peuvent contribuer à mon projet associatif.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, en préambule, vous devriez consulter le lien ci-dessous, concernant les dossiers joints.
    https://www.developpez.net/forums/d8...s-discussions/
    Par ailleurs, j'ai ouvert votre dossier et j'avoue que celui-ci ne m'éclaire pas sur la finalité de vos souhaits.
    Je connais le système des poules etc, mais je ne vois pas bien l'automatisation que vous souhaitez avoir? Sauf erreur ou omission de ma part, les résultat devront obligatoirement être entrés de manière manuelle? Si la finalité est d'éviter ce travail fastidieux, je crains que vous ne puissiez pas vous en passer.
    Pour ce qui est du reste je pense que vous devriez revoir votre copie en créant une véritable architecture de données qui répondra de la manière la plus efficace à vos besoins. Pour se faciliter la vie, il est vital d'avoir les données des participants dans une base qui permettra déjà un accès rapide aux noms, le reste n'étant qu'une mise en forme suivant des critères, certains pouvant être automatisés mais d'autres non.
    Réfléchissez y un peu. Ce que vous souhaitez réclame beaucoup de travail. Le problème étant de savoir si au bout vous allez gagner du temps.
    Cordialement

  3. #3
    Futur Membre du Club Avatar de Desperados_78
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut
    Bonjour,

    Oui c'est possible. Voici un essai de ma part. J’espère que c'est ce que tu recherchais. Tu as un bouton Ventilation dans l'onglet "Poule" pour lancer la macro.
    A savoir que si tu créer une nouvelle poule il faudra l'ajoutée. Je pourrai t'expliquer comment faire.

    Cordialement,

    Pierre


    Le code correspondant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    Sub Ventilation()
     
    '*********Déclarations**********'
    Dim TAB_C0(), TAB_C1(), TAB_C10(), TAB_C14(), TAB_C15(), TAB_C3(), TAB_C5A(), TAB_C5C()
     
     
    '*********Capture des Tableaux de POULES**********'
    TAB_C0 = Range("Serie_C0").Value
    TAB_C1 = Range("Serie_C1").Value
    TAB_C10 = Range("Serie_C10").Value
    TAB_C14 = Range("Serie_C14").Value
    TAB_C15 = Range("Serie_C15").Value
    TAB_C3 = Range("Serie_C3").Value
    TAB_C5A = Range("Serie_C5A").Value
    TAB_C5C = Range("Serie_C5C").Value
     
     
    '**************Création du Tableau C0*************'
    Call Creation_Tableau(TAB_C0)
    '**************Création du Tableau C1*************'
    Call Creation_Tableau(TAB_C1)
    '**************Création du Tableau C10*************'
    Call Creation_Tableau(TAB_C10)
    '**************Création du Tableau C14*************'
    Call Creation_Tableau(TAB_C14)
    '**************Création du Tableau C15*************'
    Call Creation_Tableau(TAB_C15)
    '**************Création du Tableau C3*************'
    Call Creation_Tableau(TAB_C3)
    '**************Création du Tableau C5A*************'
    Call Creation_Tableau(TAB_C5A)
    '**************Création du Tableau C5C*************'
    Call Creation_Tableau(TAB_C5C)
     
     
    End Sub
     
    Function Creation_Tableau(TAB_TEMP)
     
    Dim TAB_Final()
     
    TAB_Final = Traitement(TAB_TEMP)
    T_Temp = Select_TXX(TAB_Final(1, 1))
     
    Nom_Feuille = T_Temp & " " & TAB_TEMP(1, 1)
     
    Application.DisplayAlerts = False
    If Sht(Nom_Feuille) = True Then Sheets(Nom_Feuille).Delete
    Application.DisplayAlerts = True
     
    Sheets(T_Temp).Copy After:=Sheets(T_Temp)
    ActiveSheet.Name = Nom_Feuille
     
    Call Create_Final(T_Temp, TAB_Final)
     
    End Function
     
     
     
    Function Create_Final(T_Temp, TAB_Final)
     
    Indice = 2
     
    Select Case T_Temp
     
        Case Is = "T32"
            For i = 2 To 64
                Range("B" & i) = TAB_Final(Indice, 1)
                Range("C" & i) = TAB_Final(Indice, 2)
                i = i + 1
                Indice = Indice + 1
            Next i
     
        Case Is = "T16"
     
            For i = 2 To 32
                Range("B" & i) = TAB_Final(Indice, 1)
                Range("C" & i) = TAB_Final(Indice, 2)
                i = i + 1
                Indice = Indice + 1
            Next i
     
        Case Is = "T8"
     
            For i = 2 To 16
                Range("B" & i) = TAB_Final(Indice, 1)
                Range("C" & i) = TAB_Final(Indice, 2)
                i = i + 1
                Indice = Indice + 1
            Next i
     
        Case Is = "T4"
     
            For i = 2 To 10
                If i = 6 Then i = 8
                Range("B" & i) = TAB_Final(Indice, 1)
                Range("C" & i) = TAB_Final(Indice, 2)
                i = i + 1
                Indice = Indice + 1
            Next i
    End Select
     
     
    End Function
     
    Function Traitement(TAB_TEMP)
        Dim DIC_C0
        Dim TAB_Sortie()
     
        Set DIC_C0 = CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(TAB_TEMP, 1)
            If TAB_TEMP(i, 2) = 1 Or TAB_TEMP(i, 2) = 2 Then DIC_C0.Add TAB_TEMP(i, 3), TAB_TEMP(i, 1)
        Next i
     
        TAB_Sortie = Range("Sortie_" & DIC_C0.Count).Value
     
        ReDim Preserve TAB_Sortie(1 To UBound(TAB_Sortie, 1), 1 To 2)
     
        For i = 2 To UBound(TAB_Sortie, 1)
            If DIC_C0.exists(TAB_Sortie(i, 1)) Then TAB_Sortie(i, 2) = DIC_C0(TAB_Sortie(i, 1))
        Next i
        Traitement = TAB_Sortie
    End Function
     
     
    Function Select_TXX(TEMP)
     
    Dim T_Temp As String
     
    Select Case TEMP
        Case Is > 16
                T_Temp = "T32"
        Case Is > 8
                T_Temp = "T16"
        Case Is > 4
                T_Temp = "T8"
        Case Else
                T_Temp = "T4"
    End Select
    Select_TXX = T_Temp
     
    End Function
     
    Function Sht(Name) As Boolean
        Dim s As Object
        On Error Resume Next
        Set s = Sheets(Name)
        If Err = 0 Then Sht = True
        Set s = Nothing
    End Function
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Homme Profil pro
    RETRAITE
    Inscrit en
    Août 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Août 2018
    Messages : 32
    Par défaut
    Bonjour Desperados,

    Un énorme merci, c'est tout à fait ce que je recherché à faire. J'aurai probablement des ajustements à faire en fonction de mes fichiers de poules que j'essaye d'automatiser aussi.

    Bien Cordialement

  5. #5
    Membre averti
    Homme Profil pro
    RETRAITE
    Inscrit en
    Août 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Août 2018
    Messages : 32
    Par défaut
    Bonjour
    Je cherche à confectionner automatiquement des poules à l’aide d’une liste de joueurs et de leur classement. J’y arrive en partie, sauf que je dois tenir compte de paramètres que je ne peux pas maîtriser.

    Dans la feuille Affect_poule

    A gauche, la liste des joueurs avec leur classement
    Dans la partie Centrale, les poules automatisées issues d’une proposition standard (avec des petites erreurs) certes :
    - La colonne J : Les numéros de poules
    - Les colonnes K,L et M les noms, prénoms et classement des joueurs

    A droite, les poules finales après modifications éventuelles.

    Je cherche un moyen à partir de la colonne N de changer la position du joueur (Exemple, l’enregistrement 5 de la partie centrale à l’affecter en 1er dans la partie de droite). Il ne s’agit pas d’échanger, mais de changer 1 ou plusieurs position selon un ordre voulu.


    Merci d’avance
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Homme Profil pro
    RETRAITE
    Inscrit en
    Août 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Août 2018
    Messages : 32
    Par défaut
    Bonjour Pierre,
    Je me permets de revenir vers vous sur ce sujet, car je viens de finaliser mon projet et j'ai apporté des modifications et je ne suis toujours pas en mesure de comprendre comment vous avez fait pour ventiler les joueurs.
    Aussi, je vous sollicite à nouveau pour adapter ce que vous avez fait sur mes nouveaux tableaux mieux adapter à mes besoins à titre de tests on prendra la série C07.
    Donc depuis la feuille pouleV2 (qui se renommera poule). Il y a un nombre max de joueurs qualifiés par série (zone blanche). La zone en pointillé il ne peut y avoir personne.
    Je cherche une solution de manière à dupliquer à l’aide de la feuille « Sortie de poule » le tableau soit TAB64, 32, 16, 8 ou 4 , le renommé « par le N°de serie » qui :
    - Affecte dans la colonne C du Tableau soit 64,32,16,8,ou 4 les lettres de sorties de poules
    - Affecte dans la colonne D du même Tableau selon les codes de sorties les noms & prenoms

    Un bouton par série est plus adapté à mon besoin.

    Merci d'avance
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2014, 10h34
  2. [XL-2010] extraire des données d'un tableau vers différents onglets selon la valeur d'une cellule
    Par piloupilou82 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 17/11/2013, 17h38
  3. Affecter des données d'un tableau à un graphique
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/08/2013, 11h38
  4. Réponses: 1
    Dernier message: 23/03/2013, 08h51
  5. Réponses: 6
    Dernier message: 20/10/2009, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo