Gros projet VBA pour un novice (boucle de création d'onglet)
Bonjour à tous
Je suis très novice en écriture de code VBA et je recherche de l'aide pour ce qui est à mon niveau un projet ambitieux :).
N'hésitez pas à me dire si j'en demande trop !
Voici donc mon projet :
J'ai une compétition (et plusieurs à l'avenir) par équipes à organiser dans l'univers des sports de combats.
Les équipes ainsi que les membres des équipes peuvent s'inscrire en ligne et j'ai ensuite accès à ce fichier contenant ce dont j'ai besoin.
En revanche j'aimerais automatiser la complétion des feuilles d'équipes selon un modèle bien défini.
Vous trouverez ci-dessous avec mes questionnements un fichier épuré de toute donnée compromettante d'un précédent évènement.
J'aimerais donc créer un code VBA que je lancerais à partir du fichier source et qui parviendrais pour les équipes Masculines à générer un modèle en fonction du nombre d'équipe (8 dans l'exemple) et à faire la même chose pour les équipes Féminines (2 dans l'exemple).
Pour chaque feuille par équipe, je souhaiterais qu'il arrive :
- à boucler sur les équipes (colonne D)
Pour chaque équipes masculines (colonne D = M) :
- à créer un nouvel onglet basé basé sur le format (dans l'exemple l'onglet "Feuille cible M")
- à mettre le nom d'équipe dans le champ prévue (surligné jaune)
- à boucler sur les combattants inscrit dans l'équipe et à renseigner dans l'onglet en cours les catégories en fonction du nombre de combattant dans chaque caté
(champs surligne Bleue et Violet dans l'onglet source et cible).
avec un petit cas particulier (surligné orange) à prendre en compte. A savoir que seul 2 combattant(e)(s) pourront être inscrit par caté, mais dans l'inscription en ligne c'est malgré tout possible (je n'y peux rien) et cela peut donc arriver. Je souhaiterais juste que les 2 premier(e)s combattant(e)(s) se retrouve dans l'onglet cible. Les 3ème (et plus si il y a) on ne les prendra pas en compte.
Pour chaque équipes féminines(colonne D = F) :
à faire la même chose que les masculins :)
J'espère avoir bien résumer ce à quoi je souhaite aboutir. Mon problème est que j'apprends bien plus vite avec des cas pratiques mais je sais pas si j'ai vu les yeux plus gros que le ventre en tentant cette expérience. Donc encore une fois si j'en demande beaucoup trop, hésitez pas à me rappeler à l'ordre.
Si toutefois ma demande est recevable je suis preneur de vos remarques, conseil et assistance.
Bonjour,
Essayez ceci, pour lancer la macro, cliquez sur le bouton "Création des feuilles par club et par genre" dans la feuille "Modèle".
Cdlt
Bonjour Arturo,
Un grand merci pour ton retour rapide et ton aide. J'arrive plutôt bien à relire et comprendre le code et voir ce que tu as fait et comment :)
Enfin plus au moins, je me sens pas capable de faire la même chose, mais soit sur que ça m'aidera beaucoup.
J'aurais si tu n'y vois pas d'inconvénient quelques petits "upgrades" à faire. Je me rends compte que j'ai oublié de préciser quelques petites choses qui aurait je pense rendu le code quasi utilisable en l'état :).
- Le modèle doit absolument rester le même avec le même nombre de ligne, même si certaines équipes se présentent sans combattant dans une caté.
Et la première caté n'a que 2 combattant possible la ou les 4 autres ont 2 inscrit et 2 ajout potentielle à ne pas prendre remplir avec la macro :)
Du coup, penses tu qu'il soit possible de : - Faire une invite de commande pour demander qu'elle seront les 5 catégories masculines, puis féminines à concourir sur l'événement.
(Les caté seront saisies par l'utilisateur dans l'ordre qu'il souhaite mais l'ordre qu'il aura choisi sera l'ordre d'affichage CAT1, 2, 3, 4, 5)
Faire apparaitre ces 5 caté dans les cellules Violettes fusionnées dans le nouveau format (si possible uniquement, je sais que les cellules fusionnés ça peut être relou à gérer). - Puis d'aller remplir les combattants dans leur caté respective comme tu l'a fait précédemment dans les cellules surlignés bleue.
- Les feuille d'équipes n'auront aucun remplissage à terme, en écrivant je me rends compte qu'on peut le laisser dans le modèle et ajouter dans ton code, de la ligne de code pour enlever tout remplissage juste avant de passer à la suivante et de le les laisser dans le modèle pour faciliter le code déjà existant ?
Je pense que c'est tout, j'espère n'avoir rien oublié d'autre d'important :)
Encore merci pour ton aide.
Zedd
Bonjour,
A part la fusion des cellules des catégories violettes, et le respect du modèle (suppression des 2 premières bandes vertes) pour le reste je n'ai rien compris.
Vous ne voulez plus l'extraction d'une feuille par club et par genre?
Donnez-moi quelques exemples de résultats attendus et je verrai ce que je peux faire.
Cdlt
Bonjour Arturo,
Merci pour ton retour, je te remet ci-dessous une reprise de ce que tu m'a renvoyé.
Vous ne voulez plus l'extraction d'une feuille par club et par genre?
--> Si c'est très bien comme ça
J'ai toutefois modifié le modèle pour éviter la dernière partie de code que tu avais écrite (que j'ai mis en commentaire au cas ou).
Et j'ai rajouté une petite partie pour la mise en forme finale.
J'ai fait quelques tests ça me va comme ça
Par rapport à ce que je n'ai pas réussi à bien expliquer à l'écrit et que tu n'a pas compris (et je comprends pourquoi), voici un exemple plus réduit d'échantillon avec ce que ressort de ton code et ce que je souhaite en résultat final.
En gros il y aura toujours 5 catégorie ("CAT") dans les événements. Et dans les feuilles à générer via ton code, je souhaiterais que même si on ne trouve pas de combattant dans une catégorie, il soit capable d'afficher dans l'ordre dans la cellule prévue les 5 catégorie de l'évènement pour les masculins et féminins (elle sont différentes).
Je pense qu'il faudrait donc qu'elle soit saisie au préalable par l'utilisateur non ?
Sauf si il y a moyen de ressortir sur l'ensemble du fichier de données, les 5 Catégories masculines et les 5 féminines.
Redis moi si j'ai toujours pas réussi à clarifier ma requête :).
Zedd
Bonjour,
Voici le fichier avec les modifications demandées.
Si cela correspond à vos attentes, pensez à passer le sujet en "résolu"
Cdlt
Bonjour Arturo,
Décidément je suis mauvais pour m'exprimer et pour te fourni un échantillon pertinent ...
En voilà un nouveau qui devrait mieux te faire comprendre pourquoi je suggérais une saisie utilisateur.
A voir si tu as une autre solution qui pourrait répondre aux contrainte suivante (que je peux difficilement faire apparaitre dans l'échantillon) :
J'aurais plusieurs manifestions (compétition) à organiser.
Pour chaque manifestations j'aurais normalement des équipes féminies et masculines.
Pour chaque manifestation j'aurais normalement maximum 5 catégories (de poids) masculines et 5 catégories (de poids) féminines différentes.
Mais ces catégories, d'une compétition à une autre pourront changer (en fonction de l'âge).
Il faudrait donc que je puisse générer les feuilles d'équipes pour une compétition à partir du modèle de données comme tu as réussi à faire jusque là (merci encore).
Mais que cela puisse se faire pour n'importe quel manifestation à l'avenir.
L'une des difficultés est donc d'identifier les 5 catégories de la manifestation en cours, uniquement à partir du fichier de données, car comme tu as put le voir certaines équipes n'ont pas de combattants dans toutes les catégories. De plus dans le fichier de donnée, tu pourras constaté que les catégories de poids sont classés par ordre décroissant pour les 4 premières et la cinquième qui est la valeur la plus haute.
Je te remet donc un échantillon d'une manifestation avec des exemples de caté de poids fictive (Colonne Q) mais qui sont dans ce format dans le fichier de donnée et dans cet ordre. J'ai également modifier les colonnes E des 5 feuilles générer par ta macro pour remplacer les anciennes valeurs par les catégories du fichier de donnée. (Une caté dans le fichier de donnée "-50", doit s'afficher dans la feuille d'équipe "-50 kg")
Cdlt, Zedd
Bonjour,
Comme vous présentez la chose, c'est incomplet, exemple: club 1, dans le fichier de données on voit 4 valeurs différentes alors que dans la feuille de restitution, on voit 5 valeurs , il a le -47 en plus. SI je n'ai pas une feuille qui affiche tous les barèmes de poids, car je suppose qu'il doit bien y avoir un barème, comment fais-je pour deviner qu'il faut y glisser ce -47 en 2ème position?
Il faut que je connaisse toutes les catégories de poids possibles, sinon je ne vois pas comment je vais pouvoir aborder le problème. il faudrait créer une feuille à part avec toutes les catégories possibles, quelque chose dans ce genre:
Cdlt
Bonjour Arturo,
J'ai pris un peu de temps pour regarder des événements par équipes précédents et il est compliqué de faire exactement ce que tu suggères car même si on a en effet des catégories de poids en fonction des âges qui sont officielles, il est possible malgré tout d'organiser des événements ou on ne va pas nécessairement utiliser toutes les catégories de poids existante (sur 10 à 12 catégories, en général on fait des équipes avec seulement 5 catégories, parfois 10), voir utiliser des catégories non officielles.
Je t'ai donc malgré tout créé un tableau et un nouveau modèle (qui revient finalement à celui que tu avais fait sur la v1...)
Ce tableau sera saisie par l'utilisateur qui aura l'usage de cet outil (moi dans un premier temps) :)
| nb_cat | Masculins | Féminins | Mixtes |
| 1 | -41 | -39 | |
| 2 | -47 | -46 | |
| 3 | -54 | -54 | |
| 4 | -62 | -60 | |
| 5 | 62 | 60 | |
| 6 | |||
| 7 | |||
| 8 | |||
| 9 | |||
| 10 |
J'ai ensuite créé un modèle par type de combattants : masculins, féminins, mixte (mixte étant optionnel, j'ai pas d'événement en visu de ce type pour le moment mais si on peut intégrer la possibilité je suis preneur).
Je pense qu'il serait plus simple ainsi. Les catégories de poids sont directement mis dans les modèles, via ce tableau qui sera saisie par l'utilisateur de cet outil.
Cela devrait faciliter (je pense) le code pour générer les feuilles et déplacer les noms des combattants dans leur feuille d'équipe et catégorie de poids respectives.
Cela te parait cohérent ?
A voir si cela est plus pertinent de conserver les 3 modèles, ou si tu parviens à partir du tableau à faire la même chose que tu avais fait en v1 en n'en conservant qu'un seul et à transposer en plus des noms des combattants, les catégories de poids. Mais si cela t'arrange de rester avec 3 modèles ça me convient très bien.
Zedd.
Bonjour,
Voici le nouveau fichier avec les améliorations demandées.
Comme il est impossible de se baser sur les catégories de poids, car variables, j'ai maintenu le principe d'origine avec les différentes catégories (Cat1, Cat 2 etc..).
et à la fin, je remplace les "Cat 1, Cat 2 etc" , par les valeurs de poids.
Principe d'utilisation:- En premier lieu, remplir le tableau de la feuille "Param_Compèt"
- Aller sur la feuille "Fichier de données", puis cliquer 1 seule fois et à tour de rôle sur chaque cellule en orange (ce qui correspond au premier participant de chaque club) de la colonne R, ceci ouvre un formulaire qui reprend les différentes catégories de la feuille "Param_Compèt". il faut cliquer sur le bouton situé au-dessus de la liste pour rapatrier les catégories sous la forme (Cat 1, Cat 2 etc...) dans la colonne "R" de la feuille ""Fichier de données". (attention, c'est très rapide, les catégories sont recopiées instantanément, on n'a pas le temps de voir le bouton si le bouton a été sélectionné, seul l'affichage dans la colonne R permet de voir que cela a été bien pris en compte)
- Puis revenir sur la feuille "Param_Compèt" pour lancer la macro de création de feuilles.
Cdlt
Merci Arturo,
Avec quelques ajustements (des petits détails), j'ai le résultat souhaité.
Un énorme merci pour ton aide.
Et désolé que ça ai nécessité autant de modifications.
Zedd