Aide à la programation d'un formulaire
Bonjour à tous,
Je débute totalement dans le VBA et voilà ce que j'ai commencé à coder, je met le fichier en pièce jointe.
C'est un fichier de saisie de résultat pour des compétitions de gymnastique ; j'ai pas mal avancé (bouton de la macro de saisie sur le premier onglet) mais je bloque sur des fonctions plus avancées pour moi...
1 - Je n'arrive pas à faire en sorte que les nombres saisis soient considérés comme tel (j'ai l'impression qu'ils sont considéré comme du texte), déclenchant la mise en forme conditionnel (couleur rouge : dans le cas ou le nombre est supérieur à 10, alors qu'ils ne le sont pas)
Voir exemple des valeurs saisies dans l'onglet "100CSM"
2 - Lorsque je fais un choix d'agrès avec la combobox "CHOIXAGRES" seul le choix "SAUT" fonctionne pour les autres rien ne se passe après validation de la case "Modifier"..., et même pire si les valeurs des colonnes correspondant au SAUT étaient déjà saisies elles s’effacent.
3 - J'aimerai lors d'une saisi d'une note que le formulaire m'affiche un message d'alerte si pour ce Numero de Gym des valeurs ont déjà été saisis (il arrivent parfois que par erreur des juges ou des coachs des doublons apparaissent)
Je suis disponible pour donner d'autre précision, car c'est pas évident quand on débute.
Merci d'avance pour votre indulgence et votre aide ;)
Amicalement,
Sylvain
Bonjour Sylcsm et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Merci de votre participation
Cordialement
Bonjour,
Effectivement les TextBox comme leur nom l'indique renvoient des String
Donc il faut convertir tes String en valeur de la manière suivante
Cells(No_ligne, 6) = Val(TextBox4) Attention : Ddans le cas de cette ligne TextBox4 devrait renvoyer à la colonne 5 !...
Attention Dans le Textbox utiliser le point décimal et non la virgule...
A+
Bonjour,
Merci beaucoup @Galopin01 cela fonctionne parfaitement.
J'ai aussi corrigé le problème numéro 2, c'était moi qui avait mail codé entre les numéro des textbox et les numéro des colonnes.
Il ne me reste plus que le problème numéro 3.
Mais déjà çà avance super bien.
Encore merci.
Sylvain
Fournir le fichier corrigé...sur mon fichier, j'ai l'impression que ça marche sauf qu'il est pas corrigé mébon...
Il reste que cette programmation est un peu "cahotique" mébon... là encore si on n'est pas trop exigeant on pourrait s'en contenter.
A+
Pour moi ça marche, tu n'as rien corrigé du tout donc c'est toujours décallé d'une colonne, mais ça change bien de spécialité et de club.
Après c'est toujours aussi cahotique, mébon...
Je vais voir si je peux te proposer autre chose mais je voudrais d'abord savoir si tel quel le classeur est complet ou si tu as déjà travaillé avec
+ de club
+ de catégories (benjamin, minimes...)
+ de spécialites(massues, ruban, balle...)
+ d'autres choses (quoi ?)
Si oui me fournir un fichier + complet, parce que je ne veux pas travailler pour rien, si je dois recommencer à chaque fois... Autant faire les choses bien dès le départ.
A+
Je penses que je t'avais pas fourni le fichier modifié... désolé. J'ai fait d'autres modifications entre temps :
- le fait que si la colonne E3 est vide rien ne s'inscrive dans la colonne correspondante (il arrive qu'il n'y ai que 2 juges). E1; E2; E3 correspondant à des jurys.
- J'ai rajouté la formation physique pour compléter la colonne AK
J'ai testé, tout fonctionne entre choix club, choix agrès et numéro de gym les données s'inscrivent dans les bonnes colonnes.
Par contre il est surement évident que la syntaxe du programme soit très chaotique... je n'ai aucune base.
Sinon au niveau des combobox on est au complet (Clubs, Spécialités, Numérogym) pour l'instant. Si on doit ajouter des numéros de gym en cours d'année suite nouvelle licence dans un club ; peut-on faire en sorte que la liste NUMEROGYM s'allongent automatiquement ? et dans ce cas peut-on le faire pour la liste LISTCLUB et LISTAGRES aussi ?
Pour ce qui est des catégories, on a un fichier par catégories, donc pas de gestion de catégorie dans le fichier. Mon idée était de transposer le formulaire d'un fichier à l'autre une fois celui-là fini.
Ce fichier à déjà servi lors de compétition mais sans formulaire, on fait la saisi directement dans le tableau. Il est traité par la suite par un autre programme pour éditer les résultats en fonction des règlements des compétitions (en C++, ce n'est pas moi qui gère cette partie)
Je n'arrive pas par contre à empêcher la saisie d'une ligne si elle est déjà rempli, afin de traiter les doublons liés à :
- le juge à mal écris le numéro de gym sur son ticket de note (alors que ce numéro à déjà effectué le même agrès)
- le coach s'est trompé de numéro en l’annonçant aux juges
- Le secrétariat s'est trompé de choix de numerogym
Dans le cas d'une entrée déjà saisie il faudrait un popup d'alerte pour que le secrétariat de compétition enquête auprès des juges.
Merci d'avance pour ton aide précieuse
A+
Sylvain
Bonjour,
Compte tenu du formulaire actuel... C'est pas simple : J'y travaille ! Waiting...
Peut-être que quelqu'un aura une idée rapide à mettre en oeuvre, mais comme ça à première vue j'y crois pas...
Voir également me MP (Messages privés en haut à droite de cette page.)
A+
Comme suite à notre discussion je te mets l'état de la réflexion sur ton classeur.
Cela résoud les problèmes de modification et mise à jour, mais comme je t'ai dit, c'est toujours un peu capillo-tracté...
Néanmoins on peut certainement faire une saisie commode dans ces conditions :
Saisie du club
Saisie du N° G
Saisie de l'agrès
Le programme affiche ce qu'il trouve pour cette ligne et cet agrès (donc plus possible d'ignorer qu'on a déjà saisie quelque chose) néanmoins il reste possible de modifier cette saisie ou de sortir (annuler)
Pour l'instant tu ne peux tester que sur CSM et le 104 ou sur ESEL et 304 (ce sont les seuls ou il y a des données...) Mais bien sur on peut saisir directement sur d'autres lignes avec d'autres critères...
Il reste que j'ai fait le ménage... Tous les noms peuvent être supprimés sauf ceux qui figurent dans des formules. Seuls ceux que j'ai créé (TAgr et TClub) sont indispensable à VBA.
TBD est juste une ébauche de réflexion prospective...
Tous les contrôles ont été également renommés selon une pratique usuelle...
Pour l'instant le contrôle de saisie obligatoire est minimaliste mais efficace...
A+
EDIT : Fichier modifié : (pour améliorer la saisie obligatoire...)
Bonjour,
Merci beaucoup pour cet upgrade, il va falloir que je me penche sérieusement dessus pour comprendre tout ce que tu as fait :)
Par contre effectivement le fait d'afficher ce qui est déjà saisie est une bonne solution pour éviter les doublons.
J'aurais une ou deux remarques pour finaliser :
- Peut-on empêcher d'inscrire 0.00 si rien n'est saisi dans E3, souvent nous n'avons pas de 3ème Jury ; et si 0.00 est inscrit cela change la moyenne.
- Lors du clic sur le bouton confirmé, peut-on tout effacer sauf le club et l'agrès car souvent la personne qui saisi, enchaîne plusieurs ticket de note d'un même club au même agrès. Afin d'optimiser la vitesse de saisie.
- Peut-on créer un 5ème agrès Form Phys car si l'on veut saisir une note dans Form Phys il faut choisir un agrès et ce n'est pas logique de le saisir dans saut, barres, poutre ou sol.
Merci encore.
A+
Sylvain
Pour la première question modifier la ligne concernée dans WriteRecord :
Ws.Cells(iR, 37).Value = IIf(tb6 = "", "", Val(.tb6))Pour les 2 autres questions c'est beaucoup plus compliqué car ni le UserForm, ni les feuilles ne sont conçues pour ça.
Mon travail n'est qu'un rafistolage "pour dépanner" à partir de l'existant, mais tant qu'on sera tributaire des 3 combos : "J'y vois pas Bô !"
Dans le fichier que je suis en train de préparer (avec une BD) il y aura juste à rentrer le N° de dossard dans un Textbox, pas de problème le club s'affichera d'office, et l'agrès devra être changé "sur demande, pas de RAZ nécessaire. Mais pour l'instant je suis sceptique : Je vais y réfléchir.
A+
Bon finalement j'ai rebricolé ça un chouïa : Ça devrait le faire !
Bon je suis pas exempt d'avoir laissé traîner un bug par ci par là, mébon... il faut bien que je te laisse quelque chose à faire !
A+
EDIT : Pour des feuilles comme ça YAPA besoin de formule pour les totaux : Ça ne te couterait pas plus cher de faire les calculs avec VBA et d'afficher le résultat directement "en dur". Et surtout débarrassé de toutes ces formules ton classeur serait surement plus véloce... :
De plus certaines formules de somme sont fausses, font référence à des lignes ou cellules erronées... Il n'y a vraiment aucune raison qu'il y ait la moindre formule sur ces feuilles ! Si tu devais faire des sommes ou des moyennes sur plusieurs lignes, à la rigueur on pourrait comprendre que tu sous-traite les calculs à des formules Excel mais pour des sommes et des moyennes en ligne, là c'est vraiment pas top !
Salut,
Merci énormément. çà à une autre gueule que ce que j'avais fait à la base.
Je commence à comprendre petit à petit le code. J'ai fait une ou deux modifs légère. Et je suis en train de le faire tester par un autre bénévole du secrétariat.
Pour les formules je vais y réfléchir du coup, je prend note de ton conseil.
A+
Sylvain
Cette version apporte quelques modifications d'ergonomie + correction d'un bug sur F. PHYSIQUE.
Eventuellement pout WriteRecord si les 2 premières notes peuvent être absente stu devras modifier avec une formule du type utilisé pour tb5 et tb6.
A+
Salut Galopin 01,
J'ai fait pas mal de modification, j'espère ne pas avoir trop pourri le code tu me diras ;)
J'ai trouvé ce code sur le net, penses tu que je peux l'adapter pour le cboNog ?
A+
Sylvain
Annule et remplace, j'avais oublié de mettre à jour pour la saisie des caractère numériques, j'ai d'ailleurs utilisé ton code, mais est-il possible de regrouper pour pas le saisir 22 fois ?
A+
Sylvain