Bonjour,

Voici un petit casse-tête pour nous faire travailler les neurones :

Pièce jointe 304842

il nous faut remplir les 9 cases blanches avec les 9 chiffres, pour obtenir une addition.

Puis je demander à Excel (et VBA) de nous aider à trouver une solution ?

Voici ma proposition de recherche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
Option Explicit
 
Sub Sub_123()
  '
  Dim i1 As Integer, i2 As Integer, i3 As Integer
  Dim i4 As Integer, i5 As Integer, i6 As Integer
  Dim i7 As Integer, i8 As Integer, i9 As Integer
  '
  Dim n As Integer, Ok As Integer
  '
  n = 0
  '
  For i1 = 1 To 9
   For i2 = 1 To 9
    For i3 = 1 To 9
     For i4 = 1 To 9
      For i5 = 1 To 9
       For i6 = 1 To 9
        For i7 = 1 To 9
         For i8 = 1 To 9
          For i9 = 1 To 9
            '
            Ok = 1
            '
            If (i1 = i2) Or (i1 = i3) Or (i1 = i4) Or (i1 = i5) Or (i1 = i6) Or (i1 = i7) Or (i1 = i8) Or (i1 = i9) Then Ok = 0
            If (i2 = i3) Or (i2 = i4) Or (i2 = i5) Or (i2 = i6) Or (i2 = i7) Or (i2 = i8) Or (i2 = i9) Then Ok = 0
            If (i3 = i4) Or (i3 = i5) Or (i3 = i6) Or (i3 = i7) Or (i3 = i8) Or (i3 = i9) Then Ok = 0
            If (i4 = i5) Or (i4 = i6) Or (i4 = i7) Or (i4 = i8) Or (i4 = i9) Then Ok = 0
            If (i5 = i6) Or (i5 = i7) Or (i5 = i8) Or (i5 = i9) Then Ok = 0
            If (i6 = i7) Or (i6 = i8) Or (i6 = i9) Then Ok = 0
            If (i7 = i8) Or (i7 = i9) Then Ok = 0
            If (i8 = i9) Then Ok = 0
            '
            If (Ok = 1) And ((i1 * 100) + (i2 * 10) + i3 + _
                             (i4 * 100) + (i5 * 10) + i6 = _
                             (i7 * 100) + (i8 * 10) + i9) Then
             '
             n = n + 1
             '
             Cells((n * 4) - 3, 1).Value = "n°" & n
             Cells((n * 4) - 2, 1).Value = "+"
             Cells((n * 4) - 1, 1).Value = "="
             '
             Cells((n * 4) - 3, 2).Value = (i1 * 100) + (i2 * 10) + i3
             Cells((n * 4) - 2, 2).Value = (i4 * 100) + (i5 * 10) + i6
             Cells((n * 4) - 1, 2).Value = (i7 * 100) + (i8 * 10) + i9
             '
            End If
            '
          Next i9
         Next i8
        Next i7
       Next i6
      Next i5
     Next i4
    Next i3
   Next i2
  Next i1
  '
  MsgBox " n : " & n
  '
End Sub
Merci, de vos remarques . . .

Jean-Christophe . . .