WorkbookSelectionChange

Bonjour,

Ci joint est mon programme. Quand je clique sur une cell, le numéro a l'interieur de cette cell doit apparaître (après merge). Puis l'utilisateur doit cliquer sur une autre cell pour remplir le Sudoku.

Mais comment relancer la WorkSheetSelectionChange?

Je ne suis plus très jeune, retraité et aurais besoin d'aide pour aller plus vite. C'est un projet Sudoku. Je ne pense pas que ce soit trop compliqué mais je ne vois plus très bien l'écran.

Merci,

54sudoku-dl.xlsm (55.88 Ko)

Bonsoir,

En premier, il n'est pas possible d'écrire :

si A=1 ou 2 ou 3 ou 4 alors

If Target.Address = ("$A$1") Or ("$A$2") Or ("$A$3") Or ("$B$1") Or ("$B$2") Or ("$B$3") Or ("$C$1") Or ("$C$2") Or ("$C$3") Then GoTo MergeA1

il faut écrire :

si A=1 ou A=2 ou A=3 alors

If Target.Address = ("$A$1") Or Target.Address = ("$A$2") Or Target.Address = ("$A$3") Or Target.Address = ("$B$1") Or Target.Address = ("$B$2") Or Target.Address = ("$B$3") Or Target.Address = ("$C$1") Or Target.Address = ("$C$2") Or Target.Address = ("$C$3") Then GoTo MergeA1

Ici encore plus simple est de tester l'intersection :

si l'adresse de la cellule est comprise dans la zone A1:C3 alors

If Not Intersect(Target, Range("A1:C3")) Is Nothing Then GoTo MergeA1

Ici c'est une double négation (Not et Nothing) donc c'est une affirmation, donc si target dans la zone A1:C3 alors MergeA1

et au vu de votre code Range("A1:C3") est égal à la variable A1 grâce aux lignes

Dim A1 As Object
Set A1 = Range("$A1:$C3")

Mais comme on sait que la variable A1 sera une "adresse" ou plutôt une plage alors le mieux est d'écrire :

Dim A1 As Range

Pour le second problème est que vous avez créé une boucle infinie...

En effet après le lancement de la sélection change, le traitement de la cellule sélectionnée, vous demandez de retourner à start:

et là commence une deuxième fois le traitement, avec les mêmes valeurs pour target, donc les mêmes traitements, puis retour à start: et là commence une troisième fois le trait...(...)

Vous comprenez ? il faut laisser la "SUB" se terminer afin que la surveillance événementielle puisse reprendre et surtout que l'utilisateur reprenne la main sur l'application.

L'idée de la transformation est de supprimer les goto Marge A1 et suivant.

Puisque vous faites un test, alors pourquoi ne pas mettre ce qu'il y a à faire à la suite de ce test :

If Not Intersect(Target, Range("A1:C3")) Is Nothing Then
    A1 = Target.Value
    A1.Merge
    With A1.Font
        .ColorIndex = 1
        .Bold = True
        .Size = 28
    End With
    Exit Sub ' ici on sort de la sub et l'utilisateur reprend la main
End If

Après je vous laisse le travail de finition avec ces quelques directions de recherche...

@ bientôt

LouReeD

Merci, très sympa. je fais les corrections.

Je reviendrais vers vous probablement après.

>Cordialement et bon week end.

Bonsoir,

No problem, but beaucoup de "truc" en cours ...

@ bientôt

LouReeD

Rechercher des sujets similaires à "workbookselectionchange"