Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Vinden hulpcellen Sudoku verfijnen  (gelezen 4620 keer)

0 leden en 1 gast bekijken dit topic.

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #15 Gepost op: 24 januari 2021, 20:08:45 »
Hoi SoftAid,

Ben in elk geval heel tevreden dat het project niet op zijn achterwerk ligt  :D

Bij de .xxxx waar je het over hebt hoort wel degelijk een With, die staat er namelijk vlak boven. Ik zie geen reden waarom dat fout zou gaan.
Dus even gewoon uit nieuwsgierigheid: krijg je die foutmelding in het voorbeeld zoals ik het heb gepost? of heb je de code al opgenomen in het grote geheel  :) en krijg je daar de foutmelding?

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.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #16 Gepost op: 24 januari 2021, 23:48:45 »
Ben in elk geval heel tevreden dat het project niet op zijn achterwerk ligt  :D
Nooit, maar soms moet ik even naar adem snakken. Heb ook nog andere dingen te doen....
Bij de .xxxx waar je het over hebt hoort wel degelijk een With, die staat er namelijk vlak boven.
Nietes...  ;D

Sub Zoeken_in_9X9_raster()
For cijfer = 1 To 9
    aantal = WorksheetFunction.CountIf(Range("E3:M11"), cijfer)
    If aantal = 1 Then
        rij = Int(Range("E3:M11").Find(cijfer).Row / 3) * 3
        kolom = (Int((Range("E3:M11").Find(cijfer).Column - 2) / 3) * 3) + 2
        Cells(rij, kolom).Resize(3, 3).Merge
        Cells(rij, kolom) = cijfer
    End If
Next cijfer
End Sub
Het ging dus fout in deze regel:
rij = Int(Range("E3:M11").Find(cijfer).Row / 3) * 3
In jou voorbeeld ging het goed, maar bij implantatie in mijn xlsm kreeg ik foutmeldingen.

Op dit ogenblik is deze macro af, maar soms af en toe loopt dezelfde regel nog tegen een "onbekende lamp" aan tijdens uitvoering.
Als ik "stap per stap" doe, dan loopt hij goed tot op het einde.
Enige "fout" die ik dan heb, is dat hij de hele routine opnieuw begint, maar mogelijk is dat normaal (dat hij de Sub niet verlaat bij "stap per stap") ???

In bijlage mijn werkboekje.. Begint al dikker te worden.

De Duos-macro kan ik niet integreren wegens te veel variabelen die ik niet ken en bereiken die ik niet kan instellen.
Ik vind ze zelfs moeilijk terug,   :-[  Maar dat is weer een stap verder. Met de corona-voorspellingen zullen we toch nog lang binnen zitten  :(

Bekijk de bijlage maar eens rustig, en je 9 x 9 macro

Groetjes, bedankt en tot morgen alweer  ;D ;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 cow18

  • Ervaren lid
  • ***
  • Berichten: 340
  • Geslacht: Man
  • Oplossing.be
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #17 Gepost op: 25 januari 2021, 01:33:56 »
les 1 : samengestelde cellen verkloten de boel, nooit gebruiken.
Citaat
Sub Zoeken_in_9X9_rasters_pitufo()               'Zoeken naar singles in 9 x 9 rasters
   Application.ScreenUpdating = False
   Application.DisplayAlerts = False
   For arij = 5 To 23 Step 9
      For akol = 5 To 23 Step 9
         For cijfer = 1 To 9
            Application.StatusBar = arij & Space(5) & akol & Space(5) & cijfer   'zo kan je op de statusbar meevolgen waar je zit
            Set c = Range(Cells(arij, akol), Cells(arij + 8, akol + 8))   'je deelraster van 9*9
            aantal = WorksheetFunction.CountIf(c, cijfer)
            If aantal = 1 Then
               c.Name = "Pitufo"                 'gedefinieerde naam
               ThisWorkbook.Names.Add "zoek", cijfer   'andere gedefinieerde naam
               pitufo = [sum(if(pitufo=zoek,row(pitufo)+column(pitufo)/100,0))]   'aangezien er maar 1 is, voor de komma het rijnummer & na de komma het kolomnummer
               rij = Int(pitufo)                 'rijnummer
               kolom = pitufo * 100 Mod 100      'kolomnummer
               With Cells(rij, kolom).Resize(3, 3)   'deelrastertje van 3*3
                  If Not .MergeCells Then        'is nog niet samengevoegd
                     .Merge                      'samenvoegen
                     .Value = cijfer             'cijfer
                     .Interior.Color = RGB(255, 10, 10)   'ander kleurtje   '5296274
                     With .Font
                        .Name = "Arial"
                        .Size = 30
                        .Bold = True
                     End With
                  End If
               End With
               Wis_Hulpcellen
            End If
         Next
      Next
   Next
   Application.StatusBar = ""
End Sub

die smiley moet je vervangen door een "8" en een ")", die editor doet het hier ...

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #18 Gepost op: 25 januari 2021, 09:29:18 »
@ cow18,
Akkoord met je stelling over samengestelde cellen.
Maar dit is een opzet waar SoftAid lang geleden mee begonnen is en mogelijk veel tijd en zweet heeft gekost, en bovendien code die hij als zijn broekzak kent (we constateren toch ook altijd dat geen enkele code beter te begrijpen is dan deze die je zelf hebt geschreven), dus ik heb er wel begrip voor. Zeker omdat afstand doen van samengestelde cellen hier een bijna complete tabula rasa zou betekenen. Als we daar nog het argument 'mijn kind schoon kind' bijnemen...

@ SoftAid,

Citaat
Heb ook nog andere dingen te doen...
Nog een geluk !  :D
Serieus: ik merkte dat je wel al op recentere posts dan #8 had gereageerd, en hield daarom echt rekening met de mogelijkheid dat die aan je aandacht was ontsnapt.

Citaat
Citaat van: pitufo op Gisteren om 20:08:45
Bij de .xxxx waar je het over hebt hoort wel degelijk een With, die staat er namelijk vlak boven.
Nietes...  ;D
:o
De 9x9 die je nu hebt toegevoegd heb ik al in #2 bezorgd (geen With en geen .xxxx)
in #8 zat er bijkomend een 2x2-macro (wel With en wel .xxxx)

Beide macro's werken prima in dat oorspronkelijke voorbeeldbestand van jou. Dat implementeren in je hoofdbestand mogelijk lichte aanpassingen vergt mag ons natuurlijk niet verbazen... dus ik probeer asap je laatste 'werkboekje' (of 'turf'?  0:-) ) te bekijken.

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.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #19 Gepost op: 25 januari 2021, 10:45:09 »
@ Koe,

les 1 : samengestelde cellen verkloten de boel, nooit gebruiken.
    .Merge       
Je gebruikt het toch zelf ook in deze context.
Ten slotte is het een grafisch resultaat, en MOET je een 3 x 3 raster samenvoegen om een Sudoku te spelen.
Ik begrijp je beweegredenen wel, en heb nog pas in een ander topic TS aangeraden geen of zo min mogelijk samengestelde cellen te gebruiken, maar dat was een "boekhoudingsprogramma", en heb je zelden samengestelde nodig

Ik wens echt geen kortere code te krijgen/schrijven als ik ze niet begrijp. Wat leer ik daar uit?

Toch weer bedankt voor je inzet  :thumbsup:

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 cow18

  • Ervaren lid
  • ***
  • Berichten: 340
  • Geslacht: Man
  • Oplossing.be
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #20 Gepost op: 25 januari 2021, 11:01:22 »
Citaat
Je gebruikt het toch zelf ook in deze context.
Dit is onder de gordel, ik heb gepoogd bij de les te blijven en enkel het haperingetje in je code op te lossen. Find in een bereik met samengevoegde cellen levert problemen, google daar maar eens op, dus moet je zijsprongetjes of een andere weg kiezen. Ik denk dat je enkel in de fout gaat als de cel linksboven al samengevoegd is, dus zou je dat eerst moeten afvragen en daarna je manier van denken toepassen ofwel met on error-constructies.
Wat ik daar, heel kort samengevat, in elkaar gebotst heb, is het aanmaken van een 3*3 array gevuld met ofwel een nul als in die cel je zoekwaarde niet staat, ofwel het rijnummer + het kolomnummer/100. Sommeer je die array, dan is dat de som van 8 nullen en dat getal, dus  ... . Hadden er meerdere in gestaan, dan had een max ook kunnen werken.
Misschien is dit opnieuw te hoog gegrepen en moest het je verder interesseren, dan moet je het maar vragen en anders is het lompweg gebruiken of vuilbak.



Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #21 Gepost op: 25 januari 2021, 11:10:48 »
De 9x9 die je nu hebt toegevoegd heb ik al in #2 bezorgd (geen With en geen .xxxx)
Het is in die macro dat ik een melding kreeg (nu niet meer)
Citaat
in #8 zat er bijkomend een 2x2-macro (wel With en wel .xxxx)
Daar ben ik nog niet aan toe, zoals ik gisteren al melde. Je zal bij deze veel comments moeten zetten, voor ik hem "misschien" begrijp  :-[

Maar die "singles" uit een 9 x 9 begrijp ik dus prima nu, en ik heb hem ook kunnen aanpassen zodat hij werkt op mijn "dashboard".

Dank je wel!

:) 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.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #22 Gepost op: 25 januari 2021, 11:41:23 »
Dit is onder de gordel,
Dat was zeker niet de bedoeling  :-[, het was als vraag bedoeld. Als je me nu nog niet kent, ......  :blink:
Citaat
ik heb gepoogd bij de les te blijven en enkel het haperingetje in je code op te lossen. Find in een bereik met samengevoegde cellen levert problemen op...
Tot nu toe levert het geen problemen op
Citaat
Wat ik daar, heel kort samengevat, in elkaar gebotst heb, is het aanmaken van een 3*3 array gevuld met ofwel een nul als in die cel je zoekwaarde niet staat, ofwel het rijnummer + het kolomnummer/100. Sommeer je die array, dan is dat de som van 8 nullen en dat getal.
Dus misschien is dit opnieuw te hoog gegrepen....
Natuurlijk is dat veel te hoog gegrepen (of aangeboden) voor mij. dat kan je toch opmaken uit de rest van de code die ik schreef.
Ik ben (en blijf) een beginneling, een prutser, en ik zal nooit veel bijleren.
Misschien wel een beetje, als men mij op mijn kennis, op mijn ritme, mijn handje blijft vasthouden en me blijft begeleiden.

Ik zeg al 20 jaar aan de helpers: "Help TS op HUN niveau +1 (onderrichtend), niet op jou niveau (als dat veel hoger ligt)".

Ik ben desalniettemin heel dankbaar dat jij en andere helpers dit allemaal doen voor mij.
Maar ik ben deze Sudoku.xlsm begonnen om die hulpcellen te berekenen, en daarna is dat uitgelopen tot oplossingen genereren.
Iets waar ik dankzij de hulp van het forum al redelijk goed in geslaagd ben.
Dat de code een A4 in beslag neemt, om iets te doen wat ook op 2 lijntjes kan, maakt NIETS uit.
Zo lang ik het kan lezen is dat voldoende en kan ik er op verder bouwen.
Met een code op 2 lijntjes die ik niet kan lezen kan ik niets aanvangen.

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: Vinden hulpcellen Sudoku verfijnen
« Reactie #23 Gepost op: 25 januari 2021, 11:46:15 »
@ cow18,

Ik denk dat je enkel in de fout gaat als de cel linksboven al samengevoegd is

Dat klopt helemaal, maar om daar dan on error's tegenaan te gooien lijkt mij een brug te ver, en je bijgevoegde code zoekt het ook nogal ver...

Liever blijf ik je voor en zeg daarom op voorhand zelf dat het trucje dat ik daarnet heb verzonnen aan de onnozele kant is, maar het voldoet wel:
Sub Zoeken_in_9X9_rasters_pitufo()    'Zoeken naar singles in 9 x 9 rasters
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For arij = 5 To 23 Step 9
        For akol = 5 To 23 Step 9
            For cijfer = 1 To 9
                aantal = WorksheetFunction.CountIf(Range(Cells(arij, akol), Cells(arij + 8, akol +), cijfer)
                If aantal = 1 Then
                    temergen = False
                    If Cells(arij, akol).MergeCells Then
                        Cells(arij, akol).UnMerge
                        temergen = True
                    End If
                    rij = (Int((Range(Cells(arij, akol), Cells(arij + 8, akol +).Find(cijfer).Row - 5) / 3) * 3) + 5     ' Regelmatig foutmelding op deze lijn, soms niet
                    kolom = (Int((Range(Cells(arij, akol), Cells(arij + 8, akol +).Find(cijfer).Column - 5) / 3) * 3) + 5
                    If temergen = True Then
                        Cells(arij, akol).Resize(3, 3).Merge
                    End If
                    Cells(rij, kolom).Resize(3, 3).Merge
                    Cells(rij, kolom) = cijfer
                    Cells(rij, kolom).Select
                    Selection.Interior.Color = 5296274
                    With Selection.Font
                        .Name = "Arial"
                        .Size = 30
                        .Bold = True
                    End With
                    Wis_Hulpcellen
                End If
            Next
        Next
    Next
End Sub



@ SoftAid,


Nog even inspelend om mijn vorige post: de 9x9-macro waar het hier over gaat (en waar je dus die foutmelding kreeg) is al een heel oude.
De nieuwe 9x9-macro heeft een andere bedoeling en beantwoordt aan je recente vraag, zijnde post 1 in dit draadje.
Die heb je dus nog niet in je werkboek staan(?)
En de duo-macro aanpassen voor finaal gebruik moet ook meevallen. In je werkboek begin je op rij 5, in je versimpelde voorbeeld op rij 3. Daarnaast hadden we enkel één 9x9-vierkant in het voorbeeld. Dan moeten enkel nog 2 lussen rond die code worden gelegd.

Wordt met grote waarschijnlijkheid vervolgd!

Oeps, ondertussen je nieuwe post gezien. Als je nu geen foutmelding meer krijgt heb je waarschijnlijk de code van cow18 in de plaats gezet(?)
Ik laat mijn 'omzeilmethode' hier toch maar staan.
Zoals hierboven al vermeld: de 9x9-macro met de (ex-)foutmelding en de 9x9-macro uit #2 hebben geen verband met elkaar.

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

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #24 Gepost op: 25 januari 2021, 13:05:56 »
Hallo SoftAid,

Nog eens extra goed gekeken, en alle verwarring (ook aan mijn kant is gebleken  :(  - dat komt ervan als men met meerdere files tegelijk aan het prutsen is...) gewoon genegeerd en de 9x9-kwestie rechtstreeks in je werkboek aangepakt.
Het werkt nu dus voor het 9x(9x9)-rooster  :D , en ik veronderstel nog steeds met leesbare code.

Tot het is getest en (hopelijk) goedgekeurd gaat het duo-vraagstuk eventjes on hold (ik probeer ondertussen mijn commentaar-belofte wel al na te komen  0:-) )

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.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #25 Gepost op: 25 januari 2021, 13:23:41 »
Hallo Pitufo,

ik was net al aan het reageren, maar ben blij dat je het zelf gemerkt hebt.
Ik had intussen de aanpassingen van de code uitgevoerd en getest, en de foutmeldingen bleven achterwege.
Dus, de opmerkzaamheid van cow18 (dat de foutmelding slechts optreed als de linksboven al gemerged is) bleek terecht.
Waarvoor dank aan Bart  :-*

En inderdaad, er bestaan kortere codes die hetzelfde doen, maar die mij dan niets leren, waar ik met jou code wel inzie wat er gebeurt, en waarom.
Dus... topie  :thumbsup:

Wat de 2x2 betreft, daar kom ik zeker vlug op terug.
Maar zonder 'comments vrees ik dat ik de bereiken niet ga vinden, maar ik probeer het toch nog op een rustige avond.
Zo leer ik misschien toch nog iets bij.

Groeten aan beide heren  8)

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

  • Ervaren lid
  • ***
  • Berichten: 340
  • Geslacht: Man
  • Oplossing.be
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #26 Gepost op: 25 januari 2021, 13:24:20 »
zonder te testen, zonder "on error", los uit de pols en vermoedelijk niveau TS+1 0:-)  If aantal = 1 Then
               Set c = Nothing                   'misschien overbodig
               Set c = Range(Cells(arij, akol), Cells(arij + 8, akol + 8)).Find(cijfer)   'je huidige zoek, uitgekleed
               If c Is Nothing Then              'niets gevonden en nochtans was er 1 !!!
                  rij = arij: kolom = akolom     'dan is het bovenaanlinks
               Else
                  rij = c.Row: kolom = c.kolom   'anders de gevonden cel
               End If
         

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #27 Gepost op: 25 januari 2021, 14:50:08 »
Hallo SoftAid,

De 2x2-methode heeft ondertussen de levensnoodzakelijke  8)  verduidelijkingen meegekregen.
't Is wel nog het afzonderlijke voorbeeldbestandje gebleven, en omdat de andere procedures wellicht al goed gaan heb ik in de bijlage al het overbodige verwijderd.
Ik heb er het volste vertrouwen in dat je het hiermee in je werkboek werkend ingebouwd krijgt  :)

Nog veel (in allerlei betekenissen) puzzelplezier  :D

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.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #28 Gepost op: 25 januari 2021, 16:03:22 »
zonder te testen, zonder "on error", los uit de pols en vermoedelijk niveau TS+1 0:-)
Bart, ik ga er deze week mijn "scherp" oog op werpen, en ik kom hier zeker op terug.
Denk niet dat ik het niet wil proberen te begrijpen, juist wel....  ;)
Bedankt.

De 2x2-methode heeft ondertussen de levensnoodzakelijke  8)  verduidelijkingen meegekregen.
Ik heb er het volste vertrouwen in dat je het hiermee in je werkboek werkend ingebouwd krijgt  :)
Je hebt blijkbaar veel vertrouwen in mijn kunde  ;D
Ik bekijk het deze week nog.
Ook bedankt!!

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.116
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Vinden hulpcellen Sudoku verfijnen
« Reactie #29 Gepost op: 30 januari 2021, 17:00:14 »
Hallo pitufo,

de laatste dagen heb je mij niet veel gezien op het forum (ik was er wel hoor).

Ik heb je code voor de 9x9 aangepast voor een 81 x 81, wat natuurlijk niet moeilijk was (enkel de rij- en kolom for-Next)

Maar, "curieuze-neuze" die ik ben (en de tip die ik laatst nog las (ik denk van RedHead) om de "Reg Variabelen-editor" te gebruiken deed een nieuwe wereld opengaan, zeker bij zoveel variabelen als in die dubbels zoeken.

daarom ben ik eergisteren gestart om, met als leidraad jou 9x9 code, deze om te zetten in:
- Macro om alle dubbels in rijen te zoeken en de zelfde getallen te verwijderen.
- Macro om alle dubbels in kolommen te zoeken en dezelfde getallen te verwijderen.

In bijlage een apart werkboekje voor die rijen en kolommen.

Gooi er je (goedkeurend) oog maar eens over  ;D.
Ik denk dat ik een goede leerling ben geweest
Ik heb toch veel moeten aanpassen om het tot een goed einde te brengen.   :)

Groeten en bedankt aan allen,

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