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?

Rechercher des sujets similaires à "reloader userform suite integration donnee"