Duplication UserForm sans reproduction du contenu

Lucy31

XLDnaute Nouveau
Bonjour à tous,

Je débute en VBA et après quelques heures de recherche, je me permets de me tourner vers vous parce que je suis bloquée par un problème qui me ronge, et parce que je me suis enfin avoué que je ne m'en sortirais pas seule...

Je vous explique :
1) J'ai créé un Userform qui correspond à une boîte bien précise (Définition) et qui me permet de saisir des informations concernant la boîte. Pré-requis : Ces informations doivent rester dans mon userform qui correspondent à mon processus Définition (pour pouvoir les modifier à tout moment), et ces informations doivent être récupérées dans un onglet à part : Cartographie détaillée.
Jusqu'ici tout va à peu près bien... (même si mon code n'est sûrement pas des plus efficaces et soignés...)

2) J'ai ensuite créé une 2e boîte (Suivi), pour laquelle je souhaite faire apparaître un nouveau Userform, qui a la même forme mais qui est complètement indépendant du 1er, et qui doit lui aussi conserver les données saisies propres au Suivi, et permettre de faire apparaître dans mon tableau Cartographie détaillée les données à la suite de la ligne concernant la première boîte Définition.

Mon problème est le suivant.
J'ai fait un copier-coller de mon premier Userform (en utilisant la technique de changement de nom / exportation / importation) et j'ai affecté le 2e Userform à ma boîte Suivi. Mais avec cette méthode, mes deux Userforms sont en fait les mêmes, et lorsque je saisis des informations dans l'un, ça fait effet miroir dans le second, et dans mon onglet Cartographie détaillée, les données sont modifiées sur la 1ère ligne alors que je souhaiterais qu'elles viennent s'intégrer en dessous.

Pourriez-vous m'aider s'il vous plait?
Je vous joins mon fichier en PJ.

Merci d'avance,

L
 

Pièces jointes

  • excel test.xlsm
    53.3 KB · Affichages: 30
  • excel test.xlsm
    53.3 KB · Affichages: 36
  • excel test.xlsm
    53.3 KB · Affichages: 36

Dranreb

XLDnaute Barbatruc
Re : Duplication UserForm sans reproduction du contenu

Bonjour.

Je ne comprends pas bien ou vous voulez en venir, mais j'ai 3 remarques :
1) - Je ne vois pas à quoi ça sert de modifier ces propriétés là de TextBox lors de leur évènement Change. Il n'y a qu'à les définir comme ça une bonne fois pour toutes dans la fenêtre de propriété.

2) - Les valeurs de contrôles sont conservées tant que l'userform reste chargé en mémoire. Pour qu'il le reste il suffit de prévoir cette 1ère instruction dans la Sub UserForm_QueryClose
VB:
If CloseMode = vbFormControlMenu Then Cancel = True: Me.Hide: Exit Sub
Le reste du code ne sera exécuté que si l'userform est déchargé par du code et non plus au clic sur la croix.

3) - Il est inutile de définir plusieurs Userform totalement identiques. C'est une chose peu connue car d'application rare, mais s'il est vrai que le nom de l'Userform représente à lui seul son propre exemplaire, c'est avant tout un type de donnée dont vous pouvez en créer plusieurs. Supposons que vous n'en gardiez qu'un nommé UsfGO, vous pouvez faire :
VB:
Option Explicit
Dim GO1 As UsfGO, GO2 As UsfGO

Sub Rectangle138_Cliquer()
If GO1 Is Nothing Then Set GO1 = New UsfGO: GO1.Caption = "GO1"
GO1.Show
End Sub

Sub Rectangle139_Cliquer()
If GO2 Is Nothing Then Set GO2 = New UsfGO: GO2.Caption = "GO2"
GO2.Show
End Sub
À noter, sauf erreur de ma part, vu que j'ai peu utilisé cette possibilité :
La Private Sub UserForm_Initialize n'est exécutée qu'une fois, lors du Set, et non plus lors des Show.
Si vous voulez aussi un code qui s'exécute lors de chaque affichage vous devez le mettre dans une Private Sub UserForm_Activate

Un dernier point: Vous auriez peut être intérêt à prévoir des boutons Annuler, Modifier, Ajouter pour clarifier les choses, c'est à dire pour que l'userform ne se mette plus à écrire des choses que lorsqu'on le lui demande et non plus quand il estime devoir le faire.
 
Dernière édition:

Lucy31

XLDnaute Nouveau
Re : Duplication UserForm sans reproduction du contenu

Merci beaucoup pour votre aide et pour cette réponse détaillée.
La bonne nouvelle c'est que je parviens bien à saisir des éléments différents dans mes deux userform GO1 et GO2 à partir de l'unique userform UsfGO, merci!
En revanche, j'ai encore deux problèmes :
- les éléments saisis ne sont pas sauvegardés lorsque je ferme mon fichier et que je le rouvre (userforms vides)
- ma saisie ne s'implémente pas dans mon onglet Cartographie détaillée
Auriez-vous une idée?

PS : concernant les boutons, je voudrais éviter d'avoir à cliquer sur Enregistrer pour pouvoir conserver les données pour ne pas avoir trop de clics ou pour éviter une perte d'informations
 

Pièces jointes

  • excel test.xlsm
    39.1 KB · Affichages: 58
  • excel test.xlsm
    39.1 KB · Affichages: 33
  • excel test.xlsm
    39.1 KB · Affichages: 32

Dranreb

XLDnaute Barbatruc
Re : Duplication UserForm sans reproduction du contenu

C'est normal. Si vous les écrivez sur une nouvelle ligne à chaque fois que vous masquez l'userform je ne vois pas bien pourquoi vous voulez les y revoir lorsque vous le ré-affichez. C'est pour ça que je disais que je ne comprenais pas bien ou vous voulez en venir parce que vous ne pourrez jamais modifier quelque chose dans les lignes écrites. Mais si c'est ce que vous voulez, enlevez le Exit Sub
 

Discussions similaires

Réponses
2
Affichages
318
Réponses
16
Affichages
523

Statistiques des forums

Discussions
312 223
Messages
2 086 397
Membres
103 200
dernier inscrit
pascalgip