Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: voor de VBA programmers  (gelezen 16346 keer)

0 leden en 1 gast bekijken dit topic.

Offline firmin

  • Ervaren lid
  • ***
  • Berichten: 442
  • Geslacht: Man
  • Excel Specialist
voor de VBA programmers
« Gepost op: 10 april 2014, 15:44:29 »
Beste,

Zoeken, oefenen, durven drie noodzakelijkheden om met excel te werken.
En ja, ik weet het er zijn vele online binero puzzels.
De bijgevoegde puzzel is self made , de vraag is of met VBA code de puzzel kan
opgelost worden. Ik denk hierbij aan sudoku.
Wie durft het aan ?

Firmin
PB easynote LE69KB,AMD quad-core,1000GB HDD,AMD Radeon HD8330,8GB DDR3
Windows 10,office 2007
MSE, Internet Explorer 11

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: voor de VBA programmers
« Reactie #1 Gepost op: 10 april 2014, 18:14:07 »
Dag Firmin,

Zomaar een reactie... ik heb onlangs een sudoku-oplosser in vba geschreven die de klus klaart in minder dan 1 seconde.
Een binero-oplosser schrijven kan niet anders dan stukken gemakkelijker zijn, dus ik laat de uitdaging graag aan anderen.
(Kan dit qua extra motivering tellen ?)  8)

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: voor de VBA programmers
« Reactie #2 Gepost op: 10 april 2014, 20:15:07 »
Mogelijk zouden "we" nog meer gemotiveerd worden door jou Sudoka-oplosser in bijlage te vinden...  0:-)

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: voor de VBA programmers
« Reactie #3 Gepost op: 10 april 2014, 20:37:38 »
Hallo Firmin,

lovenswaardig initiatief  ;D 8)

Ik merk echter wel al dadelijk op dat je opgave, eenmaal gemaakt (groene, blauwe en rode knop) in de zevende rij horizontaal al 6 "eenen" bevat. Dat is er al eentje teveel, en je opgave is dus al ongeldig.

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: voor de VBA programmers
« Reactie #4 Gepost op: 10 april 2014, 22:17:36 »
Firmin,

Zoals SoftAid al opmerkte zal je inderdaad je "opgave" nog serieus moeten pimpen  :-\

Ik heb even gekeken waarom :

In het random rooster zet je - per definitie - een willekeurige collectie enen en nullen. De kans dat dit een 'opgeloste' binero is is astronomisch klein.
Nochtans zou dat een vereiste zijn om daar door cellen leeg te maken een 'oplosbare' opgave van te maken.
Akkoord, hoe meer vakjes je leeg maakt hoe groter de kans wordt. Maar zelfs als er 70 zouden leeggemaakt worden (die kans is ook al klein !) zal je nog steeds geen zekerheid hebben.

Kortom, de eerste en moeilijkste opdracht zal zijn een valabele opgave te maken. Veel succes !  8)

Groeten,
pitufo

"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline firmin

  • Ervaren lid
  • ***
  • Berichten: 442
  • Geslacht: Man
  • Excel Specialist
Re: voor de VBA programmers
« Reactie #5 Gepost op: 10 april 2014, 22:40:35 »
Nog een woordje uitleg ,

De uiteindelijke bedoeling is om de opgave in gedrukte versie te zetten.
In het zorgcentrum waar ik als vrijwilliger werk, zijn de inwoners verzot op
dergelijke puzzels (binero en sudoku).
Nu kan ik evengoed dat uit de boekjes halen, maar ik vind het leuk om dat zelf
te maken in excel.
De radom cijfers worden door de knop  "nrs plaatsen" in het raster opgave gezet,
dit omdat random nummers steeds wijzigen.
de controlevakken geven aan waar er fouten zitten. Die haal ik er handmatig uit door
in het raster opgave de cijfers aan te passen.
Als het rooster klaar is (goede oplossing) kopieer ik dat naar het raster oplossing.
Daarna verwijder ik in het raster opgave met de knop "delete nrs" willekeurig de cijfers.
Het raster opgave en oplossing worden in een word document geplaatst voor het boekje.

Mijn vraag is dus : de opgave te maken met VBA code.

Firmin
PB easynote LE69KB,AMD quad-core,1000GB HDD,AMD Radeon HD8330,8GB DDR3
Windows 10,office 2007
MSE, Internet Explorer 11

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: voor de VBA programmers
« Reactie #6 Gepost op: 11 april 2014, 23:12:50 »
Dag Firmin,

Dan had je ons in eerste instantie (ik denk dat ik voor deze ene keer misschien ook voor SoftAid mag spreken) nogal op het verkeerde been gezet. Voor mij klonk het in elk geval (maar dat kan ook aan mijn oren liggen) alsof je met je systeem binero's maakte en op een geautomatiseerd oplossysteem hoopte.

Zoals ik het nu lees komt het erop neer dat je van ver enen en nullen in een rooster gooit, en dan manueel wijzigingen aanbrengt tot je er een opgeloste binero van gemaakt heb, die je daarna tot opgave herleidt door vakjes leeg te maken. Als je dit door de computer wil laten doen vrees ik dat je heel wat inspanning van je processor zal vragen (lees : het zou wel eens lang - héél lang - kunnen duren...)

Het is te zeggen : ofwel zal er een heel complexe code moeten geschreven worden en daar heb ik - sorry - echt niet de tijd voor, ofwel laat je 'blind' zoeken (en waarom niet binnen de code gebruik makend van het controlesysteem dat je al hebt), maar ik vrees dat je dan net zo goed kan hopen om de lotto te winnen...

Tussen haakjes : ik heb nog even je controle gecontroleerd  8) op een nogal onnozele manier (zie bijlage - blad 2) en daaruit blijkt dat je formule in D15 niet klopt : D2:D11 moet D2:D4 zijn.

Nog een bedenking voor SoftAid : ik zie 2 plezante dingen aan binero of sudoku, enerzijds ze oplossen, anderzijds een automatisch oplossysteem ontwerpen (Firmin heeft er nu een derde aan toegevoegd...), maar het hebben van een oplossyteem vind ik op zich volkomen waardeloos. Dat is waarom ik mijn sudoku-oplosser niet had toegevoegd, want daar is - zo zie ik het althans - niemand mee geholpen.

Groeten,
pitufo



"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline firmin

  • Ervaren lid
  • ***
  • Berichten: 442
  • Geslacht: Man
  • Excel Specialist
Re: voor de VBA programmers
« Reactie #7 Gepost op: 12 april 2014, 08:55:55 »
pitufo,

Alvast bedankt voor de goede uitleg, ik was er zelf al van bewust dat met VBA
het niet eenvoudig zou zijn.
Sorry voor u op het verkeerde been te zetten en bedankt voor de opmerking
over dat foutje.

Firmin
PB easynote LE69KB,AMD quad-core,1000GB HDD,AMD Radeon HD8330,8GB DDR3
Windows 10,office 2007
MSE, Internet Explorer 11

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: voor de VBA programmers
« Reactie #8 Gepost op: 17 april 2014, 22:25:11 »
Dag Firmin,

Vermits je deze vraag stelde vanuit heel nobele motieven heb ik er toch nog even mijn tanden in gezet.

En wat blijkt ? Ik blijf overtuigd dat code die elke aangevatte zoektocht tot een goed einde zal brengen te schrijven is, maar tegelijk heel tijdrovend.

En dus heb ik er een andere (en nog redelijk simpel ook  ::) ) !

In ongeveer 40 % van de gevallen levert ze onmiddellijk resultaat. In de andere loopt ze vast... en dus laat ik na een aantal missingen hervatten, waardoor er uiteindelijk ALTIJD een correcte oplossing gevonden wordt.

Wie iets van kansberekening weet zal daarom begrijpen dat het in uitzonderlijke gevallen veel langer dan gemiddeld kan duren, maar het gemiddelde zelf valt goed mee.

Ik heb het 100 keer laten lopen en een statistiekje gemaakt (uiteraard ook dit volledig geautomatiseerd) met als resultaat : oplossing gevonden in minimum 0,4 sec. en een negatieve uitschieter van 12,4 sec., waardoor ik bij een gemiddelde kom van 2,3 sec., maar de mediaan slechts 1,8 sec. (bij verwerking die geen gebruik maakt van je werkblad met formules).

Ik heb me voorlopig enkel met een werkend algoritme bezig gehouden, moet er dus nog een deel ballast uitgooien, visueel lijkt het ook nog nergens op, en ik zou ook nog code toevoegen die expliciet bepaalt hoeveel vakjes je wil leegmaken, maar in elk geval wou ik je dit toch al laten weten.

Wordt dus vervolgd...

Mvg,
pitufo

PS : ik heb er ook redelijk leesbare code van gemaakt die ongetwijfeld bij ECHTE  ;) programmeurs op kritiek zou stuiten...
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline firmin

  • Ervaren lid
  • ***
  • Berichten: 442
  • Geslacht: Man
  • Excel Specialist
Re: voor de VBA programmers
« Reactie #9 Gepost op: 17 april 2014, 23:21:01 »
pitufo,

Alvast bedankt voor uw bereidwillige inzet.

Firmin
PB easynote LE69KB,AMD quad-core,1000GB HDD,AMD Radeon HD8330,8GB DDR3
Windows 10,office 2007
MSE, Internet Explorer 11

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: voor de VBA programmers
« Reactie #10 Gepost op: 18 april 2014, 20:58:30 »
Hallo,

kent iemand een manier om in VBA te kijken of in een vaste Range ("A1:A10") een of meerdere dubbele namen zitten?

Het antwoord moet True of False geven, zodat er een statement kan gemaakt worden:

IF in de (Range ("A1:A10") is de tekst in 2 cellen identiek THEN "do this"  ELSE
"do that"
END IF

Thanks,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: voor de VBA programmers
« Reactie #11 Gepost op: 18 april 2014, 23:33:55 »
Oei SoftAid, ik in elk geval niet...  :-X

Maar : aangenomen dat er niets beters wordt verzonnen kan je het natuurlijk oplossen zoals in het voorbeeldje hierbij (waarbij ik er heb op gelet dat het, binnen deze werkwijze, niet langer duurt dan nodig).

Mvg,
pitufo
 
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: voor de VBA programmers
« Reactie #12 Gepost op: 19 april 2014, 11:07:27 »
Hallo pitufo,

dank voor je meedenken. Je procedure werkt en ik denk wel dat ik ze kan gebruiken binnen mijn VBA-werkje.

Hartelijk dank.

Groeten,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: voor de VBA programmers
« Reactie #13 Gepost op: 19 april 2014, 13:29:26 »
Graag gedaan, SoftAid  8)

Niet dat het vaak voorkomt, want in de informatica-wereld wordt meestal naar orde gestreefd, maar gesteld dat iemand het toch zou willen realiseren, dan kan een gelijkaardige structuur bijvoorbeeld worden gebruikt om totale chaos te creëren.
Deze bedenking er even bij voor wat ze waard is...  8)

Mvg,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: voor de VBA programmers
« Reactie #14 Gepost op: 20 april 2014, 17:22:52 »
Hallo Firmin,

ik heb een code geschreven die voorlopig werkt, maar nog fouten maakt tegen één regel van het spel.

Waarschijnlijk zal de hele code moeten herschreven worden om die fout weg te (kunnen) werken.

Ik ben er nu 2 weken tussenuit, een verdiende vakantie, dus breek je hoofd maar over het vervolg  ;) ;D

Bestand in bijlage: BINERO _ SoftAid.xlsm (42 kB)

Groeten,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

 


www.combell.com