USF partagé

J

jco

Guest
Bonsoir au forum
J'ai deux fichiers ouverts en même temps, et je voudrais pouvoir utiliser un USF ouvert dans l'autre ficher. Je n'arrive pas à trouver une solution
Par exemple : un seul usf pour saisir un mot de passe unique dans les deux fichiers..


Ce n'est pas par fainéantise mais en réalité j'ai un fichier maître qui suivant la sélection de l'ulisateur va appeler 1 fichier parmi une centaine
Donc une centaine de usf en moins et de code...

Merci d'avance
 
S

steplof

Guest
Salut @tous,

Jco, je suis auusi très intéressé par ta question, ej l'avais déjà posée le 23/11/02 ici même sans avoir de réponses (je crois que c'est la seule fois où ça a du arriver)
J'ai fait des recherches et j'ai trouvé sur un site (celui de Disciplus ExcelLabo), cette explication:

Utiliser le userform d'un autre classeur
j'ai 2 fichiers excel: file1.xls et file2.xls à partir de file1.xls je veux faire appel
à un userform de file2.xls. Comment faire ?
Tu peux établir une référence à file2 dans file1 et appeler ensuite une petite
procédure de file2 qui lancerait ton UserForm.
Mais celui-ci apparaitrait dans file2 (qui deviendrait la fenêtre active) et non
dans file1, ce que tu cherches sans doute à faire.
Dans ce cas le plus simple est d'enregistrer file2 en macro complémentaire
(.xla) puis d'établir une référence de file1 vers la macro complémentaire (après
avoir renommé son VBAProject).
Ensuite, installer la macro complémentaire dans Excel (Outils\Macros
complémentaires...), et appeler dans file1 une procédure de la macro
complémentaire qui lance le UserForm, lequel apparaitra cette fois dans file1.

La manip est plus longue à décrire qu'à faire :)

Frédéric Sigonneau
Fin de citation

Au vu de la signature, je pense que ce doit être blindé, pour ma part je n'y suis pas arrivé... je me suis résolu à reproduire mon usf dans chaque classeur dont j'avais besoin, mais le nb n'avait rien à voir avec ce que tu annonces...

En espérant que les "professeurs du forum" sauront compléter ces explications...

Merci de me prévenir si tu réussis et de m'expliquer comment.

@+
Steplof
 
@

@+Thierry

Guest
Bonjour StepLof, Pascal, Jco et tout le Forum


Je ne pense pas qu'il faille utiliser la méthode de Frédérique pour ce cas de figure.

Pour Steplof, j'ai dû zaper ta question... Mais j'ai abordé un sujet un peu similaire Sur ce Fil de Discussion

En fait la clef est dans la désignation/déclaration des Objets. En effet dès que l'on veut travailler en Multi-Classeurs à partir d'un seul UserForm. Et il faut être très rigoureux, sinon c'est le plantage assuré.

Je ne peux faire de démo multi classeurs sur ce forum, car il faut (of course) plusieurs classeurs...
Cependant un code multi-classeur ressemblera à ceci :

Option Explicit
Dim ActuelWkbk As Workbook
Dim WsBaseX As Worksheet

Dim OtherWkbk As Workbook
Dim WsBaseY As Worksheet


Set ActuelWkbk = ThisWorkbook
With ActuelWkbk
Set WsBaseX = .Worksheets("DatabaseX")
End With

Set OtherWkbk = Workbooks("Autre.xls")"
With OtherWkbk
Set WsBaseY = .Worksheets("DatabaseY")
End With

Ainsi lorsque l'on assignera une action à un des controls du UserForm, on pourra y faire référence de cette manière :
L = WsBaseY.Range("A65536").End(xlUp).Row
Plage = WsBaseY.Range("A2:C" & L).Address
ListBox1.RowSource = "DatabaseY!" & Plage


ou encore pour un CommandeButton
OtherWkbk.Sheets("Toto").activate

Pour la demande précise de JCO, un UsrForm de saisie de Password, c'est idem... Il faut juste prévoir ce que l'on veut faire comme action si le PassWord est OK (on fait quoi ?) ou si il ne l'est pas (Par exemple on ferme tout..!)...

Bonne Journée et Bon Week End
@+Thierry
 
J

jco

Guest
Bonjour au forum,

J'ai étudié le code proposé par Thierry et c'est une solution.:
Si j'ai bien compris :
1) on clique dans un bouton d'un userform 1
2) pour se retrouver dans un autre classeur
3) le test d'une cellule ( par un événement) peut renvoyer la lecture d'un userform2.show

L'inconvénient de cette méthode, c'est que le classeur actif change et les feuilles actives changent.
Cela me pose de nombreux problèmes, car j'utilise beaucoup le code Activate à l'ouverture des feulles.


Mon souci est d'avoir un Userform qui en quelque sorte soit indépendant du fichier.
J'ai une idée, mais je ne sais absolument pas écrire ce genre de code.

L'idée est refaire ce que l'on peut faire avec l'éditeur :

1) créer un userform1 et son code

2) Sous vba : à partir du fichier 1 sur le usf faire "exporter fichier" ce qui donne un fichier xxx.frm

3) Sous vba : à partir du fichier 2 faire "importer fichier" xxx.frm. Le userform2 et son code est incorporé.

4) Sous vba : avant de fermer fichier 2 supprimer le userform2

Je vais chercher sur internet si je trouve ce genre de code.....

A bientôt.
 

Discussions similaires

Statistiques des forums

Discussions
314 083
Messages
2 105 562
Membres
109 387
dernier inscrit
Thaliemandarine