XL 2016 Formulaires Modal - non Modal

vgendron

XLDnaute Barbatruc
Bonjour à toutes et tous

j'ai une question d'ordre général sur le fonctionnement des formulaires...

un formulaire MODAL, une fois activé avec sa méthode show reste à l'écran, et aucun clic sur le classeur n'est autorisé.. on peux juste cliquer sur le formulaire actif..
jusque la. tout va bien...

si ce formulaire "USF_second" modal a été activé à partir d'un autre formulaire "USF_Principal", lui aussi modal....(si j'ai bien vu..pour VBA : i un formulaire est modal.. alors tout le monde doit etre modal)
Que se passe t il lorsque le USF_Second est déchargé avec la méthode unload.. ?

à priori, le USF_Principal est à nouveau actif... ok.. mais... y a t il un évènement (_activate _ afterchange.......) qui soit automatiquement relancé??
ou un évènement lié au flex..??
cet évènement ne serait pas lancé dans le cas de USF non modaux..??

tout ca parce que..
j'ai un USF_Principal qui contient un FLEXgrid et un bouton "Modifier Contenu"
après avoir sélectionné une cellule dans le FlexGrid, lorsque je clique sur un bouton "modifier Contenu" , le USF_Second s'ouvre et je peux saisir un nouveau contenu dans un TextBox - bouton "Valider"
dans ce bouton....PAS de code disant de mettre à jour le Flex pas plus que le fichier excel !!
le contenu du Text box est mis dans une variable globale

lorsque mes formulaires sont en non modal: AUCUNE mise à jour n'est effectuée
lorsque mes formulaires sont en MODAL: les modifs sont reportées !! ?? !!
 

Patrice33740

XLDnaute Impliqué
Bonjour,

Je ne comprends pas trop trop ton problème.
Qu'ils soient modaux ou non, avec ton bouton valider de l'USF_Second, il suffit de modifier directement le Flex de l'Usf_principal (avant de décharger USF_Second).

PS : J'évite d'utiliser des variables Globales.
 

dysorthographie

XLDnaute Accro
Bonjour,
si je comprends bien, récupérer les information du second formulaire pour updater FLEXgrid ?

dans ton second formulaire il ne faut pas le fermer mais le dessiccative « Hide » pour rendre la main à sont appelant!
Code:
Private Sub Valider_Click() 'Usf Enfant
Me.Hide
End Sub
Code:
Sub OvrirUserForm1() 'Parent
Dim Usf As New UserForm1
Usf.Show vbModal
Debug.Print Usf.TextBox1
Unload Usf
End Sub
 

vgendron

XLDnaute Barbatruc
Bonjour,
Je reviens ici. je n'avais pas donné suite à vos réponses car j'était passé sur autre chose..

@Patrice33740
Modal ou non Modal.. ca ne fait pas la meme chose..
j'ai le cas sur d'autres formulaires qui ne se mettent pas à jour entre eux.. et pourtant.. le second modifie bien directement le contenu du premier..

@dysorthographie
l'ennui, c'est que je VEUX que le second formulaire se ferme et soit déchargé.. sinon. je vais me retrouver avec 60 formulaires ouverts et masqués....


Ce que je constate c'est:
en MODAL: que j'active pour le mode "Utilisation de l"appli"
tout se passe bien: Un premier formulaire m'affiche dans un control (une textBox pour l'exemple) le contenu du fichier excel.
le second formulaire (appelé à partir du 1er) je peux modifier la TextBox
Lorsque le second formulaire est fermé (UNLOAD), la modif est bien reportée dans la TB du premier formulaire

en NON modal (que j'utilise pour développer et ainsi suivre les macros entre les différents formulaires et différentes feuilles DES classeurs ouverts)
Meme procédure, sauf qu'au Unload du second formulaire, le Premier reste avec sa TB initiale...

TOUT se passe comme si: en MODAL, le fait de rebasculer sur le premier formulaire, le contenu du control était mis à jour
alors qu'en NON MODAL.. pas de "refresh"
entre le MODAL et le NON MODAL il y a un évènement qui est lancé ou pas...
je vais aller voir du coté du "redraw"...?? meme s'il me semble que c'est pour la forme des controls.. et pas leur contenu..
 

vgendron

XLDnaute Barbatruc
Tu n'as pas bien regarder mon code car c'est bien le formulaire appelant qui referme le formulaire appelé et vu que le formulaire appelé l'est en modal...
Code:
Usf.Show vbModal
Debug.Print Usf.TextBox1
Unload Usf
ah oui exact, ca m'avait échappé, désolé

je vais voir comment je peux régler tout ca..
avant.. je crois que je ne vais pas pouvoir y échapper..
je suis en train de tracker TOUS les sheet.activate du code pour les passer en with..

1) je suis sur que ca va regler pas mal de soucis que je rencontre ici et la
2) ca va éviter d'avoir une appli "sapin" de noel :-D
en tout cas merci
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

lorsque mes formulaires sont en non modal: AUCUNE mise à jour n'est effectuée
lorsque mes formulaires sont en MODAL: les modifs sont reportées !! ?? !!
À mon avis, il y a forcément un bout le code qui est exécuté (par exemple la macro Acitvate de ton formulaire principal) car sinon je ne vois pas comment le fait d'affecter une valeur à une variable pourrait changer le contenu d'une TextBox. ;)

As-tu essayé une exécution en pas à pas, ou mis des points d'arrêt à différents endroits de ton code susceptibles de modifier ladite TextBox ?
 

Statistiques des forums

Discussions
314 628
Messages
2 111 341
Membres
111 107
dernier inscrit
cdel