jjDai
Messages postés291Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention13 mars 2015
-
27 févr. 2011 à 11:26
klaston
Messages postés1Date d'inscriptionmercredi 20 avril 2011StatutMembreDernière intervention19 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.
klaston
Messages postés1Date d'inscriptionmercredi 20 avril 2011StatutMembreDernière intervention19 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és11Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention23 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és291Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention13 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és3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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és11Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention23 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és11Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention23 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és14Date d'inscriptionmercredi 22 décembre 2010StatutMembreDernière intervention 7 mars 2011 1 mars 2011 à 18:33
Bon programmation
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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és291Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention13 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
19 août 2011 à 10:06
Une condition n'aurait pas été de trop sur le clic "nouveau jeu" pour eviter un ramage infini d'excel
7 mars 2011 à 16:24
3 mars 2011 à 19:18
Le right click en vba c'est "Worksheet_BeforeRightClick"
dans l'objet feuille.
JJDAI
3 mars 2011 à 15:16
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
2 mars 2011 à 21:20
2 mars 2011 à 21:12
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
1 mars 2011 à 18:33
27 févr. 2011 à 15:49
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
27 févr. 2011 à 11:26
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