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,
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 MergeA1il 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 MergeA1Ici 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 MergeA1Ici 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 RangePour 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 IfAprè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