GUESS OR DIE

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 4 juin 2010 à 07:34
mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012 - 9 juin 2010 à 10:42
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/51839-guess-or-die

mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012
9 juin 2010 à 10:42
Bonjour US_30,
j'ai appris de nouvelles choses! pour cela je te dis encore merci! c'est cool de bosser avec toi! j'essaie ton truc pour la fermeture de l'appli.
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
8 juin 2010 à 19:35
Bon après essai, ce que je propose ne marche pas aussi bien que ça pour fermer proprement... Déjà un pb, il faut inverser :

Private Sub CommandButton2_Click()
Call UserForm_QueryClose(true,1)
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If vbYes = MsgBox(" " & Chr(10) & "Voulez-vous Fermer GoD ?" & Chr(10) & " ", vbYesNo + vbQuestion, "Vous nous quittez déjà ?") Then
Unload UserForm1
Workbooks(ActiveWorkbook.Name).Close
End If
End Sub

... mais ce n'est pas encore super en réalité, car on ne revient pas au début... Difficile de travailler avec ce "xlam"... qui n'existait pas dans les versions antérieurs à 2007. (Encore un truc à casse tête, comme Microsoft sait le faire...)

Amicalement,
Us.
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
8 juin 2010 à 19:01
Oui ben, un petit tour dans le code, et je vois plusieurs petites choses à revoir pour un codage plus propre...

=

Dans UserForm1 et 4 : Supprimer le code tout simplement... Il est inutile d'essayer de gérer la fermeture des userform, elles sont automatiques.

Donc :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

' If CloseMode = 0 Then 'Si on clique sur la croix
'MsgBox "Fermez la boite avec le bouton OK"
' Cancel = 1 'Invalide la fermeture
'End If

End Sub

Se transforme en :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

End Sub

(qu'on peut encore totalement effacer, puisqu'il n'y a plus de code.

C'est cela qui gène la fermeture...

=

Les Load ne sont pas nécessaires ici, puisque tu affiche les userforms ensuite... La méthode SHOW se charge de charger en mémoire les userforms...

Donc les Commandbutton :

Private Sub CommandButton4_Click()
Load UserForm2
UserForm2.Show
End Sub

Se transforme en :

Private Sub CommandButton4_Click()
UserForm2.Show
End Sub

=

Le code de Commandbutton2 peut se simplifier simplement en :

Private Sub CommandButton2_Click()
If vbYes = MsgBox(" " & Chr(10) & "Voulez-vous Fermer GoD ?" & Chr(10) & " ", vbYesNo + vbQuestion, "Vous nous quittez déjà ?") Then
Unload UserForm1
Workbooks(ActiveWorkbook.Name).Close
End If
End Sub

En effet, le :
Dim a As Variant
n'est pas nécessaire, puisque par défaut toute variable non déclarée est en Variant... En plus, "a" n'est utilisé qu'une fois... Donc faire directement le test va plus vite, enfin, est plus clair surtout...

Ensuite l'autre variable pour ActiveWorkbook.Name pour la même raison n'est pas vraiment nécessaire...

La répétition de : Workbooks(ActiveWorkbook.Name).Close en 3 fois... ben une fois suffit... -:);

=

En clair le codage pour Userform1, se résume à ceci :

Private Sub CommandButton1_Click()
STARTG
End Sub

Private Sub CommandButton2_Click()
If vbYes = MsgBox(" " & Chr(10) & "Voulez-vous Fermer GoD ?" & Chr(10) & " ", vbYesNo + vbQuestion, "Vous nous quittez déjà ?") Then
Unload UserForm1
Workbooks(ActiveWorkbook.Name).Close
End If
End Sub

Private Sub CommandButton3_Click()
GoD
End Sub

Private Sub CommandButton4_Click()
UserForm2.Show
End Sub

Private Sub CommandButton5_Click()
UserForm3.Show
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Call CommandButton2_Click
End Sub

Private Sub CommandButton6_Click()
UserForm4.Show
End Sub

=

Bon c'est qu'un début, le reste peut être également amélioré... JE te laisse voir... Notamment, il me semble que tu utilise les deux cellules A5, A6 pour y mettre les valeurs Mini et Maxi... On peut employer deux variables Global, avec "GLOBAL" c'est une piste de réflexion...

Amicalement,
Us.
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
8 juin 2010 à 18:09
Dans l'immédiat, non. Et c'est presque l'effet que je recherche pour une autre application, en plus... -:);

J'vas cherché...

Amicalement,
Us.
mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012
8 juin 2010 à 12:56
Salut US_30
J'ai mis un bouton pour fermer le classeur (bouton avec une croix rouge), mais la fermeture du classeur n'entraine pas la fermeture de l'application excel.
Que j'utilise "Workbooks(NomClasseur).Close" ou "Application.Window(1).close" c'est le même résultat !

Tu as une idée?
cordialement
Max
mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012
8 juin 2010 à 12:44
Salut US_30,
merci pour les remarques et l'amélioration.
Tu as une idée pour "arrêter proprement l'application"?
Cordialement,
Max
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
8 juin 2010 à 12:25
Ouais, écrit en tout petit... mais cela ne change pas ma remarque...

Petit remarque sur le code : tout le monde ne met pas tes fichiers dans "program files", surtout que l'enregistrement se fait dans Mes documents... Bref, petite amélioration :

Sub cust()
Workbooks.Open Filename:=ThisWorkbook.Path & "\customGoD.xlam"
End Sub

De plus, rien n'est prévu pour arrêter proprement l'application ?

Amicalement,
Us.
mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012
8 juin 2010 à 12:10
Salut US_30,
Regarde bien au niveau du volet "source" des informations sur ma source juste après le volet "Description", j'ai bien pris le soin de mettre ce mot de passe.
Cordialement,
Max
mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012
8 juin 2010 à 12:01
Salut SHAYW,
Dans la feuille Thisworkbook du code VBA, supprime ou met en commentaire "F.Protect" (avant dernière ligne de la routine "Private Sub Workbook_Open()") puis enregistre cette modif et essais encore. Si il y a encore problème, vérifie qu'Excel 2003 reconnais bien la fonction RANDBETWEEN.

Cordialement,
Max
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
8 juin 2010 à 11:45
Bonjour,

MJTCHANA, le mot de passe n'était précisé nulle part, sauf erreur... mais il est surtout inutile ici. Ici c'est un site de partage, donc il n'a pas lieu de bloquer l'accès au VBA (même si on peut facilement le faire sauter).
Au delà de l'application, on s'intéresse aussi au codage ici...

Amicalement,
Us.
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
8 juin 2010 à 11:28
Salut

Je reçois une erreur runtime error 438 object doesn't support
this property or method
et le debugger marque F.Cells(4, 1).Value = WorksheetFunction.RandBetween(min, max)
du sub STARTG
mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012
8 juin 2010 à 10:29
Bonjour US_30,
Le mot de passe pour le code VBA c'est: 11061984. Je crois l'avoir précisé dans les infos sur cette source.
------------------------------------------------------
Bonjour SHAYW,
Le fichier XLAM est un complément de macro pour personnaliser le ruban d'Excel 2007. La personnalisation de l'interface d'Excel 2003 est nettement plus facile vu qu'on n'a pas besoin de bosser le XML, le simple code VBA suffit. Donc si tu travail sur Excel 2003, en lançant le classeur "Guess or Die" tu ne verras pas le code XML agir (par le biais du fichier .XLAM). Mais en principe tu devrais pouvoir jouer sans problème. Vu que tu as le mot de passe du code à présent (11061984), Tu peux sur Excel 2003 bloquer l'exécution des macros, puis ouvrir le code VBA de "Guess or Die". Ensuite dans la feuille de code "Thisworkbook", tu supprime ou met en commentaire la routine "cust" de custumization de l'interface. Ensuite tu enregistres cette modif, puis tu autorise l'exécution des macros et enfin tu fermes le classeur "Guess or Die". Alors en re ouvrant "Guess or Die" tu pourras jouer tranquillement.

Cordialement,
MAX
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
8 juin 2010 à 00:07
Bonsoir
Je n'ai pas réussi à exécuter
j'ai bien crée un directory GoD et y ai copié "customGoD.xlam"
Comme je n'ai pas l'excel 2007 mais 2003 je n'ai pas réussi
à ouvrir l'application
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
7 juin 2010 à 23:07
Bonsoir,

Le code VBA est avec un mot de passe ?! il faut le retirer...

Amicalement,
Us.
mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012
4 juin 2010 à 11:20
Je viens de le constater moi aussi. Je corrige ça tout de suite
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
4 juin 2010 à 11:04
Salut
Il n'y a pas de GoD.zip
ni de fichier.exe
mjtchana Messages postés 15 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 6 mars 2012
4 juin 2010 à 09:41
En dézippant le fichier zip GoD.zip tu auras un fichier exe puis il te suffit de l'installer. ça marche bien sur ma machine et je l'ai fait essayé par mes collègue (sur leurs machine) avant de déposer sur Codes-sources
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
4 juin 2010 à 07:34
EUH tu n'aurais pas oublié un truc en postant ta source ? ^__^
Rejoignez-nous