Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

aide sur une macro pour sudoku

15 réponses
Avatar
brunodujura
Bonjour,

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel chiffre
fusionne la région des 9 chiffres correspondants avec la valeur du chiffre
sur lequel je clique puis le mette en gras et en taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux que
j'ai trouvés et de ne laisser les "9 candidats" que pour les cases où je
n'ai rien trouvé.

J'ai déjà un premier problème: les macros que je crée s'exécutent toujours
au meme endroit de la grille et non là où j'ai la cellule active.
Si déjà vous pouvez m'aider sur ce premier obstacle.

Merci,

Bruno

10 réponses

1 2
Avatar
Patrick BASTARD
Bonjour, "brunodujura"

Et si tu communiquais le code que tu utilises actuellement ?
Une piste : sépare chaque zone par une colonne et une ligne vide, ce qui te
permettra de sélectionner la zone courante lors de ton double-clic.

--
Bien ,

Patrick
patrick.bastardchezdbmail.com




--
Bien ,

Patrick
patrick.bastardchezdbmail.com

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel chiffre
fusionne la région des 9 chiffres correspondants avec la valeur du
chiffre sur lequel je clique puis le mette en gras et en taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux que
j'ai trouvés et de ne laisser les "9 candidats" que pour les cases où je
n'ai rien trouvé.

J'ai déjà un premier problème: les macros que je crée s'exécutent toujours
au meme endroit de la grille et non là où j'ai la cellule active.
Si déjà vous pouvez m'aider sur ce premier obstacle.

Merci,

Bruno


Avatar
brunodujura
Bonjour Patrick,

En fait j'avance petit à petit...

Au début j'avais:
Range("A1:C3").Select
Selection.ClearContents
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Selection.Font.Bold = True
With Selection.Font
.Name = "Calibri"
.Size = 36
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
End Sub

Maintenant j'ai remplacé Range("A1:C3").Select
par ActiveCell.select
mais je voudrais étendre la sélection aux 2 colonnes de droite et 2 lignes
du dessous (dans la mesure où je clique en haut et à gauche de la région de
9 cellules)

Si déjà j'arrive à cela je rentrerai les valeurs de chaque case fusionnée
ensuite....

Merci,

Bruno
"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, "brunodujura"

Et si tu communiquais le code que tu utilises actuellement ?
Une piste : sépare chaque zone par une colonne et une ligne vide, ce qui
te permettra de sélectionner la zone courante lors de ton double-clic.

--
Bien ,

Patrick
patrick.bastardchezdbmail.com




--
Bien ,

Patrick
patrick.bastardchezdbmail.com

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel chiffre
fusionne la région des 9 chiffres correspondants avec la valeur du
chiffre sur lequel je clique puis le mette en gras et en taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux que
j'ai trouvés et de ne laisser les "9 candidats" que pour les cases où je
n'ai rien trouvé.

J'ai déjà un premier problème: les macros que je crée s'exécutent
toujours au meme endroit de la grille et non là où j'ai la cellule
active.
Si déjà vous pouvez m'aider sur ce premier obstacle.

Merci,

Bruno





Avatar
Patrick BASTARD
Re,

Ne sachant pas sur lequel des 9 chiffres tu vas cliquer, et pour éviter
d'effectuer un test sur le contenu de la cellule (avec select case et
offset), je t'ai indiqué l'astuce consistant à séparer chacun des groupes de
9 chiffres par une ligne et une colonne vides, qui te permettront de
sélectionner simplement la région courante (l'équivalent de edition,
atteindre, cellule, zone en cours)
Qu'en penses-tu ?

--
Bien ,

Patrick
patrick.bastardchezdbmail.com

Bonjour Patrick,

En fait j'avance petit à petit...

Au début j'avais:
Range("A1:C3").Select
Selection.ClearContents
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Selection.Font.Bold = True
With Selection.Font
.Name = "Calibri"
.Size = 36
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
End Sub

Maintenant j'ai remplacé Range("A1:C3").Select
par ActiveCell.select
mais je voudrais étendre la sélection aux 2 colonnes de droite et 2 lignes
du dessous (dans la mesure où je clique en haut et à gauche de la région
de 9 cellules)

Si déjà j'arrive à cela je rentrerai les valeurs de chaque case fusionnée
ensuite....

Merci,

Bruno
"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, "brunodujura"

Et si tu communiquais le code que tu utilises actuellement ?
Une piste : sépare chaque zone par une colonne et une ligne vide, ce qui
te permettra de sélectionner la zone courante lors de ton double-clic.

--
Bien ,

Patrick
patrick.bastardchezdbmail.com




--
Bien ,

Patrick
patrick.bastardchezdbmail.com

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel chiffre
fusionne la région des 9 chiffres correspondants avec la valeur du
chiffre sur lequel je clique puis le mette en gras et en taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux que
j'ai trouvés et de ne laisser les "9 candidats" que pour les cases où je
n'ai rien trouvé.

J'ai déjà un premier problème: les macros que je crée s'exécutent
toujours au meme endroit de la grille et non là où j'ai la cellule
active.
Si déjà vous pouvez m'aider sur ce premier obstacle.

Merci,

Bruno








Avatar
Patrick BASTARD
Re,

L'enregistreur me donne ça :
Selection.CurrentRegion.Select
Selection.ClearContents
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection.Font
.Name = "Arial"
.Size = 20
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Selection.Font.Bold = False
End Sub


--
Bien ,

Patrick
patrick.bastardchezdbmail.com

"brunodujura" a écrit dans le message de
news:4b7e6f23$0$2853$
Bonjour Patrick,

En fait j'avance petit à petit...

Au début j'avais:
Range("A1:C3").Select
Selection.ClearContents
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Selection.Font.Bold = True
With Selection.Font
.Name = "Calibri"
.Size = 36
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
End Sub

Maintenant j'ai remplacé Range("A1:C3").Select
par ActiveCell.select
mais je voudrais étendre la sélection aux 2 colonnes de droite et 2 lignes
du dessous (dans la mesure où je clique en haut et à gauche de la région
de 9 cellules)

Si déjà j'arrive à cela je rentrerai les valeurs de chaque case fusionnée
ensuite....

Merci,

Bruno
"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, "brunodujura"

Et si tu communiquais le code que tu utilises actuellement ?
Une piste : sépare chaque zone par une colonne et une ligne vide, ce qui
te permettra de sélectionner la zone courante lors de ton double-clic.

--
Bien ,

Patrick
patrick.bastardchezdbmail.com




--
Bien ,

Patrick
patrick.bastardchezdbmail.com

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel chiffre
fusionne la région des 9 chiffres correspondants avec la valeur du
chiffre sur lequel je clique puis le mette en gras et en taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux que
j'ai trouvés et de ne laisser les "9 candidats" que pour les cases où je
n'ai rien trouvé.

J'ai déjà un premier problème: les macros que je crée s'exécutent
toujours au meme endroit de la grille et non là où j'ai la cellule
active.
Si déjà vous pouvez m'aider sur ce premier obstacle.

Merci,

Bruno








Avatar
brunodujura
Merci Patrick,

J'ai trouvé en fouillant la fonction

Range(Selection, Selection.Offset(2, 2)).Select
qui me permet en cliquant sur le "1" détendre 2 colonnes à droite et 2 en
bas, je pense que je vais rajouter des lignes "IF" suivant que je clique sur
le 1,2 ou 3 etc pour décaler différemment.
Ensuite il faut que je lui fasse mémoriser la valeur sur laquelle j'ai
cliqué.
je crois que je vais y arriver...

ActiveCell.Select
Range(Selection, Selection.Offset(2, 2)).Select
Selection.ClearContents
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Selection.Font.Bold = True
With Selection.Font
.Name = "Calibri"
.Size = 36
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
End Sub

Merci,

Bruno
"Patrick BASTARD" a écrit dans le
message de news:
Re,

L'enregistreur me donne ça :
Selection.CurrentRegion.Select
Selection.ClearContents
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection.Font
.Name = "Arial"
.Size = 20
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Selection.Font.Bold = False
End Sub


--
Bien ,

Patrick
patrick.bastardchezdbmail.com

"brunodujura" a écrit dans le message de
news:4b7e6f23$0$2853$
Bonjour Patrick,

En fait j'avance petit à petit...

Au début j'avais:
Range("A1:C3").Select
Selection.ClearContents
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Selection.Font.Bold = True
With Selection.Font
.Name = "Calibri"
.Size = 36
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
End Sub

Maintenant j'ai remplacé Range("A1:C3").Select
par ActiveCell.select
mais je voudrais étendre la sélection aux 2 colonnes de droite et 2
lignes du dessous (dans la mesure où je clique en haut et à gauche de la
région de 9 cellules)

Si déjà j'arrive à cela je rentrerai les valeurs de chaque case fusionnée
ensuite....

Merci,

Bruno
"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, "brunodujura"

Et si tu communiquais le code que tu utilises actuellement ?
Une piste : sépare chaque zone par une colonne et une ligne vide, ce qui
te permettra de sélectionner la zone courante lors de ton double-clic.

--
Bien ,

Patrick
patrick.bastardchezdbmail.com




--
Bien ,

Patrick
patrick.bastardchezdbmail.com

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel
chiffre fusionne la région des 9 chiffres correspondants avec la
valeur du chiffre sur lequel je clique puis le mette en gras et en
taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux
que j'ai trouvés et de ne laisser les "9 candidats" que pour les cases
où je n'ai rien trouvé.

J'ai déjà un premier problème: les macros que je crée s'exécutent
toujours au meme endroit de la grille et non là où j'ai la cellule
active.
Si déjà vous pouvez m'aider sur ce premier obstacle.

Merci,

Bruno











Avatar
Modeste
Bonsour® brunodujura avec ferveur ;o))) vous nous disiez :

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel
chiffre fusionne la région des 9 chiffres correspondants avec la
valeur du chiffre sur lequel je clique puis le mette en gras et en
taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux
que j'ai trouvés et de ne laisser les "9 candidats" que pour les
cases où je n'ai rien trouvé.



en nommant chaque groupe de 9 cellules case XX ( de 01 à 81)
- un click droit sur une cellule fusionne les 9 cellules de la plage nommée caseXX (taille 36)
- un double click sur un plage fusionnée restitue les 9 cellules d'origine (taille 8)

;o)) testée sur une plage contenant les cases CASE01, CASE02, CASE03
soit 9 lignes et 9 colonnes

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'******* restitue les 9 cellules d'origine (taille 8)
Dim x As Integer, i As Integer, cell As Range
For i = 1 To 3 ' ----normalement 81 pour 27 lignes et 27 colonnes
'****** trouve la plage fusionnée CASE XX
If Not Intersect(Target, Range("case" & Format(i, "00"))) Is Nothing Then
x = 1
'***** restitue les valeurs originelles
With Range("case" & Format(i, "00"))
.UnMerge
.Font.Size = 8
End With
For Each cell In Range("case" & Format(i, "00"))
cell.Value = x
x = x + 1
Next
Exit For
End If
Next
Cancel = True
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'********- fusionne les 9 cellules de la plage nommée caseXX (taille 36)
Dim x As Variant, i As Integer
For i = 1 To 3 ' ----normalement 81 pour 27 lignes et 27 colonnes
'****** trouve la plage CASE XX contenant la cellule
If Not Intersect(Target, Range("case" & Format(i, "00"))) Is Nothing Then
If Not Target.MergeCells Then
x = Target.Value
Application.DisplayAlerts = False
'***** execute la fusion
With Range("case" & Format(i, "00"))
.Merge
.Value = x
.Font.Size = 36
End With
End If

Exit For
End If
Next
Cancel = True
End Sub

nb :
voir sur Excelabo les exemples fournis par les contributeurs de ce forum
;o)))
Avatar
Patrick BASTARD
Superbe, Modeste...

Comme d'hab !

--
Bien ,

Patrick
patrick.bastardchezdbmail.com



"Modeste" a écrit dans le message de
news:%
Bonsour® brunodujura avec ferveur ;o))) vous nous disiez :

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel
chiffre fusionne la région des 9 chiffres correspondants avec la
valeur du chiffre sur lequel je clique puis le mette en gras et en
taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux
que j'ai trouvés et de ne laisser les "9 candidats" que pour les
cases où je n'ai rien trouvé.



en nommant chaque groupe de 9 cellules case XX ( de 01 à 81)
- un click droit sur une cellule fusionne les 9 cellules de la plage nommée
caseXX (taille 36)
- un double click sur un plage fusionnée restitue les 9 cellules d'origine
(taille 8)

;o)) testée sur une plage contenant les cases CASE01, CASE02, CASE03
soit 9 lignes et 9 colonnes

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
'******* restitue les 9 cellules d'origine (taille 8)
Dim x As Integer, i As Integer, cell As Range
For i = 1 To 3 ' ----normalement 81 pour 27 lignes et 27 colonnes
'****** trouve la plage fusionnée CASE XX
If Not Intersect(Target, Range("case" & Format(i, "00"))) Is Nothing
Then
x = 1
'***** restitue les valeurs originelles
With Range("case" & Format(i, "00"))
.UnMerge
.Font.Size = 8
End With
For Each cell In Range("case" & Format(i, "00"))
cell.Value = x
x = x + 1
Next
Exit For
End If
Next
Cancel = True
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As
Boolean)
'********- fusionne les 9 cellules de la plage nommée caseXX (taille 36)
Dim x As Variant, i As Integer
For i = 1 To 3 ' ----normalement 81 pour 27 lignes et 27 colonnes
'****** trouve la plage CASE XX contenant la cellule
If Not Intersect(Target, Range("case" & Format(i, "00"))) Is Nothing Then
If Not Target.MergeCells Then
x = Target.Value
Application.DisplayAlerts = False
'***** execute la fusion
With Range("case" & Format(i, "00"))
.Merge
.Value = x
.Font.Size = 36
End With
End If

Exit For
End If
Next
Cancel = True
End Sub

nb :
voir sur Excelabo les exemples fournis par les contributeurs de ce forum
;o)))
Avatar
brunodujura
Bonjour Modeste,

J'avoue que je n'arrive pas à appliquer ta méthode.
Peux-tu sur mon mail perso m'envoyer ton adresse, cela me permettra de
t'envoyer mon tableau plus quelques explications supplémentaires ?
Je voudrais notamment que le chiffre sur lequel on clique devienne notamment
celui qui sera écrit en taille 36.
Je n'ai pas besoin de revenir en arrière cad défusionner.

Merci,

Bruno
"Modeste" a écrit dans le message de
news:%
Bonsour® brunodujura avec ferveur ;o))) vous nous disiez :

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel
chiffre fusionne la région des 9 chiffres correspondants avec la
valeur du chiffre sur lequel je clique puis le mette en gras et en
taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux
que j'ai trouvés et de ne laisser les "9 candidats" que pour les
cases où je n'ai rien trouvé.



en nommant chaque groupe de 9 cellules case XX ( de 01 à 81)
- un click droit sur une cellule fusionne les 9 cellules de la plage nommée
caseXX (taille 36)
- un double click sur un plage fusionnée restitue les 9 cellules d'origine
(taille 8)

;o)) testée sur une plage contenant les cases CASE01, CASE02, CASE03
soit 9 lignes et 9 colonnes

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
'******* restitue les 9 cellules d'origine (taille 8)
Dim x As Integer, i As Integer, cell As Range
For i = 1 To 3 ' ----normalement 81 pour 27 lignes et 27 colonnes
'****** trouve la plage fusionnée CASE XX
If Not Intersect(Target, Range("case" & Format(i, "00"))) Is Nothing
Then
x = 1
'***** restitue les valeurs originelles
With Range("case" & Format(i, "00"))
.UnMerge
.Font.Size = 8
End With
For Each cell In Range("case" & Format(i, "00"))
cell.Value = x
x = x + 1
Next
Exit For
End If
Next
Cancel = True
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As
Boolean)
'********- fusionne les 9 cellules de la plage nommée caseXX (taille 36)
Dim x As Variant, i As Integer
For i = 1 To 3 ' ----normalement 81 pour 27 lignes et 27 colonnes
'****** trouve la plage CASE XX contenant la cellule
If Not Intersect(Target, Range("case" & Format(i, "00"))) Is Nothing Then
If Not Target.MergeCells Then
x = Target.Value
Application.DisplayAlerts = False
'***** execute la fusion
With Range("case" & Format(i, "00"))
.Merge
.Value = x
.Font.Size = 36
End With
End If

Exit For
End If
Next
Cancel = True
End Sub

nb :
voir sur Excelabo les exemples fournis par les contributeurs de ce forum
;o)))
Avatar
brunodujura
Bonjour,

Pour ceux qui voudraient bien m'aider voilà la grille expliquée ici:

http://cjoint.com/?ctqT6ORIYY

Merci,

Bruno


"Modeste" a écrit dans le message de
news:%
Bonsour® brunodujura avec ferveur ;o))) vous nous disiez :

J'ai créé un tableau de 27 par 27 pour représenter tous les candidats
possibles.
Chaque case de 9 (3 par 3) a les 9 candidats possibles:
123123123123123123 etc....(9 fois la série 123) = 27 cases
456456456456456456 etc....(9 fois la série 456)
789789789789789789 etc....(9 fois la série 789)
et de meme pour les 27 lignes
Je cherche à créer une macro qui si je clique sur n'importe quel
chiffre fusionne la région des 9 chiffres correspondants avec la
valeur du chiffre sur lequel je clique puis le mette en gras et en
taille 36.
Cela me permet de placer les chiffres de la grille originale et ceux
que j'ai trouvés et de ne laisser les "9 candidats" que pour les
cases où je n'ai rien trouvé.



en nommant chaque groupe de 9 cellules case XX ( de 01 à 81)
- un click droit sur une cellule fusionne les 9 cellules de la plage nommée
caseXX (taille 36)
- un double click sur un plage fusionnée restitue les 9 cellules d'origine
(taille 8)

;o)) testée sur une plage contenant les cases CASE01, CASE02, CASE03
soit 9 lignes et 9 colonnes

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
'******* restitue les 9 cellules d'origine (taille 8)
Dim x As Integer, i As Integer, cell As Range
For i = 1 To 3 ' ----normalement 81 pour 27 lignes et 27 colonnes
'****** trouve la plage fusionnée CASE XX
If Not Intersect(Target, Range("case" & Format(i, "00"))) Is Nothing
Then
x = 1
'***** restitue les valeurs originelles
With Range("case" & Format(i, "00"))
.UnMerge
.Font.Size = 8
End With
For Each cell In Range("case" & Format(i, "00"))
cell.Value = x
x = x + 1
Next
Exit For
End If
Next
Cancel = True
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As
Boolean)
'********- fusionne les 9 cellules de la plage nommée caseXX (taille 36)
Dim x As Variant, i As Integer
For i = 1 To 3 ' ----normalement 81 pour 27 lignes et 27 colonnes
'****** trouve la plage CASE XX contenant la cellule
If Not Intersect(Target, Range("case" & Format(i, "00"))) Is Nothing Then
If Not Target.MergeCells Then
x = Target.Value
Application.DisplayAlerts = False
'***** execute la fusion
With Range("case" & Format(i, "00"))
.Merge
.Value = x
.Font.Size = 36
End With
End If

Exit For
End If
Next
Cancel = True
End Sub

nb :
voir sur Excelabo les exemples fournis par les contributeurs de ce forum
;o)))
Avatar
Modeste
Bonsour® brunodujura avec ferveur ;o))) vous nous disiez :

J'avoue que je n'arrive pas à appliquer ta méthode.
Je voudrais notamment que le chiffre sur lequel on clique devienne
notamment celui qui sera écrit en taille 36.
Je n'ai pas besoin de revenir en arrière cad défusionner.



voici une ebauche de ce j'ai mis en oeuvre selon les prescriptions fournies
http://www.cijoint.fr/cjlink.php?file=cj201002/cijn8dR4l1.xls

seules 27 caseXX (3x3) sur les 81 sont déja nommées
tu pourra ensuite remplir la petite grille de gauche selon probleme trouvé sur un magazine
puis en cliquant sur la fléche mettre a jour la grille des candidats
selon l'avancement vers la solution tu peux eliminer des candidats en effacant la valeur choisie
la petite grille de gauche contient des MEFC signalant les doublons
;o)))
je te laisses le plaisir de mettre en place les autres aides à la résolution...

nb :
voir sur Excelabo.net les exemples fournis par les contributeurs de ce
forum ;o)))


1 2