DEMINEUR SOUS EXCEL

jjDai Messages postés 291 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 13 mars 2015 - 27 févr. 2011 à 11:26
klaston Messages postés 1 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 19 août 2011 - 19 août 2011 à 10:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52860-demineur-sous-excel

klaston Messages postés 1 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 19 août 2011
19 août 2011 à 10:06
quand tu fais un démineur personnalisé avec par exemple 40x40 pour 1700 mines (ce qui est volontaire) le jeu plante.
Une condition n'aurait pas été de trop sur le clic "nouveau jeu" pour eviter un ramage infini d'excel
rtoukkys Messages postés 11 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 23 mai 2011
7 mars 2011 à 16:24
Merci! J'ai pas remarqué! VBA, c'est nouveau pour moi, c'est la deuxième fois que j'ai fait quelque chose sur VBA! Merci tout le monde!
jjDai Messages postés 291 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 13 mars 2015
3 mars 2011 à 19:18
Bonjour
Le right click en vba c'est "Worksheet_BeforeRightClick"
dans l'objet feuille.
JJDAI
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
3 mars 2011 à 15:16
Comme on dit "la critique est aisée mais l'art est difficile"
je suis sur qu'on peut gerer le "right click"
demande au forum (moi et vba on s'entend pas lol)
et aussi tu n'indiques pas combien de mines il faut déminer
je compare avec le demineur du windows
Bonne prog
rtoukkys Messages postés 11 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 23 mai 2011
2 mars 2011 à 21:20
JJDAI>Mmmmh, j'ai pas su qu'il y a l'évènement OnTime avec l'objet Application... C'est plus pratique, merci!
rtoukkys Messages postés 11 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 23 mai 2011
2 mars 2011 à 21:12
JJDAI> Merci pour toutes tes remarques. Dès que j'aurai le temps, je ferai les rectification et l'amélioration du code.
SHAYW> Marquer la mine... J'y ai pensé aussi mais pas j'ai pas pu trouver comment gérer le Clic-droit de la souris. Pour montrer toutes les mines, ce n'est pas difficile à intégrer dans le code, ... dans la prochaine mise à jour peut-être. Sinon, je te remercie aussi!
medjahedScript> Merci pour le compliment
medjahedScript Messages postés 14 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 7 mars 2011
1 mars 2011 à 18:33
Bon programmation
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
27 févr. 2011 à 15:49
Salut
ajoute une petite aide
comment je marque une mine ?
Si je marche sur une mine le jeu s'arretent alors dévoile toutes les mines
bonne prog
jjDai Messages postés 291 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 13 mars 2015
27 févr. 2011 à 11:26
Bonjour
Quelques remarques en vrac
------------------------------------------------------------------
Masquer les autre feuilles serait un +
feuil2.Visible=xlSheetVeryHidden
feuil3.Visible=xlSheetVeryHidden

------------------------------------------------------------------
renommer "feuil2" dans l'interface en "shJeu" par exemple permet
d'utiliser directement shJeu comme ojet feuille
shjeu.cells(1.1)= 99
c'est plus pratique que
Worksheets("JEU").cells(1.1)= 99

Il est possible de saisir des caractères dans les cellules, et surtout dans les cellules externes à la zone;
L'utilisation de la protection des cellules pourrait être mise à profit.
voir la restriction de la zone d'utilisation et la suppression des barres de défilement.

------------------------------------------------------------------
Pour effacer une zone il y a plus efficace qu'une double boucle:
Worksheets("MINES").Range("A1:Z50").ClearContents
ou
feuil2.Range("A1:Z50").ClearContents

------------------------------------------------------------------
quand un autre classeur est ouvert, impossible de basculer dessus.

--------------------------------------------------------------------

Pour le timer, une boucle sans fin n'est pas une bonne idée
l"utilisation de onTime est plus approprié
exemple

Sub testTimer()
Static h As Long

Application.OnTime Now + TimeValue("00:00:01"), "testTimer"
h = h + 1
Debug.Print "action-" & h
End Sub

L'exécution de cette fonction affichera le compteur h dans la fenêtre d'exécution toutes les seconde
Ça évite l'utilisation de doevents, et il n'y a pas de calcul de temps a faire.

ce qui pourrait être adapté comme ça pour le miner

Sub DemarrerTemps_start()
dateDebut = Now
Application.OnTime Now + TimeValue("00:00:01"), "DemarrerTemps"
TimerEnabled = True
End Sub

Sub DemarrerTemps()

Tps_Str = Format(Now - dateDebut, "mm:ss")
Worksheets("JEU").Shapes(4).TextFrame.Characters.Text = Tps_Str
End If
If TimerEnabled Then
Application.OnTime Now + TimeValue("00:00:01"), "DemarrerTemps"
End If
End Sub

--------------------------------------------------------------------
L'ajout de "Option Explicit" au début de chaque module permet de s'assurer que toutes les variable sont déclarées

--------------------------------------------------------------------
Y a pas mal de petites choses à améliorer, mais c'est un bon début
JJDAI
Rejoignez-nous