Afficher un userform d'un autre classeur

  • Initiateur de la discussion Initiateur de la discussion Philoo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Philoo

Guest
Bonjour à tous !
J'ai une question très simple, mais qui me pose problème :
Comment afficher un userform stocké dans un autre classeur , par ailleurs ouvert ?

J'ai essayé de trouver l'objet de workbooks contenant les forms d'un classeur, mais pour l'instant je suis bredouille...
J'ai essayé par la propriété 'VBAproject" mais rien à faire non plus (enfin de ce que j'ai vu)

Si quelqu'un à une idée...
Merci d'avance

Philoo
 
En fait c'est bon je m'en suis sorti par une pirouette : j'ai créé une macro qui affiche le userform dans le classeur qui le contient, et dans l'autre je lance cette macro à partir d'une autre avcec une commande genre :
Application.Run("monClasseur.xls!MaMacro")

Voilà a+
Philoo
 
Bonjour Philoo et le Forum

Pas beau pour un printemps et frisquet hein ! même en plein Sud-Est...

Bon je ne sais pas si celà peut te convenir mais plutot que de passer par VbProject.VBcomponents et toutes les déclarations nécessaires, que d'ailleurs je ne suis pas certain puissent fonctionner...

Deux petits codes comme ceux-ci, me semblent bien plus simples (si tes deux classeurs sont bien effectivement ouverts):

Dans Classeur qui NE contient PAS le UserForm :

Sub LancementUSF1 ()
Application.Run "ClasseurUSF!LancerUSF1"
End Sub


Dans Classeur qui contient le UserForm : "ClasseurUSF"

Sub LancerUSF1()
UserForm1.Show
End Sub


Maintenant il y a toutes les recommandations d'usage en ce qui concerne l'utilisation de Userform sur différents classeurs ouverts en même temps, car il faut s'assurer que chaque object est référencé complètement avec le nom du workbook, sinon ce sera le plantage assuré.

Bon Appétit à tous et toutes

@+Thierry
 
oui, messages croisés !!
On a eu la même idée en même temps...
Mais je te remercie quand même pour ton aide...
Au fait quand tu parles de référencement d'objet tu veux dire quoi exactement ?
 
Ben pour les référencements d'objects c'est dommage que le moteur de recherche ne soit plus actif car j'avais fait une démo... mais voici un extrait de code en multi classeurs :

Dim CurrentBook As Workbook
Dim CurWS1 As Worksheet
Dim CurWS2 As Worksheet

Dim OtherBook As Workbook
Dim OthWS1 As Worksheet

Set CurrentBook = ThisWorkbook
With CurrentBook
Set CurWS1 = .Worksheets("Sheet1")
Set CurWS2 = .Worksheets("Sheet2")
End With

Set OtherBook = Workbooks("Toto.xls")
With OtherBook
Set OthWS1 = .Worksheets("Sheet1")
End With

.................

en suit on peut faire des truc comme çà :

L = OthWS1.Range("A65536").End(xlUp).Row
Set r = OthWS1.Range("A2:A" & L)


etc etc.... C'est çà de travailler en multi classeurs....


Voilà en espérant t'éclairer, comme celà m'a beaucoup éclairé quand un jour Ti m'as suggéré de procéder ainsi.

Sinon sans faire de Set d'objet workbook / worksheet on peut aussi référencer comme c-dessous, mais celà alourdi de loin le code car il faut tout répéter à chaque manipulation d'objet :

Set r = Workbooks("Toto.xls").Sheets("Sheet1").Range("A2:" _
& ThisWorkbook("Toto.xls").Sheets("Sheet1").Range("A65536").End(xlUp).Address)


Voilà comme çà tu peux "surfer" de classeurs en classeurs !!!

@+Thierry
 
Oups !!!

on lira :

Set r = Workbooks("Toto.xls").Sheets("Sheet1").Range("A2:" _
& Workbooks("Toto.xls").Sheets("Sheet1").Range("A65536").End(xlUp).Address)


ou on lira :

Set r = ThisWorkbook..Sheets("Sheet1").Range("A2:" _
& ThisWorkbook.Sheets("Sheet1").Range("A65536").End(xlUp).Address)

Mais on lira pas mon dernier exemple dans le post ci-dessus !


@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2019 User Form
Réponses
9
Affichages
360
Retour