GUESS OR DIE

Signaler
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
-
Messages postés
15
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
6 mars 2012
-
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

Messages postés
15
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
6 mars 2012

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.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
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.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
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.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
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.
Afficher les 18 commentaires