Un code VBA simple pour un débutant SVP

Résolu/Fermé
Vince#7 Messages postés 5 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 26 août 2011 - 14 août 2011 à 15:08
 Vince#7 - 31 août 2011 à 12:04
Bonjour,

Je crée actuellement une appli pour compter des points sur un match de badminton.
Je souhaite que lorsqu'un des joueurs atteint un score défini (en cellule A20), il y ait une msgbox qui m'annonce "Fin du match".
C'est apparamment simple mais je ne m'en sors pas.... help.

Merci


A voir également:

15 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 14/08/2011 à 23:01
Regarde quand même ce fichier, pour les codes on peut t'expliquer

https://www.cjoint.com/?AHowYhSlJv8

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
1
Bonjour,

Tu donnes trop peu d'éléments pour savoir ce que tu veux vraiment.

Mets un fichier exemple en ligne et on en reparle !

A+
0
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023
14 août 2011 à 18:59
Bonjour,
Je ne m'y connais pas beaucoup mais je viens de tester celle-ci qui fonctionne.
Dans cet exemple, tes valeurs sont en cellules A1 jusqu'à A5. A toi d'adapter selon l'emplacement de tes données. J'ai mis supérieur ou égal à 20 pour le cas où.
Merci de préciser si cela fonctionne pour toi.
Si quelqu'un a vu une erreur de ma part, merci de la corriger

Option Explicit

Sub Test()
Dim C As Range
For Each C In Range("A1:A5")
If C >= "20" Then
MsgBox "Fin du match !"
Exit For
End If
Next C
End Sub
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 14/08/2011 à 19:29
Bonjour,

Le problème, comme l'a soulevé sylvlau, c'est qu'on ne sait pas comment évolue sa cellule.
Une saisie ? Un résultat de formule ? Une autre macro ?

Hormis le fait qu'il faille lancer au coup par coup ta macro (un évènement Worksheet_Change est peut-être utilisable) son anomalie est que tu testes >="20".
Il faut tester une valeur numérique 20 et non un texte "20".
En effet "3">="20" est VRAI car le code du caractère "3" est supérieur au code du caractère "2", et risque de générer des erreurs car là tu comptes sur la conversion automatique d'un texte en numérique...

eric
0
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023
14 août 2011 à 20:42
Bonsoir,
A titre indicatif, j'ai mis celle-ci dans la feuille et retiré les guillemets sur le chiffre 20. En tout cas, ça fonctionne.
Est-ce correct ? (j'aime comprendre)
Merci
Evelyne

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
For Each C In Range("A1:A5")
If C >= 20 Then
MsgBox "Fin du match !"
Exit For
End If
Next C

End Sub
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
14 août 2011 à 21:28
C'est mieux, mais regarde la proposition de mike au post 6, c'est comme ça qu'il faut faire.
Ta boucle s'exécutera à chaque changement sur la feuille, celle de mike que si il y a un changement dans la plage à contrôler A2:A50
eric
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
14 août 2011 à 20:01
Salut le fil,

Pourquoi ne pas faire simple avec une mise en forme conditionnelle.
Feuil1 le principe et feuil2 un début de tableau

https://www.cjoint.com/?AHouaIYm7h7
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 14/08/2011 à 21:19
Re,

quelque soit ta saisie entre A1 et A5, si dans une cellule tu as 20 la msgbox s'affichera.
Avec le code ci dessus, la msgbox s'affichera uniquement lorsque tu saisiras 20 ou supérieur à 20 entre A2 et A50

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([A2:A50], Target) Is Nothing Then
If Target >= 20 Then
MsgBox "Fin du match !"
End If
End If
End Sub

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Vince#7 Messages postés 5 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 26 août 2011
14 août 2011 à 22:37
Waouw, je ne pensais pas avoir des réponses aussi promptes.
J'ai réussi à régler mon problème grâce à vos réponses.

J'ai récupéré le code d'Evedll (le plus compréhensible pour moi, dsl Mike) et j'ai même remplacé la valeur 20 avec
Worksheets("Accueil").Range("D21").Value
Cela me permet d'avoir la main sur mes nombres de points par matchs.

Merci à tous.
0
Vince#7 Messages postés 5 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 26 août 2011
14 août 2011 à 23:23
J'ai vu ton fichier Mike-31, il est carrément fort question msg box en fonction du score, j'aimerai bien maîtriser le VBA comme toi. Maintenant, c'est pour des cours d'EPS, je modifie les règles de score à mon gré pour le rendre compatible avec le temps que j'ai pour mes cours(tu peux avoir un aperçu sur le lien si tu veux).

D'ailleurs je me suis enflammé, si le code d'Evedll fonctionne effectivement pour mon premier match, il bloque par la suite car dès que je je change autre chose sur la feuille, le message apparait de nouveau.

J'envoie mon mon fichier pour une aide plus précise et plus précieuse.

https://www.cjoint.com/?0HoxrX7jJFi

Dans l'onglet accueil vous avez le nombre de points à atteindre dans la cellule D21
J'aimerai que dans l'onglet T4,dès que'une des cases blanches du "tableau des matchs" atteint ou dépasse le D21, il y ait ce fameux message "match terminé" et éventuellement le vainqueur, et que par la suite le message n'apparaisse qu'à la prochaine case remplissant la condition.
Là ça serait mortel.
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 15/08/2011 à 11:42
Re,

J'essaye de décortiquer ton fichier, des codes ne sont bien placés et je trouve des plages nommées comme classement, indicecontinuité etc... qui servent à quoi !
une multitude de code en doublon !

Une fois que j'aurai compris ton fichier ce que tu demande est simple à faire

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Vince#7 Messages postés 5 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 26 août 2011
16 août 2011 à 12:49
Bonjour Mike

Merci encore de t'intéresser à mes problèmes techniques

En fait ce fichier est destiné à être accessible à des élèves pdt en cours d'EPS.

Via une tablette ou un min PC, ils rentrent en direct les points de la rencontre en différenciant les points bonus des fautes directes et des autres points. Chaque "bouton image" est donc associé à une macro "ajouter 1" dans la case sur laquelle ils sont (d'où le nombre de macros redondantes : une macro=une case).
Pour ne pas m'y perdre, j'ai placé mes macros sur chacune des feuilles qui m'intéressait et non dans les modules. Il y a peut être des moyens plus simples, mais avec mes connaissances c'est la seule méthode que j'ai trouvée.

Il y aussi une macro gomme ou correction

Les macros "T4joueurs, T5joueurs et T6joueurs" permettent de masquer les onglets inutiles en fonction du nombre de joueurs impliqués dans le tournoi. Il me reste T5 et T6 à boucler d'ailleurs.

Enfin certains codes sont des essais non fructueux à effacer.

Pour les noms "classement, indicecontinuité, etc...", ils me permettent de donner une note (via une rechercheV) aux gamins directement à partir du type de points qu'ils marquent ou qu'ils perdent : un élèves qui marque beaucoup de points bonus par rapport au nombre de points qu'il joue aura une bonne note (9/9). Tout ça est regroupé dans l'onglet "statistiques".

Bref, à la fin de leur tournoi, il connaissent presque leur note et ceux sans même que je les ai vus si je veux....
Maintenant, il me manque des détails qu me permettrait de le guider précisément (par exemple, annoncer la fin du match lorsqu'un des joueurs a atteint le nombre de points escomptés ou établir automatiquement un classement sans modifier les données statistiques).

En espérant avoir été exhaustif...

A+
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
16 août 2011 à 19:08
bonjour Vince#7,

il connaissent presque leur note et ceux sans même que je les ai vus

Déjà un magnifique "ceux" qui éclaire bien l'enseignement moderne mais la phrase entière est un véritable "monument" : je ne peux pas comprendre comment un enseignant peut formuler une pareille énormité.

Laisser l'informatique noter alors que les élèves en ont pour quelques minutes pour modifier le code à leur guise, c'est vraiment de l'inconscience grave. ^-^

Désolé de mon intervention hors sujet "high-tech" mais cela m'est vraiment difficile de laisser passer.
0
Bonjour gbinforme,

Je suis agréablement surpris que mes posts soient autant lus...

En ce qui concerne ma "phrase monument", j'ai été très succint car ce n'est pas l'intérêt principal de ma question de départ. Maintenant je peux comprendre la façon dont tu l'as interprétée. Je vais donc prendre qques minutes pour t'expliquer ma démarche.

Je me pose depuis plusieurs années la problématique suivante :
comment faire pour "réguler" chacun des élèves (cad les guider en leur donnant des "feed-backs"positifs ou négatifs sur ce qu'ils font) de façon à ce qu'ils progressent tous dans le bon sens et ce, sachant qu'ils sont entre 28 et 30, que j'ai 55 minutes de cours effectif sans compter l'échauffement.
Autrement dit, lorsque je n'ai rien d'autres à gérer (blessure, tenue, chewing gum, loustics,...), j'ai environ 45 sec à 1 min par élèves et par cours. Clairement je suis contraint de laisser des gamins sur le carreau question régulation, alors je me concentre surtout sur les plus faibles. Les plus forts y trouvent parfois leur compte mais ils pourraient plus progresser s'ils avaient plus de régulation.

Ce programme permet donc d'avoir un retour sur leur prestation systématique et immédiat (à moi et à eux). La note étant ce qu'ils connaissent le plus, je me base dessus.
En gros ce programme permet de dire "quelle serait ta note si Mr Vince#7 te notait aujourd'hui", "quels sont tes points faibles, tes points forts", "sur quoi vas- tu te concentrer pour le prochain match, le prochain tournoi, le prochain entraînement".
La note finale c'est moi qui ait la main dessus, les élèves savent ce sur quoi je les notes, et en cas de doutes je peux me baser sur les "notes blanches" des cours précédents.

Je ne suis pas en train de créer un programme pour aller prendre un café le temps que mes élèves jouent ou pour laisser la machine noter à ma place, l'EPS reste une discipline à dominante humaine où la statistiques peut venir appuyer un jugement humain mais en aucun cas le remplacer.
J'espère ainsi te rassurer sur l' état de l'éducation moderne.

Pour le "ceux", c'est pour moi. Ca fait toujours 18/20... pas mal pour un prof de ballon qui surfe entre deux biberons et trois couches.

Bonne soirée
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
17 août 2011 à 22:15
Bonjour Vince#7,

Merci d'avoir pris le temps de répondre avec beaucoup d'argumentations et je ne doute pas du sérieux des profs EPS car je connais assez bien ce secteur.
Si j'ai voulu réagir c'est parce que ta phrase était un peu rapide et assez malheureuse et suggérait indubitablement une autre approche : c'est bien de l'avoir commentée ainsi car effectivement les forums sont lus et elle pouvait laisser une mauvaise impression.
Je te laisse avec Mike (que je salue) pour finaliser ton classeur avant la fin des vacances. ;-)
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 16/08/2011 à 13:45
Re,

J'avais compris ton fonctionnement que j'ai modifié pour l'alléger et à mes yeux plus simple. En attendant teste la feuille T4 Match 1 voir si le fichier correspond à tes attentes.
Pour paramétrer les matchs suivant ce sera rapide.

Je pense compléter ton fichier en le verrouillant avec un mot de passe de sorte à protéger les codes, qu'en penses-tu !

de même ne serait il pas judicieux d'ajouter sur la feuille un bouton pour réinitialiser la feuille protégé avec un mot de passe afin d'éviter un effacement accidentel !

https://www.cjoint.com/?AHqnOHRCLfm

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Bonsoir Mike,

Ce que tu me proposes est excellent ! De plus, tes idées améliorent mon programme de façon radicale!!!

J'ai eu du mal au départ à lancer le match 1 (le message match "terminé, modif impossible" apparaissait), puis j'ai compris qu'il suffisait d'effacer le terme "vainqueur" pour relancer.

Dis moi ce qu'il faut faire pour appliquer ces codes à tous le matchs, j'ai l'impression de t'avoir déjà pris beaucoup de temps.

Pour les codes à protéger, je suis partant pour l'effacement accidentel aussi.

Merci et bonne soirée.

Vince
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
18 août 2011 à 23:15
Re,

Pour ne pas trop te perturber, j'ai gardé le canevas de tes macros, 1code par bouton (j'aurais, préféré des CommandButton, mais bon)
j'ai écrit un petit code pour gérer les colonnes D, E et F, et un pour les colonnes H, I et J.
Ces codes sont appelés par les boutons respectifs aux colonnes. Il déprotègent les feuilles, prennent en compte l'attribution des points, donnent la position des concurrents (Avantage, Egalité ou Vainqueur)
Dés qu'un vainqueur est déclaré, la cellule active se positionne automatiquement sur le Match suivant et reprotège la feuille ce qui garanti la protection des formules et des scores. Le mot de passe provisoire est "open"
J'ai également ajouté un code pour réinitialiser les feuilles. Actuellement ce code efface les résultats sans précautions ce qui te permettra de tester facilement ton fichier. J'ajouterais une sécurité avec un mot de passe de sorte que tu sois seul à pouvoir user de cette commande.
Je m'absente jusqu'à mardi, profite en pour tester le fichier et relève tous disfonctionnement

https://www.cjoint.com/?AHsxppEDANM
0
Merci Mike, je serai moi aussi absent qque temps sans pouoir acceder a internet. Je te tiens au courant.
0
Bon je viens de tester le fichier.
Tout est comme je pouvais me l'imaginer, j'ai vu que tu avais aussi travaillé sur les autres onglets (T5 et T6), bref il me reste plus qu' à mettre en forme...
Et ok pour le mot de passe de réinitialisation mais après je te fous la paix, parce que t'en passe du temps pour ce fichier.
En plus, à partir de tes codes que j'ai bien décrypté, je peux travailler sur d'autres projets dorénavant, vraiment très cool.

A bientôt
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
25 août 2011 à 18:16
Re,

Je te complète le code dans la soirée et te l'annote pour faciliter le décorticage.
En fait je n'ai pas travaillé sur les trois onglets, j'ai travaillé sur l'onglet T6 qui était le plus complet il ne restait plus qu'à le dupliquer et effacer les lignes en trop sur T4 et T5 et contrôler les formules n'a pris que quelques minutes
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
26 août 2011 à 15:38
Re,

récupère ton fichier et teste le, le mot de passe pour réinitialiser les feuilles ainsi que pour les déprotéger et accèder au visual basic est open
je t'expliquerai plus tard comment les changer

https://www.cjoint.com/?AHApFSTiCDH

il est possible d'améliorer tes formules et éviter les message d'erreur lorsque les données sont égale à 0 sur la feuille statistique. Je regarde tout cela
0
Vince#7 Messages postés 5 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 26 août 2011
26 août 2011 à 22:12
Ok, Mike
Encore une amélioration top de top. Je pense avoir compris comment changer les mots de passes au niveau des codes.

Merci encore.

D'autre part, je cherche a mettre en place ce système sur des pc compacts. Ceci dit, connaitrais tu des logiciels sur tablettes ou pc pocket qui supportrait notre fichier (j'ai un pocket pc et un iphone, leurs app n'acceptent pas les macros)? Je regarde "plan maker" mais c'est un peu différent
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 27/08/2011 à 21:12
Re,

je regarde tes formules qui semble comporter des erreurs exemple sur la feuille STATISTIQUES en C3 tu as cette formule

=SOMME('T4'!D10;'T4'!D20;'T4'!D30;'T5'!D10;'T5'!D20;'T5'!D35;'T5'!D50;'T6'!D10;'T6'!D30;'T6'!D40;'T6'!D55;'T6'!D70)

formule qui additionne les cellules
D10, D20 et D30 de la feuille T4 mais il y as des scores en D10, D15, D20, D25, D30 ET D35
es ce normal !
idem pour les feuilles T5 et T6

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Oui c'est normal : chaque joueur a ses propres statistiques. Tu vois leur nom au dessus de chaque petit tableau.
En C3, tu as les points gagnants du joueur 1 (il s'appelle "f" ici), donc seuls les points gagnants qui le concernent sont comptabilisés (sur T4 il joue les matchs 1,3 et 5, pas les autres).
Et ceci sur les 3 tournois (T4, T5 et T6).
Tu as sur le tableau d'à coté les stats du joueur 2 et ainsi de suite...

De mon côté, je réfléchis à une "exportation" des statistiques sur un autre fichier : chacun des groupes de 4 5 ou 6 joueurs me font parvenir les résultats de leur tournoi, et j'appuie sur un bouton pour récolter leur résultats sur un fichier organisé sous forme de liste alphabétique (type cahier de note).

A+
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
30 août 2011 à 17:45
Re,

Ton fichier avec les formules de la feuille statistiques revues avec une gestion d'erreur dans les colonnes B, H et M

https://www.cjoint.com/?AHErTL9y1WY

En ce qui concerne les tablettes, elles possèdent encore des mémoires limitées ce qui restreint l'installation de logiciels. Par contre les PC Pocket tout dépend du modèle.

Pour ta dernière réflexion concernant la centralisation des données sur un fichier, c'est tout à fait possible, code complexe, j'ai déjà réalisé ce genre de procédure.

Tu reçois par mail ou sur un support magnétique genre clef USB les feuilles de match ou le dossier complet, tu clic sur un bouton et les données se copient sur le fichier centralisateur. Reste à étudier la structure de ce fichier

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Merci encore, je ne connaissais pas la formule "esterreur", je vais pouvoir la mettre en place sur pas mal de mes fichiers.
Pour les supports, j'attends la rentrée pour voir ce qu'on me propose...en attendant je ne parviens pas à trouver un programme capable de lire du vba sur du mobile.
Enfin en ce qui concerne le recueil de données,je pense simplement à une fonction copier coller (collage spécial valeurs) de l'onglet "récapitulatif" vers un dossier déjà nommé puis un tri par ordre alphabétique ensuite. Simple, voire simplet mais bon....

Merci et a +
0