Bonjour à tous,

Je suis entrain de programmer une IA pour bataille navale sur Excel, pour celà j'essaie d'avoir une IA la plus intelligente possible, ainsi, je fais une fonction qui lorsqu'elle touche un bateau elle va essayer de continuer de tirer sur celui ci. Le problème est le suivant : le programme plante sur les lignes en rouge, dans mon code il me dis que la méthode cells de l'objet worksheet a échouée, sauriez vous m'aider ?

Cordialement

Précision DTL et DTC sont les coordonées de la case du bateau qui est touchée, je l'ai passée en variable globale car ma fonction tir IA est appelée à chaque fois que j'appuie sur un bouton.

L'idée est que lorsque l'IA touche une case il va regarder ce qu'il y a en haut, à gauche à droite en bas, etc.

Bien sur je n'ai pas joint, tout monde car il est trop long, mais celà devrait suffir


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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
If (detection = True) Then

presence = False

While (presence = False)

ligne = DTL
colonne = DTC - 1

If (Sheets("Jeu").Cells(colonne, ligne).Value = "X" Or Sheets("Jeu").Cells(colonne, ligne).Value = "O") Then
        
        If (Sheets("Jeu").Cells(colonne, ligne).Value <> "" And Sheets("Jeu").Cells(colonne, ligne).Value <> "X" And Sheets("Jeu").Cells(colonne, ligne).Value <> "O") Then
        presence = True
        End If
        
        derniertest = 1
        
    End If
    
    If (Sheets("Jeu").Cells(colonne, ligne).Value = "X" Or Sheets("Jeu").Cells(colonne, ligne).Value = "O") Then
        ligne = DTL + 1
        colonne = DTC + 1
        
        If (Sheets("Jeu").Cells(colonne, ligne).Value <> "" And Sheets("Jeu").Cells(colonne, ligne).Value <> "X" And Sheets("Jeu").Cells(colonne, ligne).Value <> "O") Then
        presence = True
        End If
        
        derniertest = 2
        
    End If

    If (Sheets("Jeu").Cells(colonne, ligne).Value = "X" Or Sheets("Jeu").Cells(colonne, ligne).Value = "O") Then

        ligne = DTL - 1
        colonne = DTC + 1
        
         If (Sheets("Jeu").Cells(colonne, ligne).Value <> "" And Sheets("Jeu").Cells(colonne, ligne).Value <> "X" And Sheets("Jeu").Cells(colonne, ligne).Value <> "O") Then
         
        presence = True
        
        End If
        
        derniertest = 3
    End If

    If (Sheets("Jeu").Cells(colonne, ligne).Value = "X" Or Sheets("Jeu").Cells(colonne, ligne).Value = "O") Then

        ligne = DTL - 1
        colonne = DTC - 1
        
        If (Sheets("Jeu").Cells(colonne, ligne).Value <> "" And Sheets("Jeu").Cells(colonne, ligne).Value <> "X" And Sheets("Jeu").Cells(colonne, ligne).Value <> "O") Then
        
        presence = True
        
        End If
        
        derniertest = 4
        
    End If
Wend

End If

If (detection = False) Then

While (Sheets("Jeu").Cells(colonne, ligne).Value = "X" Or Sheets("Jeu").Cells(colonne, ligne).Value = "O")
    colonne = Int(10 * Rnd) + 3
    ligne = Int(10 * Rnd) + 3
Wend

End If

If (Sheets("Jeu").Cells(colonne, ligne).Value = "") Then

    Sheets("Jeu").Cells(colonne, ligne).Value = "O"

End If

If (Sheets("Jeu").Cells(colonne, ligne).Value <> "" And Sheets("Jeu").Cells(colonne, ligne).Value <> "X" And Sheets("Jeu").Cells(colonne, ligne).Value <> "O") Then

    Sheets("Jeu").Cells(colonne, ligne).Value = "X"
    detection = True
    DTC = colonne
    DTL = ligne

End If