"End" sur UF

Résolu/Fermé
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - 15 sept. 2015 à 23:27
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - 18 sept. 2015 à 21:37
Bonsoir le forum

J'ai fait une macro "Import" comprenant plusieurs UF et plusieurs Call faisant appel à d'autres procédures.

Connaissez-vous un truc pour qu'en cliquant sur la croix rouge des UF, on quitte la macro principale, ou encore mieux, qu'on lance une autre macro "Reaffiche".

Exemple :

Sub Import()

Call Etape1
UFSelect1.Show
UFSelect2.Show
Call Etape1

End sub

Sub Reaffiche()
Sheets("Total").Select
Range("6:46").Select
Selection.RowHeight = 12.75
End Sub


Par avance merci pour votre aide précieuse.
Bonne soirée



14 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 sept. 2015 à 07:50
Bonjour,

Comme ceci:

Private Sub test()
MsgBox "Terminé"
End Sub

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

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 sept. 2015 à 08:18
A consulter pour plus amples informations

https://silkyroad.developpez.com/VBA/UserForm/

@+
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
16 sept. 2015 à 09:38
Bonjour Le Pivert

Merci pour l'aide.

J'ai essayé d'adapter mais j'ai quelques soucis :

En m'inspirant de ton code et de ce que j'ai vu sur ton site, j'ai ajouté à tous mes UF le code :
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
MsgBox "Opération abandonnée", vbInformation, ""
End
End Sub


Dans ce cas, l'UF se ferme bien mais la macro principale ("Import") continue.

Serait-il possible de placer un code dans "Import" qui arrêterait l'exécution de cette macro principale (Call et UF compris), lorsqu'on clique sur la croix rouge d'un des UF ?

Pardon mais je veux vraiment comprendre !
D'avance merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 16/09/2015 à 11:00
Bonjour

A voir selon ton contexte

"End" rend la main au systeme pour Toutes les macros> en cours

Michel
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 sept. 2015 à 11:15
bonjour michel_m,

Sur le site indiqué, tout est expliqué!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
16 sept. 2015 à 12:10
Excuse moi d'^tre inntervenu dans TA discussion.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
17 sept. 2015 à 08:51
Il n'y a pas de mal, mais je pense que le site est très bien fait et se suffit à lui même. Il faut juste lire les différents paragraphes.

Cordialement
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 sept. 2015 à 11:11
Tu n'as pas tout lu:

https://silkyroad.developpez.com/VBA/UserForm/#LIII-B

Form principale UserForm1
Autre Form UserForm2

a mettre dans UserForm2:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  UserForm2.Hide
 Unload UserForm1
End Sub

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
Modifié par touroul le 16/09/2015 à 13:03
Merci d'avoir pris ce problème à coeur c'est sympa.

C'est réglé, je n'avais pas mis le End au bon endroit :

Voici mon code à mettre dans chaque UF (si ça peut servir) :
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
MsgBox "Opération abandonnée", vbInformation, ""
Call Reaffiche
End
End Sub


Bonne journée à vous et encore merci
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
16 sept. 2015 à 14:49
Oups, j'ai fermé un peu vite.

Je ne sais trop pourquoi, mais depuis ce code, lorsque je clique sur Suivant pour passer au reste de la macro principale, il me remet tout de suite sur le MsgBox "Opération abandonnée" et la macro s'arrête.
Un peu comme si le UserForm_QueryClose était prioritaire sur le CommandButton1_Click.

Voici le code des UF :

Private Sub CommandButton1_Click()
Unload UFSelect1
End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
MsgBox "Opération abandonnée", vbInformation, ""
Call Reaffiche
End
End Sub


Merci d'avance, on va y arriver
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
16 sept. 2015 à 21:21
Un p'tit up
Please !
Mes UF se ferment en appuyant sur suivant !
Merci !
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
17 sept. 2015 à 08:49
Dans ton cas, il ne faut pas utiliser End. Je t'ai donné un exemple à utiliser.
Avec End tu stoppes tout!
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
17 sept. 2015 à 14:07
Bonjour Le Pivert

J'avais essayé le code proposé plus haut, mais il n'agissait que sur le UF rattaché et non sur l'ensemble de la macro.

Je me permets d'envoyer un fichier exemple :
Lorsque je clique sur Suivant, l'UF se ferme.
Par contre, lorsque je clique sur la croix, tout s'arrête, et ça c'est correct !

Ça sera peut-être plus compréhensible ainsi :

http://www.cjoint.com/c/EIrmfZtsxYw

A plus, merci !
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
17 sept. 2015 à 14:54
Je n'ai pas très bien compris ce que tu voulais faire. Voici une correction pour que tes macros se déclenchent. J'ai mis des MsgBox pour confirmer:

http://www.cjoint.com/c/EIrm0u41SUQ
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
17 sept. 2015 à 15:00
J'ai oublié de corriger la macro Import:

Sub Import()
Call MacroSuppr
UserForm1.Show
End Sub
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
17 sept. 2015 à 18:32
Merci bien Le Pivert

Ça fonctionne mieux mais pas encore top.
J'ai compris que tu lançais l'UF2 par appel du bouton Suivant dans l'UF1, ça c'est malin, je n' y avais pas pensé.

Par contre, le bouton Suivant de l'UF2 abandonne la procédure, donc tu rencontres le même problème que moi.

@ plus
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
17 sept. 2015 à 18:42
Par contre, le bouton Suivant de l'UF2 abandonne la procédure, donc tu rencontres le même problème que moi.


le problème est que je ne sais pas ce que tu veux faire avec ce bouton suivant dans l'UserForm2.
Où veux-tu aller?
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
18 sept. 2015 à 10:29
Bonjour Le Pivert

Ne crois pas que j'ai lâché l'affaire ! Je continue mes essais, je posterai quand j'y serai parvenu dans ma macro qui fait 3 pages, je dois tout tester.
@plus
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
18 sept. 2015 à 13:04
Je reviens là-dessus malgré le délai pour comprendre.

Je résume déjà l'objectif : dans ma macro principale "Import", il y a différentes étapes et quelques UF à ouvrir dans cet ordre :

Sub Import()
Call Etape1
UserForm1.Show
Call Etape2
UserForm2.Show
End sub


Dans chaque UF, je cherche comment utiliser le UserForm_QueryClose pour lancer une macro "Reaffiche" en abandonnant la macro "Import" (par fermeture à la croix rouge).

Dans ta proposition, tu mets les Call dans chaque UF, ce qui me pose problème.

Comment enchaîner les étapes ? Dans l'exemple ci-dessous, le bouton Suivant de l'UF1 abandonne l'opération :
https://www.cjoint.com/c/EIsld1LReh2

Ça doit être assez basique mais ça me dépasse.

D'avance merci pour le suivi :)
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
18 sept. 2015 à 13:57
Dans l'UserForm1:

Private Sub CommandButton1_Click()
UserForm2.Show 'à remettre en macro Import si possible
Unload UserForm1
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
MsgBox "Opération abandonnée", vbInformation, ""
Call Reaffiche
End
End Sub


Dans l'UserForm2:

Private Sub CommandButton1_Click()
Unload UserForm2
End Sub
Private Sub UserForm_Initialize()
Etape2
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
MsgBox "Opération abandonnée", vbInformation, ""
Call Reaffiche
End
End Sub



0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
Modifié par touroul le 18/09/2015 à 21:38
Aaaaaaah ... ça y est enfin après quelques palabres et ton aide.

Dans le module principal "Import" j'ai mis le début :
Sub Import()
UFSelect1.Show
End Sub


Dans l'UF1 j'ai mis :
Private Sub CommandButton1_Click()
Call Macro1
UserForm1.Hide
UserForm2.Show
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then MsgBox "Opération abandonnée", vbInformation, ""
Call Reaffiche
End
End Sub


Dans l'UF2 j'ai mis :
Private Sub CommandButton1_Click()
Call Macro2
Userform2.Hide
Userform3.Show
End Sub


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then MsgBox "Opération abandonnée", vbInformation, ""
Call Reaffiche
End
End Sub


Dans le dernier UF j'ai mis :
Private Sub CommandButton1_Click()
Unload Useform3
End Sub

Private Sub UserForm_Click()

End Sub


Et tout réagit comme souhaité.
Pas facile la subtile différence entre UF.Hide et Unload UF !

Je ferme pour de bon.
Merci bien Le Pivert !
0