mimi35garry
Messages postés21Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention 8 février 2013
-
25 oct. 2012 à 18:18
mimi35garry
Messages postés21Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention 8 février 2013
-
26 oct. 2012 à 17:29
Bonjour,
c'est mon premier message sur ce forum qui m'a bien aidéjusque la.
j'ai un classeur pour gérer un stock(que je peut modifier entièrement) et un autre pour passer des commandes(que je peut modifier un minimum).
Ma question concerne la posibilité de copier le contenu d'un combobox d'un userform du classeur de stock vers un textbox d'un userform du classeur commande.
Pour le moment mon classeur de stock ouvre l'autre et appel une macro:
'dans le classeur de stock
Workbooks.Open (Application.ActiveWorkbook.Path & "\Base de donnée\TestCommande.xls")
Application.Run "TestCommande.xls!mamacro"
La macro de l'autre classeur ouvre un userform "FormEntretien":
'dans le classeur de commande, dans un module
Public vartest As Boolean
Sub mamacro()
Sheets("Base").Unprotect
vartest = True 'pour tester si le classeur stock est ouvert
FormEntretien.Show
End Sub
Puis dans le userform_initialize de FormEntretien:
If vartest = True Then
Workbooks("MaintFiBiSuivi.xls").Activate
Application.Run "MaintFibiSuivi.xls!mamacro2"
End If
et dans le classeur de stock dans un module:
Sub mamacro2()
MsgBox ("entrer dans mamacro2)
Workbooks("TestCommande.xls").FormEntretien.Désignationpièce.Text = Stock.Listepiecestockmini.Text
End Sub
J'ai bien la msgbox qui s'affiche donc j'arive sur:
Je précise que FormEntretien est un UserForm et Désignationpièce est un textbox,
Stock est un UserForm et Listepiecestockmini un combobox.
et j'ai l'erreur: Erreur d'exécution '438'
Propriété ou méthode non géré par cette objet.
Je suppose que c'est ma synthaxe qui n'est pas bonne.
Et si ça marche j'aurais plusieurs control à copier.
Désolé c'est un peu long mais je voulais être le plus précis possible.
Merci pour vos futurs réponses.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 26 oct. 2012 à 08:18
Je me suis réveillé en ne pouvant m'empêcher de penser à la solution la moins tortueuse.
Voilà celle qui m'est venue à l'esprit :
- une feuille "Tremplin" de ton classeur Cl2 (celui ouvert par ta commande Open) entièrement dédiée à recevoir en sa colonne A les données à insérer dans les textboxes de son UserForm1
- Pour chaque textbox concernée : utiliser sa propriété ControSource
Ex avec 3 textboxes textbox1, textbox2 et textbox3, mettre dans leur propriété ControlSource :
tremplin!A1 pour la texbox1
tremplin!A2 pour la texbox2
tremplin!A3 pour la texbox3
En modifiant dès lors ces valeurs (dans la colonne A de la feuille tremplin de ton classeur Cl2 (ce qui est facilement réalisable depuis ton classeur 1) tu modifies ipso-facto le contenu des textboxes de ton userform.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 oct. 2012 à 19:55
Bonjour,
Tu ne peux te référer ainsi au UserForm d'un autre classeur.
Il te faut nécessairement passer par le_classeur.VBProject.VBComponents
aperçu/exemple :
Dim d, u
For Each d In Workbooks("Classeur2.xlsm").VBProject.VBComponents
If d.Name "UserForm1" Then Set u d
Next
MsgBox TypeName(u) & " nommé " & u.Name
Mais les choses vont à partir de là devenir encore plus acrobatiques, du fait que le vbcomponent u ne pourra jamais être typé comme un UserForm et que tu ne pourras donc utiliser une expression du genre u.textbox1.text = "coucou"
Il te conseille vivement de chercher d'autres voies que celle que tu as envisagée.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
mimi35garry
Messages postés21Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention 8 février 2013 25 oct. 2012 à 21:14
Bonjour,
merci de ta réponse.
Donc il vaut mieux que je me dirige vers par exemple copier mes données sur une feuille et ensuite les rapatriées dans mon userform ?
J'ai testé le bout de code et il marche bien.
J'ai vu qu'il existais VBProject.Collection que je n'ai pas réussi à utilisé mais je vais retenter.
Donc apparament il n'existe rien capable d'utilisé les controls d'un userform d'un autre classeur, dommage...
Merci encore.
mimi35garry vous salut bien
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 oct. 2012 à 23:00
Je n'ai pas dit que c'était impossible et qu "il n'existait rien" ! Mais le chemin serait tel et tellement scabreux que je déconseille très vivement de se lancer sur un tel chemin, qui tendrait à la construction d'une usine à gaz.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Vous n’avez pas trouvé la réponse que vous recherchez ?