Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Sudoku oplossen.  (gelezen 22385 keer)

0 leden en 1 gast bekijken dit topic.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Sudoku oplossen.
« Gepost op: 18 december 2019, 17:09:18 »
Hallo allemaal,

ik zoek (voor een projectje dat ik voor de fun opgestart heb) een manier om een samengevoegde cel te detecteren.

Bijvoorbeeld Werkblad1 Cel (A1;C3) is een samengevoegde cel (waarvan de waarde kan gevonden worden in A1)

Hoe kan ik nu in VBA:

IF Range("A1;C3") = samengevoegde cel
....
Else
.....
End If

Mijn beperkte kennis heeft nog niets opgebracht, ook niet na veel zoeken op diverse Excel-sites.

Voor Excel 2013-2016-2019-365 is er een methode, maar humpy zit nog met 2007....  :-[

Ik kan de samengevoegde cellen ook nog als bereik benoemen als dat nuttig is.
 
Dank bij voorbaat  ;D

:) 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 emields

  • Ervaren lid
  • ***
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: Sudoku oplossen.
« Reactie #1 Gepost op: 18 december 2019, 18:41:14 »
bedoel je zoiets?

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Sudoku oplossen.
« Reactie #2 Gepost op: 18 december 2019, 18:56:29 »
Hallo emields,

met deze:
For Each cell In Range("a2:k20")
If cell.MergeCells Then
....
Else
.....
End If
ben ik waarschijnlijk al geholpen.
Ik had nergens de functie "MergeCells" gevonden, maar voor mij zal dit waarschijnlijk ruim voldoende zijn.

Bedankt :thumbsup:

:) 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 emields

  • Ervaren lid
  • ***
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: Sudoku oplossen.
« Reactie #3 Gepost op: 18 december 2019, 18:58:11 »
hopelijk, kan het wel niet proberen in 2007

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Sudoku oplossen.
« Reactie #4 Gepost op: 18 december 2019, 19:04:52 »
hopelijk, kan het wel niet proberen in 2007
Werkt prima in 2007, moet het wel nog verwerken in mijn macro. Maar dat mag geen probleem zijn.

Nogmaals bedankt.

:) 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 Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Sudoku oplossen.
« Reactie #5 Gepost op: 18 december 2019, 19:29:22 »
@ Emiels, ik zou geen harde range gebruiken.
Zoiets
For Each c In ActiveSheet.UsedRangeipv
For Each cell In Range("a2:k20")
Je gebruikt hier trouwens cell, dit wordt door excel herkent.(zit ingebakken in excel of hoe ik het ook moet uitleggen.)
Dit wordt ten stelligst afgeraden en vraagt voor problemen, gebruik bv cel, dit is Nederlands voor cell en excel gebruikt dit niet.
Zelf problemen ondervonden met Dot (van Dotchie) maar excel kent ook Dot (punt)
En nu de hamvraag waarom in godsnaam samengevoegde cellen gebruiken?????????

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Sudoku oplossen.
« Reactie #6 Gepost op: 18 december 2019, 19:41:41 »
@ Emiels, ik zou geen harde range gebruiken.
For Each c In ActiveSheet.UsedRangeipv
For Each cell In Range("a2:k20")
Dotchie, ik veronderstel dat je "c" dan eerst wel moet Definiëren, en zo ja, als wat: Dim c As Range?
En nu de hamvraag waarom in godsnaam samengevoegde cellen gebruiken?????????
Omdat het werkblad grafisch getint is, misschien....  ;) Het oog wil ook wat.

Even uitleggen:
Ik ben een puzzelaar.
Ik los dagelijks tientallen puzzels op, maar de meest intrigerende zijn de Sudoku's.
Nou, bij het oplossen van een echt moeilijke Sudoku heb je hulpvakken nodig, geheugensteuntjes.
Het zoeken van die waardes in de hulp-vakjes vraagt heel veel tijd, en je maakt soms fouten.
Daarom zag ik het als een zeer goede puzzel om dit invullen van de hulp-vakjes te automatiseren in Excel.

Tjoeme, nu heb ik het toch verklapt....  ;D

:) 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 Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Sudoku oplossen.
« Reactie #7 Gepost op: 18 december 2019, 19:56:52 »
@ Softaid
Een variable declareren is alleen nodig als je Option Explicit gebruikt, en ja het is  Dim c As Range.
Hou ons op de hoogte van je (puzzel) projectje.
Je moet je Google skills wat oppoetsen, ik verwacht beter van jou. 8) 0:-)
Eerste hit
https://excel.tips.net/T003905_Identifying_Merged_Cells.html

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Sudoku oplossen.
« Reactie #8 Gepost op: 18 december 2019, 20:09:25 »
Hallo Dotchie,

tja, voor een gemiddelde dommerik vind ik soms veel... Maar niet altijd alles.
Was te veel aan het zoeken op de functie "Junction()". Alhoewel ik "Merge" al gebruikt had in de macro....

Citaat
ik verwacht beter van jou.
Dan ben je aan het verkeerde adres.... Ik ben maar een beginneling, die wel wil...maar....  :'(

Voor mij is het (Excel-VBA) een aardige aanvulling op mijn puzzel-mania...  ;D

Dank U beiden voor de geboden hulp.

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 Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Sudoku oplossen.
« Reactie #9 Gepost op: 18 december 2019, 20:22:47 »
Volgende puzzelvraag:
Waarom zou je Option Explicit gebruiken en je variabelen declareren?
De volgende puzzelvraag verschijnt op 03/01/2020 in uitgave 322 van "De Grote oplossing". :P ;D ;D ;D ;D

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Sudoku oplossen.
« Reactie #10 Gepost op: 18 december 2019, 20:39:06 »
Hoy Dotchie,

ik gebruik nooit "Option Explicit", en zet mijn macro's altijd in een module, maar krijg soms toch een foutmelding dat de variabele niet gekend is, niet gedeclareerd. Als ik de variabele dan een "Dim As... " geef, dan blijkt er geen probleem meer te zijn.
Zo als ik de foutmelding nogmaals tegen kom, dan plaats ik wel een screenprint.

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: Sudoku oplossen.
« Reactie #11 Gepost op: 19 december 2019, 09:21:01 »
Hoi,

Mag ik ook nog mee 'instappen' ?
Naar mijn aanvoelen namelijk (waarmee ik het zelf al bijna 'perceptie' noem) eindelijk nog eens een écht leuk Excel-draadje.

Ik zie zelf rondom mij nog steeds al te veel samengevoegde cellen opduiken. Om deze (althans in horizontale richting) te vermijden, kwestie inderdaad van 'het oog' zo goed als mogelijk tevreden te houden, bestaat er een makkelijke maar weinig gebruikte werkwijze, namelijk "Centreren over selectie". Verticaal samengevoegde cellen vermijden en het visueel aantrekkelijk houden is dikwijls lastiger, afhankelijk van wat en hoe...

Dus mocht je bereid zijn je projectje met ons te delen ('t zal ook een beetje mijn mannelijke nieuwsgierigheid zijn, denk ik), dan zal ik daar graag eens naar kijken.
Bijkomend voordeel: we leren er misschien ook nog iets van. 'k Los trouwens zelf al eens graag een Sudoku op...

Off topic: toen ik zelf qua programmeren nog bij de preminiemen speelde heb ik eens een Sudoku-oplosser geschreven. Zal eens zoeken of ik die nog terugvind en hem hier posten, met alvast de bemerking dat die ongetwijfeld heel amateuristisch is geschreven en dus waarschijnlijk 100 keer beter kan. Maar hij werkt, en zelfs niet traag...
Als ik hem hier post, dan zeker niet met de pretentie dat iemand daar nut zou aan hebben. Volgens mij zat de fun namelijk 100% in de oplosser maken, en blijft dus 0% over voor 'gebruiken'...

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.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Sudoku oplossen.
« Reactie #12 Gepost op: 21 december 2019, 13:14:52 »
Hallo pitufo,

natuurlijk mag je mee doen  :thumbsup:
Maar ik wil zelf eerst met mijn beperkte kennis proberen dit tot een goed einde te brengen.
Ik roep wel om hulp als is totaal strop kom te zitten.

Een Sudoku oplosser wil ik niet gebruiken of maken. Dan is er helemaal geen plezier meer aan het puzzelen.
eigenlijk is het ook niet de bedoeling dat ik met mijn werkje te veel hulp krijg, want dan leer ik niet zelf te zoeken.

Toch bedankt, en ik hoop spoedig een werkende én mooie macro te kunnen tonen.

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 SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Sudoku oplossen.
« Reactie #13 Gepost op: 22 december 2019, 16:33:38 »
Hallo,

ik heb al een deel van mijn project klaar, en wil het dan ook even tonen.
Heel fundamentalistisch, maar ik ben er toch tevreden over tot nu toe.
Er staan geen codes in het werkblad en er is een verborgen "Data" werkblad.
De macro telkens een volledig nieuw bord laten tekenen vond ik "overkill".
Als je het ook eenmalig kan maken en gebruiken (overzetten) via één regeltje code, dan mag dat voor mij.

Ik heb getracht de code te vereenvoudigen, maar ik vind niet veel wat korter kan (binnen de bestaande structuur die ik begrijp).
Bijvoorbeeld: Gelijktijdig (vette) lijnen trekken rond Ranges die elkaar kruisen schijnt niet te werken.

Schoonheidsfoutjes in de code mogen altijd gemeld worden, maar respecteer dit als simpele code voor simpele mensen.
Heel waarschijnlijk zal iemand met meer "scills" dan ik daar via VBA een tabel van maken, en hetzelfde of beter maken dan mijn. Maar daar leer ik niets uit, omdat het mijn petje te boven gaat.
Besef dat deze macro me al bloed, zweet en tranen heeft gekost  ;D

Awel, ik wacht nog op uw reactie's ....  _/-\o_

:) 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: Sudoku oplossen.
« Reactie #14 Gepost op: 22 december 2019, 19:04:39 »
Hoi SoftAid,

Leuke werkwijze heb je daar in elkaar geknutseld !
Ik snap nu ook het gebruik van samengevoegde cellen in deze uitdaging.

Voor de zekerheid: met 'Maak nieuwe Sudoku' bedoel je toch gewoon dat het linker kader wordt leeggemaakt ?
En voor een letterlijk nieuwe maak je zelf het rechter kader leeg en vult daar de nieuwe opdracht in ?

Citaat
De macro telkens een volledig nieuw bord laten tekenen vond ik "overkill".
Als je het ook eenmalig kan maken en gebruiken (overzetten) via één regeltje code, dan mag dat voor mij.

We kunnen het ook nulmalig maken: in bijgevoegd voorbeeld is het kader op blad "Data" niet meer aanwezig, en het bestaande kader krijgt zijn origineel uiterlijk zonder te grote ingrepen. Tenminste, dat lijkt zo, want er zitten nog niet-samengestelde cellen in van de 'vorige' keer. Maar dat lost zichzelf op vermits daarna onvermijdelijk de knop 'Maak kopie' zal gebruikt worden (en zoniet betekent het dat van de linkerkant geen gebruik zal worden gemaakt, dus altijd goed). Het laatste uitwerken van de juiste opmaak zit in de eerste lijntjes van 'Maak hulpcellen'.
En daardoor is de procedure 'Lijnen' ook overbodig en dus niet meer aanwezig.

De rest van 'Maak hulpcellen' leg ik even terzijde. 'k Ben er zo goed als zeker van dat we hier aan snelheid kunnen winnen. Het lastigste is daarbij misschien om tegemoet te komen aan je verzoek om niet te geweldig af te wijken van wat je al gedaan hebt.
Trouwens, je hebt gelijk, iets zelf werkend krijgen zal altijd wel de meeste voldoening blijven geven. Geen seconde twijfel ik eraan dat ik vaak methodes bricoleer die sneller en beter kunnen, maar vooral werken. En dat doet die van jou ook, chapeau dus !

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

 


www.combell.com