Décomposer un score de Golf 18 trous Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'309
Appréciations reçues : 374
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 19 octobre 2018, 01:34

Bonjour,

un essai.
Le contrôle se fait à la validation de la saisie.
Il faut avoir "Hits" 1 ou 2 cellules à gauche pour que le contrôle plus affiné se fasse.
Si 9 scores corrects (uniquement chiffres et + acceptés) détectés ils s'inscrivent, sinon on vide les 9 cellules et : MsgBox "Hits non conformes"

Là j'ai fait pour ta feuille (2x9 trous). On peut envisager qu'il puisse également valider une chaine de 18 trous.
eric
E313-E40 31 mai HARAS.xlsm
(152.82 Kio) Téléchargé 10 fois
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
d
dumiche
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 15 octobre 2018
Version d'Excel : 2016

Message par dumiche » 19 octobre 2018, 16:38

eriiic a écrit :
19 octobre 2018, 01:34
Bonjour,

un essai.
Le contrôle se fait à la validation de la saisie.
Il faut avoir "Hits" 1 ou 2 cellules à gauche pour que le contrôle plus affiné se fasse.
Si 9 scores corrects (uniquement chiffres et + acceptés) détectés ils s'inscrivent, sinon on vide les 9 cellules et : MsgBox "Hits non conformes"

Là j'ai fait pour ta feuille (2x9 trous). On peut envisager qu'il puisse également valider une chaine de 18 trous.
eric
Merci déjà éric
L'objectif est effectivement de valider la saisie du résultat (18 entrées dans la chaine) mais surtout dans un premier temps de décomposer la chaine des 18 scores unitaires (à 1 ou 2 digits) rentrés dans une seule cellule, vers 18 cellules distinctes et juxtaposée à droite de la saisie. Cette chaine est composée de caractères numériques avec possibilité d'un "+" afin de signaler un score à 2 digits qui suit le signe, et un "/" qui lui laissera la cellule correspondante vide. Vraiment pas facile je pense dans excel
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'309
Appréciations reçues : 374
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 19 octobre 2018, 18:30

ok. Mais tout ça ne me dit pas ce que tu penses de ma proposition.

Et si tu voulais pour une chaine de 18 trous, pourquoi mettre un fichier avec 2x9 trous ?
Et met plutôt un fichier avec les différents cas rencontrés. Un avec 36 fois le même cas ne sert pas à grand chose.
Le "0" est-il un chiffre à refuser pour valider la saisie ou peut-il arriver ?
Quant au "/" ce n'était pas dans la question initiale, donc pas vu.
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
d
dumiche
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 15 octobre 2018
Version d'Excel : 2016

Message par dumiche » 21 octobre 2018, 09:56

eriiic a écrit :
19 octobre 2018, 18:30
ok. Mais tout ça ne me dit pas ce que tu penses de ma proposition.

Et si tu voulais pour une chaine de 18 trous, pourquoi mettre un fichier avec 2x9 trous ?
Et met plutôt un fichier avec les différents cas rencontrés. Un avec 36 fois le même cas ne sert pas à grand chose.
Le "0" est-il un chiffre à refuser pour valider la saisie ou peut-il arriver ?
Quant au "/" ce n'était pas dans la question initiale, donc pas vu.
Pour être très franc, je n'ai pas su faire fonctionner ton essai mais je suis persuadé que c'est parce que j'ai mal expliqué ma demande.
Voici donc un fichier nettement plus simplifié pour la saisie-décomposition, complètement nettoyé de l'ensemble des autres calculs de la compétition
Le but est donc de remplir la chaine de caractère de la colonne "saisie". Dès que cette chaine est suivie de "enter", l'ensemble de la chaine doit se décomposer automatiquement dans les 18 cases à droite de la saisie de la manière indiquée.
Un contrôle de validité de la saisie doit comme dans l'exemple colorer la saisie en vert si OK ou autre couleur si il y a eu une erreur tel que dans l'exemple.
Voilà, j'espère que mon explication est plus claire. Ces saisies peuvent atteindre pour certaines compétitions plus de 200, raison de la demande d'automatisation.
Merci pour ton aide.
exemple saisie.xlsx
(10.85 Kio) Téléchargé 6 fois
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'309
Appréciations reçues : 374
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 21 octobre 2018, 12:05

Bonjour,
Pour être très franc, je n'ai pas su faire fonctionner ton essai
Il suffisait de faire une saisie, mais encore faut-il que tu aies accepté les macros.

Comme dans ton nouveau fichier il n'y a plus de cellule repère "Hits" pour savoir s'il faut traiter ou non la saisie, il faut indiquer dans la macro la colonne à superviser
Ici la 2 (B) :
If Target.Column <> 2 Then Exit Sub
Mettre le code dans le module de la (les) feuille(s) à traiter.
Sans précision de ta part les saisies sont considérées faites une par une (pas de collé d'une série de résultats)
En cas de détection d'anomalie il t'est proposé de vider la plage réception. Tu peux supprimer ce message et, au choix, ne rien faire ou vider.

On pourrait faire une proc unique pour toutes les feuilles mais il faudrait que ce soit toujours la même colonne, ou bien que l'on puisse détecter la colonne ou les cellules à traiter.
eric
exemple saisie.xlsm
(17.99 Kio) Téléchargé 3 fois
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
d
dumiche
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 15 octobre 2018
Version d'Excel : 2016

Message par dumiche » 21 octobre 2018, 20:49

eriiic a écrit :
21 octobre 2018, 12:05
Bonjour,
Pour être très franc, je n'ai pas su faire fonctionner ton essai
Il suffisait de faire une saisie, mais encore faut-il que tu aies accepté les macros.

Comme dans ton nouveau fichier il n'y a plus de cellule repère "Hits" pour savoir s'il faut traiter ou non la saisie, il faut indiquer dans la macro la colonne à superviser
Ici la 2 (B) :
If Target.Column <> 2 Then Exit Sub
Mettre le code dans le module de la (les) feuille(s) à traiter.
Sans précision de ta part les saisies sont considérées faites une par une (pas de collé d'une série de résultats)
En cas de détection d'anomalie il t'est proposé de vider la plage réception. Tu peux supprimer ce message et, au choix, ne rien faire ou vider.

On pourrait faire une proc unique pour toutes les feuilles mais il faudrait que ce soit toujours la même colonne, ou bien que l'on puisse détecter la colonne ou les cellules à traiter.
eric
Magnifique, cela fonctionne super bien. EXTRA
Pour l'autre fichier j'avais vu que "Macro" était vide et donc pour moi pas d'obligation de Macro. Raison pour laquelle ca ne fonctionnait pas.
Sur le fichier exemple, tu as en + intégré le "/" c'est impecc.
Il faut vraiment que j’apprenne ce Visual Basic, ou au moins que j'essaie de comprendre ton programme car le but pour moi, sera de l'intégrer facilement dans plusieurs programmes différents.
Je ne connais les macro que par les enregistrement d'actions, et le Visual Basic absolument rien. Et donc ta phrase:
Mettre le code dans le module de la (les) feuille(s) à traiter.
Sans précision de ta part les saisies sont considérées faites une par une (pas de collé d'une série de résultats)
je ne comprend pas vraiment.
Si je peux te demander un pti truc en plus...
Les compétitions peuvent se jouer en 9 ou 18 trous (parfois même 15). Si tu pouvais intégrer une case ou l'on inscrit le nombre de trous joués pour la compet et y faire référence pour activer le pop up, ca serait vraiment complet.

NB: J'ai fait du Basic dans mon très jeune temps, et cela me tente vraiment d'étudier ce Visual Basic.
Un tout grand Merci à toi
d
dumiche
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 15 octobre 2018
Version d'Excel : 2016

Message par dumiche » 21 octobre 2018, 21:00

dumiche a écrit :
21 octobre 2018, 20:49
eriiic a écrit :
21 octobre 2018, 12:05
Bonjour,
Pour être très franc, je n'ai pas su faire fonctionner ton essai
Il suffisait de faire une saisie, mais encore faut-il que tu aies accepté les macros.

Comme dans ton nouveau fichier il n'y a plus de cellule repère "Hits" pour savoir s'il faut traiter ou non la saisie, il faut indiquer dans la macro la colonne à superviser
Ici la 2 (B) :
If Target.Column <> 2 Then Exit Sub
Mettre le code dans le module de la (les) feuille(s) à traiter.
Sans précision de ta part les saisies sont considérées faites une par une (pas de collé d'une série de résultats)
En cas de détection d'anomalie il t'est proposé de vider la plage réception. Tu peux supprimer ce message et, au choix, ne rien faire ou vider.

On pourrait faire une proc unique pour toutes les feuilles mais il faudrait que ce soit toujours la même colonne, ou bien que l'on puisse détecter la colonne ou les cellules à traiter.
eric
Magnifique, cela fonctionne super bien. EXTRA
Pour l'autre fichier j'avais vu que "Macro" était vide et donc pour moi pas d'obligation de Macro. Raison pour laquelle ca ne fonctionnait pas.
Sur le fichier exemple, tu as en + intégré le "/" c'est impecc.
Il faut vraiment que j’apprenne ce Visual Basic, ou au moins que j'essaie de comprendre ton programme car le but pour moi, sera de l'intégrer facilement dans plusieurs programmes différents.
Je ne connais les macro que par les enregistrement d'actions, et le Visual Basic absolument rien. Et donc ta phrase:
Mettre le code dans le module de la (les) feuille(s) à traiter.
Sans précision de ta part les saisies sont considérées faites une par une (pas de collé d'une série de résultats)
je ne comprend pas vraiment.
Si je peux te demander un pti truc en plus...
Les compétitions peuvent se jouer en 9 ou 18 trous (parfois même 15). Si tu pouvais intégrer une case ou l'on inscrit le nombre de trous joués pour la compet et y faire référence pour activer le pop up, ca serait vraiment complet.

NB: J'ai fait du Basic dans mon très jeune temps, et cela me tente vraiment d'étudier ce Visual Basic.
Un tout grand Merci à toi
J'abuse peut-être mais il subsiste pour moi un problème. Quand j'entre une chaine de 18 digits simples, Excel transforme mon nombre en nombre exponentiel et donc le MSG Box le refuse !!!!
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'309
Appréciations reçues : 374
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 21 octobre 2018, 23:28

Il faut vraiment que j’apprenne ce Visual Basic
tu as bien raison. C'est un excellent exercice pour entretenir les neurones ;-)
Tu as beaucoup de tutos sur le net pour les débutants, à commencer par le menu COURS VBA ici en haut.
Et surtout l''aide qui est très bien faite : F1 sur toutes fonctions, propriétés ou méthodes que tu ne connais pas doit être le premier réflexe.
Et bien la lire jusqu'en bas. C'est souvent ici, dans les Remarques, que tu trouves la petite particularité qui te bloquait.

Sans précision de ta part les saisies sont considérées faites une par une (pas de collé d'une série de résultats) je ne comprend pas vraiment.
Si tu peux être amené à coller plusieurs résultats d'un coup ça ne fonctionnera pas. Il faut le dire si ça peut arriver car il faut modifier le programme.

Si tu pouvais intégrer une case ou l'on inscrit le nombre de trous joués
nommer cette cellule nbTrous, comme ça tu peux la mettre où tu veux sur la feuille.
Si non trouvée (ou si >18), par défaut c'est 18 trous

Quand j'entre une chaine de 18 digits simples, Excel transforme mon nombre en nombre exponentiel et donc le MSG Box le refuse !!!!
C'est surtout parce que tu perds les 3 derniers chiffres, excel n'a que 15 chiffres significatifs.
Il faut mettre la colonne en format Texte.
eric
exemple saisie.xlsm
(20.55 Kio) Téléchargé 2 fois
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
d
dumiche
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 15 octobre 2018
Version d'Excel : 2016

Message par dumiche » 22 octobre 2018, 10:45

Un tout tout Grand Merci à toi.
Je profiterai des prochaines longues soirées d'hiver pour exciter mes neurones avec ce cours VBA repris sur le site.

Merci Eriiiic
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'309
Appréciations reçues : 374
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 22 octobre 2018, 13:39

Bonjour,

autre version, rendue un peu plus 'intelligente'.

Le principe est de détecter une saisie valide de type 9, 15 ou 18 trous.
Si ok, une boite de dialogue propose de coller le résultat à droite.

Moins : plus d'alerte sur une saisie de +/- x hits. C'est l'absence de la boite qui doit alerter (et rien de mis à droite, tu ne peux pas passer à coté...)
Plus : valable sur toutes les cellules de n'importe quelle feuille et plus besoin de spécifier le nombre de trous.
Tu peux donc saisir n'importe où sans préparation ni modification du code, juste penser à mettre les cellules en format texte.

Si tu es sûr qu'aucune saisie ne risque de générer un faux positif, on peut supprimer la boite de dialogue pour éviter la double validation.
On peut aussi sécuriser un peu plus en mettant un caractère comme * en début de saisie

Le code est maintenant dans le module ThisWorkbook
Voit la version qui te va le mieux.
eric
exemple saisie 1.1.xlsm
(22.15 Kio) Téléchargé 2 fois
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message