Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/04/2007, 10h50   #1
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
Par défaut [VBA-W] Atteindre une userform par un object

J'ai besoin d'atteindre un userform à partir d'un object excel basé sur un modèle excel mais je ne trouve pas la collection des userforms juste une liste d'item référencant les noms des useforms mais ne retournant pas l'userform

voici le code que j'ai

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
Dim XLFichier As Workbook
Set XLFichier = Workbooks.Open("C:\SITECUB1\Maquette.xltm")
 
  Dim usf1 As UserForm
  Dim i As Integer
 
 For i = 1 To XLFichier.VBProject.VBComponents.count - 1
    If XLFichier.VBProject.VBComponents.item(i).Name = "UF_10_treeview" Then
        'MARCHE PAS
'recupere l'userform
        usf1 = XLFichier.VBProject.VBComponents.item(i)
        Exit For
    End If
Next
 
'MARCHE PAS
'recupere la requete
Dim REQGEN As String
REQGEN = XLFichier.VBProject.VBComponents.item(i).requeteGENE
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 10h35   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Désolé mais je ne comprends pas ta question. Qu'entends-tu par "atteindre un userform"
Si c'est l'ouvrir, tu peux l'ouvrir en exécutant une macro d'ouverture se trouvant dans le xls... Si c'est "autre chose" tu dis
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 11h38   #3
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
Je ne cherche pas à l'ouvrir . J'ouvre mon modèle excel depuis une macro (sous word) avec la commande "Run", j'execute une macro.
Cette macro lance un formulaire (modal). Sur le bouton de validation de ce formulaire il y a un traitement qui va mettre à jour une variable du formulaire.
Le formulaire se ferme et je reviens dans la macro(sous word). A partir de cette macro je voudrai récupérer le contenu de ma variable du formulaire.
Mais je n'arrive pas à trouver de collection d'objet permettant d'atteindre les formulaires. D'apres des recherches il semblerait les userforms soient accessibles avec la collection "VBA.Userforms". Mais problème cette collection est vide, de plus comme spécifier que l'on est dans le modèle excel ?

Tout ce que j'arrive à faire c'est lister les userforms présents dans le modèle grâce aux items de "VBProject.VBComponents" mais cela retourne des VBComponents ou des objets mais pas de userform.

Si tu as une idée je suis preneur
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2007, 11h31   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Ce ne devrait pas être si compliqué...
Dans le module de la macro ("Cette macro lance un formulaire (modal)"), je parle de cette macro-là, tu déclares ta variable en public.
Quand tu fermes l'userform, tu as la valeur de cette variable. Tu l'utilises sur la ligne suivant l'ouverture de l'userform.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
'Module1
Public LaVar
Sub OuvrirUserform()
    Load Userform1
    Userform1.show
    msgbox LaVar
    'ou
    Call UneAutreMacro
End sub
 
Sub UneAutreMacro()
     msgbox LaVar
End sub
Ou alors... j'ai rien compris
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2007, 15h52   #5
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
J'ai du mal m'exprimer car ce n'est pas ce que je veux
ressemble a ca
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
sub MacroWord()
 
Dim XLFichier As Workbook
Dim xlAppl As Excel.Application
 
Set xlAppl = CreateObject("Excel.Application")
xlAppl.Visible = False
 
Set XLFichier = xlAppl.Workbooks.Open("C:\ModeleExcel.xltm")
 
XLFichier.Application.Run "Lance_Assistant_Tableau"
 
'recupere variable
Dim RqtWord as String 
 
RqtWord = UF_Assistant.requete
 
'TRAITEMENT
end sub
 
Sub Lance_Assistant_Tableau()
 
    'Lance l'assistant (userform)
    UF_Assistant.Show
 
End Sub

Voulant en gros ce que je veux mais je voudrai plus généralement avoir accés MacroWord à UF_Assistant et tous ces controls variables de l'userform.
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2007, 16h38   #6
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 676
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 676
Points : 7 633
Points : 7 633
Essaye de t'exprimer plus clairement, stp.

Je ne comprends déjà pas cette phrase:
Citation:
Sur le bouton de validation de ce formulaire il y a un traitement qui va mettre à jour une variable du formulaire
Qu'appelles-tu "une variable du formulaire"?

Tu ne voudrais pas essayer d'expliquer ce que tu cherches à faire (un exemple)?

On connait peut-être d'autres voies que celle que tu cherches à prendre.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2007, 17h16   #7
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
ce que j'entends par variable de formulaire est par exemple une variable défini dans le code du formulaire en public.

Pour faire plus simple j'aimerai tout simplement avoir accès à un userform contenu dans mon modèle excel. Quand je parle d'accès je veux dire pouvoir récupérer les valeurs contenues dans les controls ou des variables définis dans le code du formulaire en public.
Et ceci à partir de ma macro sous excel.

La seule solution que j'ai trouvé c'est d'utiliser la base de donnée pour stocker mes informations.

Je procède en faisant ainsi :
Je génére un index dans la macroword.
J'envoi l'index en paramètre à la macro qui excel que j'execute par la commande "run".
La macro excel lance le formulaire et quand l'utilisateur valide le formulaire (appuie sur le bouton de validation). J'enregistre le contenu de mes controles dans des tables en base de donnée indexer sur l'index fournit.
Dans la macroWord je n'ai plus qu'a faire une requete sur la base avec l'index générer pour récupérer mes informations.

Voila cette solution est satisfaisante pour la pratique mais pour mes connaissances insatisfaisantes car j'ai du mal à croire qu'il ne soit pas possible d'accèder à des userforms à travers un objet excel ou word.


Pour l'exemple que tu me demandes AlainTech regarde mes précédents message le code parle pour moi et surement mieux que moi lol
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h06.


 
 
 
 
Partenaires

Hébergement Web