Reloader un userform suite a integration de donnée
Bonjour à tous,
j'ai un premier formulaire faisant appel à un 2ème form pour intégrer des données dans ma base
le 2ème form s'affiche (les deux en même temps) afin d'entrer les données à enregistrer.
seulement voila les données s'enregistre bien et le 2ème form se ferme avec la fonction unload
toutefois j'aimerais désormais que le userform 1 toujours apparent se mette à jour automatiquement afin que les nouvelles données enregistrées s'affiche directement sans avoir à le relancer ..
j'ai tenté avec userform1.repaint mais cela ne fonctionne pas..
aussi ou me faut il indiquer ce systeme de reload et comment?
sur le userform1 , depuis le userform2 ???
une idée s'il vous plait?
Bonjour,
pour que les données enregistrées s'affichent, il faut "relancer" la ( les ) sub qui le permettent , depuis l'userform2 avant son unload.
Tout dépend donc de l'organisation de l'userform1 ! L'affichage provient-il de Private Sub UserForm_Initialize() ou de Private Sub UserForm_Activate() ou de Private Sub CommandButton1_Click() ou bien ...
A voir dans le code de l'USF1
A+
Bonjour AlgoPlus
Merci pour ce premier retour
je fais appel à mon userform1 via un bouton
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Apres dans mon userform1 j'ai mon initialize
Private Sub UserForm_Initialize()
Acronym = Sheets("Projects' View").Range("G2")
Completeform
End Sub
je fais appel mon userform2 depuis mon userform1 via un bouton insert
le bouton insert permet l'insertion des données dans la base
une fois l'enregistrement procédé je fini par
Unload Me
End With
End Sub
ps: je réussi via une méthode peu catholique du fait que j'ai fais en sorte d'avoir les deux formulaires en même temps.
Unload Me
Unload UserForm1
UserForm1.Show
mais je pense que l'on doit pouvoir procéder de manière plus pro non?
merci par avance pour votre aide
mais je pense que l'on doit pouvoir procéder de manière plus pro non?
certainement !
Mais sans voir comment sont chargées les données dans l'USF1, pas de solutions possibles ....
je ne suis pas sur de comprendre la question :
mais voila ce que je peux en dire
Private Sub UserForm_Initialize()
Acronym = Sheets("Projects' View").Range("G2")
Completeform
End Sub
Private Sub Completeform()
'On Affiche les données générales du projet
General_Data
'On Affiche les données concernant les rapports périodiques
Reporting_Periods
'On Affiche les données concernant les Work Packages
Work_Packages
'On Affiche les données concernant les Déliverables
Deliverables
'On Affiche les données sur les Partenaires
Partners
'On Affiches les données financières
Financial_Data
'On Affiche les documents liés au projet
Gestion_Docs
'On Affiche le personnel lié au projet
Human_Resources
'On Affiche le budget global du projet
Global_Budget
End Sub
et apres chaque macro va récupérer des donnes via vlookup ou lookin etc..
je rencontre désormais le même soucis avec une fonction de suppression que je viens d'ajouter et cela directement dans le userform1 sans passer par un autre
Rows(Match).EntireRow.Delete
la suppression s'effectue mais je ne vois toujours pas comment procéder pour mettre à jour le userform1
me.repaint ou userform1.repaint n'a aucun impact.
Il est curieux que vous ne sachiez pas quelle partie de votre code affiche les données de l'usf ?
Sans avoir le classeur sous la main pour tester, a priori c'est la Private Sub Completeform() qui affiche les données de l'USF1, c'est donc cette Sub qu'il faut appeler pour "rafraichir" les données ou bien directement Private Sub UserForm_Initialize() si la variable Acronym est nécessaire pour l'affichage.
a priori
quelque part dans l'USF2 :
UserForm1.Completeform
'ou
'UserForm1.Initialize
Unload Me
.../...?
les sub appelées devront être non plus Private mais Public
Ce serait quand même plus pratique d'avoir le classeur pour y fairer des tests....
Bonne suite
oui vous avez parfaitement raison c'est bien Completeform qui récupère et affiche les données du formulaire
si je fais unload puis show cela fonctionne parfaitement
toutefois j'ai testé ce que vous m'avez proposé et cela relance bien le formulaire mais désormais je bute sur un autre obstacle
en effet dans mon code et comme je cache des champs quand vide, j'ai du introduire du code pour réduire la scrollbar
MultiPage1.Pages(3).ScrollHeight = MultiPage1.Pages(3).ScrollHeight - 69
cela me donne l'erreur suivante:
Impossible de définir la propriété de scrollheight. valeur de propriété non valide
toutefois cela fonctionne bien initialement
Sans le classeur, je ne m'aventurerai pas à tenter d'identifier hypothétiquement l'origine du souci!
Puisqu'il s'agit d'un nouveau problème, il vaut mieux ouvrir une nouvelle discussion, et ainsi avoir plus de chance d'attirer des intervenants.
Bonne suite.
Bon j'ai tenté plusieurs choses et ai trouvé le moyen de solutionner ce soucis
Private Sub UserForm_Relaunch()
MultiPage1.Pages(2).ScrollHeight = "1100"
MultiPage1.Pages(3).ScrollHeight = "1500"
MultiPage1.Pages(5).ScrollHeight = "3070"
Completeform
End Sub
ceci étant dit cela fonctionne bien si tout s'opère dans le userform1
dans le cas d'integration de donnée je passe par un userform2
je n'arrive pas à savoir comment faire appel à userform1.UserForm_Relaunch depuis le userform2
comment procéder svp?