aide sur une macro pour sudoku

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick BASTARD
Le #21229491
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


brunodujura
Le #21229561
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" 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





Patrick BASTARD
Le #21229701
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" 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








Patrick BASTARD
Le #21229831
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" 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" 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








brunodujura
Le #21229941
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" 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" 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" 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











Modeste
Le #21230221
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)))
Patrick BASTARD
Le #21230291
Superbe, Modeste...

Comme d'hab !

--
Bien ,

Patrick
patrick.bastardchezdbmail.com



"Modeste" 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)))
brunodujura
Le #21230921
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" 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)))
brunodujura
Le #21231131
Bonjour,

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

http://cjoint.com/?ctqT6ORIYY

Merci,

Bruno


"Modeste" 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)))
Modeste
Le #21231121
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)))


Publicité
Poster une réponse
Anonyme