VBA programme

Résolu/Fermé
palban - 5 févr. 2016 à 18:32
 palban - 8 févr. 2016 à 16:15
Bonsoir, j'ai un exo en VBA qui me demande d'afficher toutes les possibilités pour les pions blanc et noir dans le jeu othello.

Mon code arrive a afficher quelque chose mais c'est pas les bons résultats et ça le fait que sur une partie du tableau.

Merci de votre réponse
Voici mon travail :
Sub evaluer_une_case(ByVal ligne As Integer, ByVal colonne As Integer, ByVal num_joueur As String)

If num_joueur = 1 Then
monpion = ChrW(&H24FF)
Else
monpion = ChrW(&H24EA)
End If


Set plateau = Sheets("feuil1").Range("B2:I9")


For j = colonne + 1 To 8 'vers la droite
If plateau.Cells(ligne, j).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, j).Value = monpion Then
nb_pion_cap = nb_pion_cap + (j - colonne - 1)
Exit For
End If
Next j
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub


For j = colonne - 1 To 8 'vers la gauche
If plateau.Cells(ligne, j).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, j).Value = monpion Then
nb_pion_cap = nb_pion_cap + (j - colonne + 1)
Exit For
End If
Next j
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub


For i = ligne - 1 To 8 'vers le haut
If plateau.Cells(i, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(i, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + (i - ligne + 1)
Exit For
End If
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub

For i = ligne + 1 To 8 'vers le bas
If plateau.Cells(i, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(i, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + (i + ligne - 1)
Exit For
End If
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub

For i = ligne - 1 To 8 'vers la diagonale haut gauche
For j = colonne - 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i - ligne + 1) + (j - colonne + 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap_total
Exit Sub

For i = ligne + 1 To 8 'vers la diagonale bas gauche
For j = colonne - 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i + ligne - 1) + (j - colonne + 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub

For i = ligne - 1 To 8 'vers la diagonale haut droite
For j = colonne + 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i - ligne + 1) + (j - colonne - 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub

For i = ligne + 1 To 8 'vers la diagonale bas droite
For j = colonne + 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i + ligne - 1) + (j - colonne - 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub


End Sub




Sub evaluer_les_cases()

num_joueur = InputBox("Saisir le numéro du joueur (1: noir, 2 : blanc)")

Set maplage = Sheets("feuil1").Range("B2:I9")

For ligne = 1 To 8
For colonne = 1 To 8
If maplage.Cells(ligne, colonne).Value = "" Then

Call evaluer_une_case(ligne, colonne, num_joueur)

End If
Next colonne
Next ligne


End Sub

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 686
5 févr. 2016 à 22:51
Bonjour,

Si tu nous avais mis ton classeur cela aurait été plus profitable.


Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
0
http://www.cjoint.com/c/FBgjKuXDvNo
Merci pour l'information :) et merci de votre aide
0
http://www.cjoint.com/c/FBgjKuXDvNo
Merci pour l'information :)
0
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 1 431
6 févr. 2016 à 23:56
Bonjour tous,
Le temps de découvrir les règles du jeu Othello.......dès lundi...!
Salutations
Le Pingou
0
Merci, de l’intérêt que vous portez à mon cas. Je dois rendre cet exo lundi soir au plus tard. C'est gentil de m'aider aussi vite.
Après le programme a pour but de savoir l'ensemble des possibilités qu'a chaque couleur autour de lui. par exemple 1, 2, 3, sachant que c'est comme au dame les blancs peuvent manger les noires tout autour de lui (devant, derrière, sur les diagnales et à droite et à gauche)

Cordialement
0
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 1 431
8 févr. 2016 à 14:00
Bonjour,
Affichage des possibilités selon choix du bouton de commande (Po……noir ou Pos…..blanc) et vous recevez les cases possibles avec le nombre de capture possible (le 0 n’est pas affiché).
Note : votre bouton de commande est désactivé.
A vous de contrôler dans le détail si tout est correct.
Ma proposition : https://www.cjoint.com/c/FBim5ZZ7iSs

0
Merci beaucoup pour le programme que vous avez réalisé. Je comprends mieux d'ou viennent mes erreurs. J'ai commencé VBA au mois de janvier donc c'est un peu compliqué pour avoir la bonne logique;

je vous remercie beaucoup encore et de votre rapidité et de votre aide pour ce cas.
Cordialement
0