VBA oplossing hoeveel keer er tegen elkaar is gespeeld

Rietv

Gebruiker
Lid geworden
22 nov 2020
Berichten
49
Beste mensen,

Ik ben bezig met een programma voor onze biljartvereniging.
Deze moet bijhouden hoe vaak er tegen elkaar gespeeld is.
Nu ben ik best wel ver, maar loop toch tegen wat aan wat ik niet opgelost krijg.

Ik zou namelijk graag willen dat als speler A tegen speler B speelt hij bij speler A en Speler B het aantal tegen elkaar gespeelde wedstrijden ophoogt met 1 wedstrijd.
En dat dat alleen pas gebeurt als je het programma afsluit.
Het liefst dat het ook niet mogelijk is om met het kruisje af te sluiten zodat alle gespeelde wedstrijden daadwerkelijk eerst worden opgeslagen.
En dat dan de cellen (bij het afsluiten) van de spelers (W8-18) en (AD 8- AD18) op het blad "RND" worden leeg gemaakt voor de volgende keer.

Hopelijk is het e.e.a duidelijk en heeft iemand zin en tijd om er eens naar te kijken en heeft hij/zij voor ons de oplossing.
Allerbelangrijkste is voor ons het aantal tegen elkaar gespeelde wedstrijden

In ieder geval vast bedankt,
En in de bijlage een vereenvoudigde versie van het programma
Gr Cor
 

Bijlagen

  • Voorbeeld002.xlsx
    153,5 KB · Weergaven: 9
zoiets ????
 

Bijlagen

  • Voorbeeld002.xlsb
    83,6 KB · Weergaven: 6
Beste Cow,

Is zeker de richting op wat ik voor ogen heb.
Alleen als ik nu afsluit zonder op te slaan. (krijg natuurlijk netjes de waarschuwingen)
Krijg ik een volledig blanco scherm.
Ik kan deze alleen afsluiten via taakbeheer.
En.... ik zou graag willen dat niet op het blad tellers de wedstrijden worden opgeteld maar echt op elk tabbald van de spelers.
Dus op sp-1, sp-2 etc.

Gr Cor
 
Krijg ik een volledig blanco scherm.
Tja, er wordt afgesloten (en opgeslagen) zonder de telling te doen, dus mag er dan niet afgesloten worden ???
En tig keer tellen in tig werkbladen, dat is vragen om problemen, dus heb ik "Tellers" behouden en in die tabbladen er tig cameras bij gezet
 

Bijlagen

  • Voorbeeld002.xlsb
    120,7 KB · Weergaven: 1
Zo te zien werk je liever met papier dan met Excel.
Verwijder alle samengevoegde cellen
Voer alle gegevens in in 1 dynamische tabel.
Hooguit 1 ander werkblad voor overzichten en analyses.
Hoe eenvoudiger de struktuur des te minder VBA-code je nodig hebt.
 
Hoi Cow,

Ik denk dat het met een kleine aanpassing best wel gaat werken en makkelijker kan.
Daarvoor zou dan wel achter elke speler het ID nummer van de partij moeten staan.
(Ik zou daar bijvoorbeeld ook 1 grote lange lijst met een kolom SPELER en een kolom IDPARTIJ
voor kunnen maken waar die gegevens uit gehaald kunnen worden.)

Dan kan ik eigenlijk alle tabbladen van de spelers verwijderen en alleen jouw gemaakte lijst gebruiken.
Dus dan heb je veel minder rekenwerk.
Want, daaruit kan ik gewoon met o.a vert zoeken datgene er uithalen wat ik wil weten.

Overigens, het fijnste zou zijn dat er een "afsluitknop" op het tabblad [RND] staat die eerst alle partijen optelt en dan het bestand opslaat en afsluit.
En dat het gewoon niet mogelijk is om dat op een andere manier te doen.
Voorkomt denk ik veel problemen bij de vrijwilligers die dit programma gaan gebruiken.


Enfin, ik ben nu al vreselijk blij met de hulp.
Leer er weer een "klein" stukje bij.
Hopelijk heb je nog even tijd en zin om te kijken of je dit kan verwezenlijken.

Gr CR
 
Beste SNB,

Jazeker ik zou absoluut makkelijker willen werken met een dynamische tabel.
En ja hoe minder overbodige gegevens hoe beter.
Dat realiseer ik mij, maar en helaas ontbreekt het mij aan voldoende kennis om dit op te lossen.

En daarnaast willen ze op de club er natuurlijk gisteren al mee werken.
Kortom men komt binnen en wil dan weten tegen wie ze een potje kunnen spelen voor de onderlinge competitie.
En hoeveel potjes ze al tegen elkaar gespeeld hebben in de drie verschillende disciplines.
(Wordt van te voren afgesproken hoeveel keer ze tegen elkaar mogen spelen.)

Vandaar mijn help verzoek op dit forum.

Dus als je voor mij een voorbeeld hebt gebaseerd op hierboven.
En hoe ik dit structureel zou moeten oplossen en zou moeten aanpakken dan heel erg graag.
Dan ga ik daar ook met veel enthousiasme mee aan de slag, want ik leer er graag weer wat bij.
Maar, en dat is ook heel eerlijk, ik ben maar een beginnend amateurtje op het gebied van VBA.

Kortom, alle hulp is meer dan welkom en stel ik zeker bijzonder op prijs.
En... want vragen kan geen kwaad.
Geef je toevallig ook privéles, want dan zou ik het ook graag willen horen.

Gr Cor
 
een competitie opzetten is eigenlijk gebruik maken van de tabel van Berger, waarbij men dan probeert de thuis- en uitmatchen (voetbal, etc) of wit-zwart (schaak) netjes verdeeld, dus hier bij biljart zal dat waarschijnlijk diegene zijn die mag starten.
Met de knop "loting" in tabblad "Spelers" wordt een competitie geloot, bij N spelers zijn dat (in de heenronde) dan maximaal N-1 rondes waarbij er niemand 2 maal tegen de zelfde speler uitkomt. Is het aantal spelers oneven, dan wordt er een "bye" toegevoegd.
Hier wil je maar 4 rondes spelen, dus dan zijn de rondes vanaf 5 overbodig.
Nu hoef je niet meer te tellen, dus dat probleem is opgelost.
Dit werkt (voorlopig) tot 32 spelers.
 

Bijlagen

  • Table de Berger V3-1.xlsm
    85,2 KB · Weergaven: 5
Laatst bewerkt:
Beste Cow,

Helaas is dit niet wat ik zoek en ook niet toepasbaar.
Hetgene wat je eerst hebt gemaakt was al behoorlijk in de richting.
Het enige wat daar aan ontbreekt is eigenlijk wat ik al schreef in het vorige bericht naar jou.
Als je dat voor elkaar zou kunnen krijgen, maak je mij een gelukkig man en zijn zeker de leden je dankbaar.

Hopelijk heb je er tijd en zin in.

Gr Cor
 
Kijk eens naar dit bestand (ooit gemaakt voor iemand).
Alle uitslagen worden weggeschreven naar die personen die tegen elkaar uitkwamen.
Je kan dus bijvoorbeeld zien dat op tabblad Henk, Henk tegen Gerrit heeft gespeeld en vice versa.
 

Bijlagen

  • Biljarten.xls
    72 KB · Weergaven: 6
Wat moet jij eigenlijk doen eens je je 8 personen hebt ? Je zit toch op die andere bladzijden te zoeken zodat iedereen slechts 1 keer tegen elkaar speelt of niet ? In mijn laatste versie geef ik je 4 goeie combinaties.
Of wat doe je eigenlijk handmatig nog met je lijstje van 8 man om tot een werkbare oplossing voor je leden te komen ?
 
Beste Allen,

Allereerst iedereen bedankt voor het mee willen helpen aan een oplossing voor mijn probleem.
Wellicht is er voor de niet biljarters enige onduidelijkheid wat wij voor ogen hebben.
Vandaar even een uitleg over hoe het nu gebeurt en hoe men het wenst/wil.

Men geeft aan dat hij/zij komt spelen. (via de app)
Hij/zij wil dan 1 of 2 partijen spelen. (Kan in 2 verschillende disciplines.)
Als iedereen aanwezig is om een bepaalde tijd.
Moet er op dat moment een lijst gemaakt worden uit de aanwezige spelers om elkaars tegenstander te bepalen.
Criteria is dan dat deze tegenstander minder dan 4 partijen tegen de speler heeft gespeeld.

Kortom, vandaar dat de gespeelde partijen tegen elkaar moeten worden geteld.
Zodat je vanuit daar kan bepalen of deze speler al tegen de andere speler heeft gespeeld en hoeveel keer.

Bijhouden van standen e.a is niet nodig.
Alleen het aantal gespeelde wedstrijden tegen elkaar is belangrijk.
Er moet alleen een speelschema (a la minute) gemaakt worden voor de spelers die die avond aanwezig zijn.
Dat kunnen er maximaal 36 zijn en het zijn ook niet altijd dezelfde personen per avond/middag.

Hopelijk is dit veel duidelijker voor jullie.
En zie ik graag jullie berichten.

Groet CR

PS

@HSV - Prima prog maar helaas niet geschikt voor ons doel.
 
Voor je de 1e speler kiest bij een nieuwe start, klik je toch nog even op die oranje knop "wegschrijven en leegmaken", dan worden eventuele onbestaande spelercombinaties (met aantal dus gelijk aan nul) aangemaakt.
Verder werkt het verder zoals je gewoon bent.
Als je helemaal klaar bent, dan klik je zelf nogmaals op die oranje knop en worden de tellers geupdatet en de kolommen W & AD leeggemaakt.
 

Bijlagen

  • Voorbeeld002.xlsb
    139 KB · Weergaven: 4
Ha die Cow18,

Thanks wederom voor je input.
En we waarderen natuurlijk ieders tijd om tot een oplossing te komen.
Maar de huidige wijze van optellen is niet helemaal wat wij voor ogen hebben.
Wij willen namelijk graag dat per speler (dus op de bladen SP-01 etc) er staat hoeveel keer hij tegen een andere speler heeft gespeeld.
Vandaar dat ik vroeg of het mogelijk was/is om ook de ID nummers van de partijen er in te verwerken in jou [tellen] blad.
Zodat je daar op kan zoeken en die dus kan gebruiken om het e.e.a te vullen met gegevens.
Natuurlijk en vanzelfsprekend als het makkelijker kan en structureler heel graag.

Want, zodra het libre gedeelte werkt wil ik het allemaal kopiëren voor het BANDSTOTEN en DRIEBANDEN.
Dus dan komt er bij elke speler kolommen bij voor het bandstoten en driebanden.
Waarbij wij dan verwijzen naar respectievelijk de cellen W22 - W31 & AD22 - AD31 en voor het driebanden de cellen W35 - W44 & AD35 - AD44.

En, ook zodat wij ook e.v.t partijen eruit kunnen halen.
Want het komt ook voor dat halverwege er plotseling iemand uitvalt.

Gr CR
 
bon,
in tabblad "tellen" kies je in B1 een speler en eventueel een onderdeel (bandstoot, drieband, libre) en je krijgt die tabel eronder met in aflopende volgorde, de spelers en in het saldo hun aantal nog te spelen wedstrijden. In grijs staat louter informatief hoeveel wedstrijden van ieder onderdeel er al gespeeld werden.
Zo vermoed ik dat je voor iedere speler te werk wil gaan, maar het is toch handiger om dat in 1 algemeen blad te doen dan in tig van die hulpbladen.
Vervolgens vul je vermoedelijk de kolommen W en AD van RND in.
Vermoedelijk ben je daar op een gegeven moment mee klaar (en heeft iedereen dus die wedstrijden afgewerkt en niet ergens halfweg gestopt). Dan klik je op 1 van die 2 groene knoppen (in RND of Tellers) "wegschrijven en leegmaken". De achterliggende macro zal de 2 spelers nu wegschrijven naar de tabel in kolommen AA:AE van Tellen, zo weet je de wedstrijden per koppel en per onderdeel met een tijdstip waarop die gespeeld werd (moment van kopieren van de macro). Die gegevens updaten de draaitabel ernaast (kolommen J:L en met die gegevens wordt dan de tabel in kolommen A:G aangemaakt.
Ben je klaar met je competitie en wens je een nieuwe te starten, dan klik je op die oranje knop "Leegmaken lijst competitie"
 

Bijlagen

  • Voorbeeld002.xlsb
    126,9 KB · Weergaven: 2
Hoi Cow18,

Het is niet helemaal wat we voor ogen hadden, maar ziet er erg goed uit.
Dus we gaan daar eens mee aan de slag of we het zo kunnen gebruiken en werkbaar voor iedereen is.
En/of dat we er nog wat aanpassingen aan moeten doen.
Maar voorlopig kunnen we weer vooruit, dus helemaal TOP👍

Overigens, kwam ik een foutje tegen bij het leegmaken voor een nieuwe competitie.
deze regel If .ListRows.Count > 0 Then DataBodyRange.Delete
En hij schrijft alleen maar "LIBRE" weg.
Dus als je drieband invult dan wordt dat niet aangepast.
Of zie ik wat over het hoofd?

Gr CR
 
ik zag niet direct een fout, eigenlijk was je nog niet aan die bandstoot en die 3e.
Ik vind het allemaal wel vrij rommelig, maar aan de formules te zien, blijk je wel over 365 te beschikken.
Zo heb ik eventjes wat lijstjes aangemaakt voor libre en bandstoot op tabblad "lijstjes" en die gebruik ik dan in kolommen W en AD van RND.
Zodoende kan een speler maar 1 keer voor een bepaald onderdeel geselecteerd worden, dat is toch de bedoeling dacht ik, of mag hij maar 1 keer voor geselecteerd worden voor alle onderdelen samen ?
Dus ja, ik weet niet wat je verder van plan bent, maar ik zou de helft slopen.
 

Bijlagen

  • Voorbeeld002.xlsb
    135,5 KB · Weergaven: 2
Beste Cow18,

Ik snap dat je zegt sloop de helft.
En ongetwijfeld heb je volledig gelijk.
Alleen ontbreekt mij in dat geval de kennis om er nog enigszins 1 geheel van te maken.
Dus daarvoor ben ik echt aangewezen op hulp van derde.

Kortom, ik zou het erg op prijs stellen indien jij alles eruit wil slopen wat volgens jou niet nodig is en dat je gewoon het volgende kan doen.

  • We vullen op RND in welke spelers er zijn en wat ze willen spelen (kolom B&C)
  • In de kolom W de eerste speler en dan in kolom AD een tegenstander die dan beschikbaar is.
  • Het liefst zien we dan een lijstje met de beschikbare tegenstanders tegen de gekozen speler en de gespeelde wedstrijden
  • Op die manier kunnen we een keuze maken voor de tegenstander met de minste aantal partijen tegen hem/haar.
  • Iedere avond/middag worden er 2 of 3 wedstrijden per persoon gespeeld over verschillende disciplines
  • Vandaar dat er ook bandstoten en driebanden bij staat en je een keuze hebt in de verschillende spelsoorten. (kolom C)
  • En deze dus ook apart gezien moeten worden, immers je moet weten hoeveel wedstrijden ze tegen elkaar hebben gespeeld.
  • Als alles voor de avond is ingevuld dan wordt eerst het formulier uitgeprint want dat hebben we gedurende avond nodig.
  • Dan pas wordt alles opgeslagen en leeg gemaakt voor de volgende ronde.

Hopelijk heb ik het nog wat duidelijker verwoord zodat jullie er niet teveel tijd aan hoeven te besteden.
In ieder geval ik hoor graag van jullie, maar alle begrip als jullie er geen tijd en/of gelegenheid meer voor hebben.


Met vr gr CR
 
een voorlopig vrij kale versie, waar je straks vermoedelijk nog van alles zal toevoegen.
Het is wel voor minimaal een excel365.
Op blad"Lijsten" begin ik met een tabel met al je spelers met hun vaste gegevens vanaf kolom D. In de 1e 3 kolommen zet je een kruisje als je speler die dag 1 van die 3 onderdelen speelt, dus 3 kruisje als hij alle 3 de onderdelen speelt.
Iets verder vanaf kolom AE zie je dan bijvoorbeeld voor "Libre" de spelers met een kruisje voor dat onderdeel en in de kolom ernaast wordt een speler geschrapt als hij straks ook geselecteerd wordt voor dat onderdeel in het tabblad "RND". Zijn alle spelers op die manier geselecteerd en blijft er niemand over, dan staat er in die kolom "#BEREKENEN!" als foutmelding. Voor de 3 onderdelen dus 3 keer hetzelfde.
Ga je vervolgens naar het tabblad "RND" dan staan daar voorlopig 3 "tabellen", 1 voor elk onderdeel. Bovenin, in A4 schrijf je de datum of een andere omchrijving (de naam van het toernooi). Vervolgens ga je in 1 van de 3 tabellen staan en klik je op het pijltje omlaag en je krijgt de keuze uit de spelers voor dat onderdeel, die nog niet geselecteerd zijn. Ernaast vanaf de kolom D krijg je een overzicht van de mogelijkheden (een camera van de tabel op het tabblad "tellers"). Eens je een speler gekozen hebt en je dus een tegenspler moet kiezen, is de overzicht ook nog beperkt tot enkel die mogelijkheden met enkel de gekozen speler. Iedere speler kan maar 1 keer per onderdeel gekozen worden.

Ben je klaar voor die dag, klik j dan op die knop bovenin "RND" of "Telen" "Wegschrijven ..."
Wil je over nieuw beginnen met een nieuwe competitie, dan is het die knop "Leegmaken ..." in J1 van "Tellen"

kijk het eens na ...
 

Bijlagen

  • Voorbeeld002.xlsb
    160,6 KB · Weergaven: 1
nieuwe bijlage
 

Bijlagen

  • Voorbeeld002.xlsb
    78,7 KB · Weergaven: 4
Terug
Bovenaan Onderaan