Macro sur plusieurs feuillets d'un classeur

Bonjour a tous.

Je débute sur le VBA désolé si mon "problème" vous parait anodin.

J'ai créé un classeur pour nos compétitions sportive. il y a deux parties

1 première ( tableau simple ) qui reprend par catégorie d'age tous les participants (pupille, benjamin ..... Juniors garcons et filles) un feuillet par catégorie est crée.

A partir de cette première partie est créée la deuxième partie qui reprend l'activité pratiquée par chaque participant lors de la compétition (il y a 3 à 4 activités suivant les ages pour tout les participant) (un tableau par catégorie toujours, avec formule qui extrait les informations pour participer aux activités)

mon but est de créer une macro VBA pour cette deuxième partie avec 2 actions

1) copier/coller et 2) trier.

J'ai créer une macro pour ce faire, seulement elle ne fonctionne que sur le feuillet de base, et quand je passe au feuillet suivant seule la première action s'effectue (le copier/coller) mais pas le trie. Mes feuillet sont strictement identiques dans la configuration des différents tableaux. Seule le nom des feuillets changent puisqu'ils portent le nom de chaque catégorie.

Si vous pouviez m'apporter un élément de réponse car je ne comprends pas pourquoi (initialement je ne faisais en macro que du copié/collé et cela fonctionnait sur tout les feuillets) cela ne fonctionne pas avec le fait d'avoir ajouter le tri dans la macro. (j'ai supprimé la première macro (copier/coller) pour créer une macro (copier/coller/trier)

Désolé d'avoir été aussi long

Bonjour Daniel66250

Pour que nous puissions mieux vous répondre, pouvez-vous déposer votre fichier anonymisé ?

A+

Bonjour a tous,

j'envoie ici à tout hazard le fichier pour que vous puissiez vous faire une idée de ma demande qui ne doit pas etre trop compliqué pour les expert ici présent

Salut Daniel, JExcel,

Reprenons. Tu m'arrêtes si je n'ai rien compris!

Donc :
- tu as les feuilles de gauche (onglets multicolores) reprenant les participants et à droite (onglets jaunes) les différents combats auxquels ils participent.
Petite parenthèse, dans la feuille (jaune) 'BENJ F', dans le combat sans touche, la liste ne reprend pas tous les inscrits : la formule s'arrête à la ligne 43 de la feuille des participants 'BENJAMINS F' qui, elle, descend jusqu'à la ligne 48. Normal ou est-ce un accident de création du fichier-exemple ?

- tu veux copier ce dernier tableau, Combat sans touche, excepté 'Ceinture' et 'Naissance' et trier cette copie ?
Trier sur quels critères? 'Poules', apparemment puisque les participants ne le sont pas.
C'est uniquement ce dernier tableau (de chaque feuille jaune) qui doit être copié et trié ?

Bête question : pourquoi ne tries-tu pas directement le tableau des participants lors de l'encodage (Poules, Nom, Prénom) ?
Autre bête question : pas mes affaires me diras-tu mais, quel est l'intérêt de ce tableau copié/trié puisque, si tu tries dès le début, à l'encodage, tu l'aurais déjà tout fait à gauche dans tes feuilles jaunes?

Autre chose, j'imagine que le nombre de participants varie d'une année à l'autre. Tu t'amuses à redimensionner tous tes tableaux en feuilles jaunes chaque année en fonction de ce nombre?

À te lire.

A+

bonjour et merci d'avoir passé du temps sur ma question.

Il s'agit effectivement d'une erreur concernant le feuille benjf.

les tableaux des feuillets jaunes pour les activités sont tirés des feuilles multicolores donc des valeurs. Effectivement on pourrait faire le trie directement seulement la macro que je veux créer me permet en copier coller V (puis trier) par poule de remplir un autre classeur ou ce trouve les poules. Si je ne transforme pas le résultat obtenu dans un autre tableau en valeur reel (coller V) je ne recopierai que la formule. Concernant mon tableau des poules je n'ai besoin que de 3 éléments (nom du club nom et prénom du participant. la notion du numéro de poule me sert uniquement pour la sélection des 2, 3 ou 4 participants de ces poules.

pour faire suite à tes questions la colonne poule et rempli une fois tout les participants enregistrés. Le tri est fait à partir de cet élément en sélectionnant le nom du club, le nom et prénom du combattant.

J'ai limité à 40 le nombre de participant par catégorie ce qui un nombre sur notre département et pour notre club déjà important . Cela m’évite d'avoir à modifier mes tableaux tout les ans.

je crois avoir fait le tour

je reste à dispo pour être plus précis s'il le fallait.

merci encore

Salut Daniel,

pas bien compris pourquoi une macro ne copierait que des formules !!!
Je vais toujours faire ta copie triée. On verra après...

A+

Daniel,

bête question : est-il CERTAIN que TOUS tes tableaux ont TOUJOURS 40 lignes ?
Je vais évidemment mettre quelques calculs de sécurité mais, dans cette hypothèse, le dernier tableau (feuilles jaunes) commencerait systématiquement en ligne 145.

image

C'est ainsi, chaque année, sans exception ?

A+

Daniel,

tu peux m'expliquer ce que tu cherches à trier dans les feuilles jaunes dans POOMSE ?
Est-ce pareil ? Faire un 2e tableau avec les seuls participants à POOMSE et les trier ?

Sub ParticipantPomsee()
'
' ParticipantPomsee Macro
' tri les participant actif au pomsee
'
' Touche de raccourci du clavier: Ctrl+Shift+P
'
    Range("B99:D138").Select
    ActiveWindow.SmallScroll Down:=-18
    Selection.Copy
    Range("J99").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=0
    Application.CutCopyMode = False

A+

Daniel,

nouvelle bête question : par hasard, mais vraiment par hasard, il ne te faut pas ça pour chaque activité dans tes feuilles jaunes, à savoir une liste triée des participants réels à ces activités ?

A+

Daniel,

oui, je sais, bête question!

Pour chaque catégorie d'âge et chaque type de combat, n'as-tu finalement besoin que d'une liste triée des seuls participants réels pour chaque type de combat ?
Si je suis dans le vrai, nul besoin des feuilles jaunes qui ne sont qu'une répétition des feuilles multicolores d'inscription

Ces listes triées peuvent être directement créées dans ces mêmes feuilles multicolores, l'une à côté de l'autre ou l'une sous l'autre comme dans les feuilles jaunes, si tu préfères, selon les "X" encodés dans les colonnes 'Activités'... !!??

Je me trompe ?
Peux-tu définir EXACTEMENT TOUS tes besoins ?

A+

Bonjour je vais commencer par la fin de tes questions "le But" et l'acheminement du procéssus. ;)

1) je reçois de chaque club la liste des participants plus ou moins classée par ordre de catégorie.

2) je reporte ces listes dans le classeur Répartition catégorie activité donc par catégories d'age et de sexe (feuillets multicolores)

3) les feuillets jaunes me préparent les tableaux (d'activités poomse, bob, coup de pieds sauté, combat)

les tableaux poomse, bob et tuyo ap chagui sont donnes aux arbitres lors de la compétition.

Quand au tableau combat sans touche je fais un rapprochement age ceinture pour établir les poules.

ce tableau trié par poule me permet de remplir dans un autres classeur les feuilles de poules qui sont données aux arbitres lors de la compétition.

Suite,

A partir de la catégorie Benjamin fille et jusqu'au Juniors garçon les tableaux sont identiques à la ligne près.

les catégories babys et pupilles n'ont que trois activités (parcours, tuyo ap chagui et combat sans touche) il n'y que peu de baby max une dizaine et guère plus en pupille les tableaux sont donc moins important.

suite .......

je reviendrai surement pour le traitement des autres tableaux mais seulement après avoir mis au point cette macro pour les combats.

le soucis rencontré principalement se situe lorsqu'un participant ne fait pas une activité et suivant sont positionnement dans la liste de base cela me crée un blanc dans les tableaux d'activités concerné (principalement dans le tableau du Poomse).

Voilà le topo

remerciement pour la solution que tu proposes je la testerai demain et te reviendrai pour commenter

cordialement

Salut Daniel,

le code envoyé était le tien, ce n'est pas une solution !!!

Tu ne réponds quand même pas à la question de savoir si ces tableaux en feuilles jaunes ne pourraient pas être édités et triés par catégorie et combat directement dans les feuilles multicolores...
J'ai bien compris (enfin, je pense) que tu cherches surtout à obtenir (en feuilles jaunes) des tableaux reprenant les participants réels de chaque combat.
Chose qui peut se faire directement en feuilles multicolores!

A+

il faut dissocier les feuillets multicolores des feuillets jeunes. choses qu’apparemment tu ne saisies pas. encore une fois les feuillets multicolores servent a établir une liste par catégorie et a partir de cette liste je crée les tableau activités qui sont indispensable pour les arbitres de la compétition.

tu ne peux pas copier coller une cellule qui est une formule sinon tu copie la formule et pas la valeur demandée d'ou le fait que je copie colle V sur un tableau à coté de l'original (feuillet jaune) et donc a partir de ce copié collé V je veux trier ce tableau pour pouvoir le copier coller dans un autre classeur par Poules. J'ai fait une macro qui fonctionne mais uniquement sur un feuillet. Je souhaite le faire sur l'ensemble des feuillet jaune SAUF LES BABYS ET LES PUPILLES.

Voilà. Crois tu pouvoir répondre à cette question ?? pourquoi cela ne fonction que sur un feuillet alors que tout les feuillets sont identiques? pourquoi qu'une macro copier coller V fonctionne sur l'ensemble des feuillets et que dés que tu ajoutes à ta macro une fonction de trier cela ne fonctionne plus ??

voilà ma question j'essaye de faire évoluer ces tableaux en fonction des demandes qu'on m'adresse pour facilité le travail car j'ai d'autres club qui sont intéressé par mes tableaux.

Je fais cela bénévolement pour le sport sans aucun autre intérêt

merci encore pour le temps que tu passes

cordialement

Salut Daniel,

tu as raison, commençons déjà par ceci. On verra par la suite.
Avant d'oublier, dans 'CAD F', la colonne 'POULE N°' n'est pas à la même place que dans les autres feuilles !! À corriger !

Plus besoin de bouton pour ton copier/coller/tri.
Il te suffit de remplir la colonne 'POULE N°' et VBA fait le reste.
Attention, je n'ai mis aucune sécurité : je ne vérifie pas les dimensions de ton tableau (tu m'as dit qu'ils étaient tous à 40 lignes) ni si il y a des "trous" dans la liste.
Si nécessaire, j'ajouterai, évidemment

Le code est dans 'ThisWorkbook'.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
Dim tTab, iRow%, iCol%, sAdr$
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If Sh.Tab.Color = RGB(255, 255, 0) Then
    sAdr = Sh.Cells.Find(what:="POULE N°", lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Address
    If Target.Column = Range(sAdr).Column And Target.Row > Range(sAdr).Row Then
        iRow = Range(sAdr).Row + 1
        iCol = Range(sAdr).Column
        If Range("I" & iRow).Value = "" Then
            tTab = Range("B" & iRow - 2 & ":E" & iRow + 39).Value
            Range("B" & iRow - 2 & ":E" & iRow + 39).Copy Destination:=Range("I" & iRow - 2)
            Range("I" & iRow - 2).CurrentRegion.BorderAround LineStyle:=xlContinuous
            Range("I" & iRow - 2).Resize(42, 4).Value = tTab
        Else
            Target.Offset(0, 7) = Target
            Range("I" & iRow).Resize(40, 4).Sort _
                key1:=Range("L" & iRow), order1:=xlAscending, _
                key2:=Range("J" & iRow), order2:=xlAscending, _
                key3:=Range("K" & iRow), order1:=xlAscending, _
                Orientation:=xlTopToBottom, Header:=xlNo
        End If
    End If
End If
'
Application.EnableEvents = True
Application.ScreenUpdating = True
'
End Sub

A+

9daniel.zip (299.33 Ko)

Bonsoir, merci pour le fichier on est sur la bon voie mais reste un détail qui fait fait que c'est pas bon.

Premier soucis :

sur le fichier renvoyé il y a une mauvaise reprise du feuillet multicolore des benjF si tu regardes ce feuillet les participants sont
classés par ordre croissant mais sur le feuillet jaune cet ordre est corrompu . seulement sur ce feuillet les autres sont corrects.

Sinon pour la macro :

SI tu remplis la colonne poule de 1 a 10 4 fois tu t'aperçois que dans le nouveau tableau ça suit pas. c'est bien classé par poule de 4 participants

poule 1 4 participants poules 2 4 etc jusqu'à la poule 10. seulement ce ne sont pas les bons participants qui sont repris.

Je te joins le classeur de ce que j'obtiens quand j'entre les poules et tu verras à coté le rendu de la macro.

Il n'y a plus de logique des poules, les noms ne suivent pas.

Le tri fonctionne que pour la colonne poule apparemment.

sinon c'est top .

J'ai pas saisi par ailleurs cette histoire de récupération

du code je ne vois même pas ou le chercher si tu peux m'éclairer ??

A te lire Cordialement

Daniel

Bonsoir,

effectivement, grosse erreur de conception !!

            iTRow = Target.Row
            For x = iRow To 184
                If Range("B" & iTRow).Value = Range("I" & x) And Range("C" & iTRow).Value = Range("J" & x) And Range("D" & iTRow).Value = Range("K" & x) Then _
                    Range("L" & x).Value = Target: _
                    Exit For
            Next
            Range("I" & iRow).Resize(40, 4).Sort _
                key1:=Range("L" & iRow), order1:=xlAscending, _
                key2:=Range("J" & iRow), order2:=xlAscending, _
                key3:=Range("K" & iRow), order3:=xlAscending, _
                Orientation:=xlTopToBottom, Header:=xlNo

Le code est dans 'ThisWorkbook'.

image

Je te réserve une "petite" surprise...

A+

6daniel.zip (292.84 Ko)

Ça avance, ça avance!
La pluie a ça de positif qu'elle permet de passer son temps à autre chose que le jardinage!

image

A+

Rechercher des sujets similaires à "macro feuillets classeur"