IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

[VBA-W] Atteindre une userform par un object


Sujet :

VBA Word

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Points : 97
    Points
    97
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    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+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    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

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    J'ai du mal m'exprimer car ce n'est pas ce que je veux
    ressemble a ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Essaye de t'exprimer plus clairement, stp.

    Je ne comprends déjà pas cette phrase:
    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!

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    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

Discussions similaires

  1. [VBA-E] Ajouter une reference par le code
    Par mustang-ffw02 dans le forum Installation, Déploiement et Sécurité
    Réponses: 12
    Dernier message: 21/11/2006, 19h28
  2. [VBA-E] Recupéré une recherche par find
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/11/2006, 14h58
  3. [VBA E] Bloquer une USERFORM en consultation
    Par vanessaferraz dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/06/2006, 12h16
  4. [VBA-E] modifier une userform
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 57
    Dernier message: 10/04/2006, 16h57
  5. [VBA-E] Dupliquer une userform
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/04/2006, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo