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

Macros et VBA Excel Discussion :

Importer un module dans un Projet excel dynamiquement [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 14
    Par défaut Importer un module dans un Projet excel dynamiquement
    Bonjour à tous,

    Mon problème en ce moment est sur l'importation dynamique d'un module dans un projet excel.
    J'ai trouvé le code qui permet de le faire. Par exemple, pour importer le fichier "test.bas" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.VBProject.VbComponents.Import "test.bas"
    Ce code fonctionne et fonctionnait toujours hier. Aujourd'hui, j'ouvre mon application, je l'exécute et il me dit qu'il ne retrouve pas le fichier "test.bas".
    Je n'ai pas touché à ce fichier. J'ai même recréer un autre fichier d'un autre nom, ça ne fonctionne toujours pas.
    Par contre si je mets le nom complet du chemin où il faut trouver ce fichier, tout fonctionne.
    Je ne comprends pas pourquoi ça ne fonctionne plus alors que tout le reste de mon code n'a aucun problème.
    Je ne peux faire de recherche sur internet car, travaillant en entreprise, j'ai un accès à Internet treès limité.

    J'ai vraiment besoin de votre aide.

    Je mets mon code au cas où:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    'Crée plusieurs types de nouvelles feuilles (tableau de transmission, GOVs et Boîte de dialogue)
    Sub CreerFeuilles()
        Dim Pourcentage As Single      'action effectuée en pourcentage
     
        'Faire les maquettes vides des feuilles
        ThisWorkbook.Sheets("GOV-RYL").Copy
        Call CalculerPourcentage(Pourcentage, 1)
        ThisWorkbook.Sheets("GOV-GRV").Copy After:=ActiveWorkbook.Sheets(1)
        Call CalculerPourcentage(Pourcentage, 2)
        ThisWorkbook.Sheets("NUIT").Copy After:=ActiveWorkbook.Sheets(2)
        Call CalculerPourcentage(Pourcentage, 3)
        ThisWorkbook.Sheets("MATINEE").Copy After:=ActiveWorkbook.Sheets(3)
        Call CalculerPourcentage(Pourcentage, 4)
        ThisWorkbook.Sheets("SOIREE").Copy After:=ActiveWorkbook.Sheets(4)
        Call CalculerPourcentage(Pourcentage, 5)
        ThisWorkbook.DialogSheets("FEN_ConstructionGOV").Copy After:=ActiveWorkbook.Sheets(5)
        Call CalculerPourcentage(Pourcentage, 6)
        ActiveWorkbook.Sheets.Add After:=ActiveWorkbook.Sheets(6)
        Call CalculerPourcentage(Pourcentage, 7)
        ActiveWorkbook.ActiveSheet.Name = "BD_GOV-TT"
        Call CalculerPourcentage(Pourcentage, 8)
     
        AjouterTitresBDGOVTT
        Call CalculerPourcentage(Pourcentage, 9)
     
     
        'Masquer la fenêtre de construction de GOV et les tableaux de transmissions
        Sheets("FEN_ConstructionGOV").Visible = False
        Call CalculerPourcentage(Pourcentage, 10)
        Sheets("NUIT").Visible = False
        Call CalculerPourcentage(Pourcentage, 11)
        Sheets("MATINEE").Visible = False
        Call CalculerPourcentage(Pourcentage, 12)
        Sheets("SOIREE").Visible = False
        Call CalculerPourcentage(Pourcentage, 13)
     
        'Récupérer les codes des macros nécessaires (C'est ici que ça ne 
        'fonctionne pas)    
    ActiveWorkbook.VBProject.VBComponents.Import "ContrôleFEN_ConstructionGOV.bas"
        ActiveWorkbook.VBProject.VBComponents.Import "InsererCommentaires.bas"
        ActiveWorkbook.VBProject.VBComponents.Import "FEN_Commentaires.frm"
        ActiveWorkbook.VBProject.VBComponents.Import "CliquerBoutonAjouter.bas"
     
        'Insérer une macro dans le bouton "Insérer Commentaires" dans chaque feuille du classeur
        ActiveWorkbook.Sheets("NUIT").Shapes("BUT_InsererCommentaires").OnAction = ActiveWorkbook.Name & "!InsererCommentaires.InsererCommentaires"
        ActiveWorkbook.Sheets("MATINEE").Shapes("BUT_InsererCommentaires").OnAction = ActiveWorkbook.Name & "!InsererCommentaires.InsererCommentaires"
        ActiveWorkbook.Sheets("SOIREE").Shapes("BUT_InsererCommentaires").OnAction = ActiveWorkbook.Name & "!InsererCommentaires.InsererCommentaires"
     
        'Insérer une macro dans le bouton "Ajouter" dans chaque feuille du classeur
        ActiveWorkbook.Sheets("GOV-RYL").Shapes("BUT_Ajouter").OnAction = ActiveWorkbook.Name & "!CliquerBoutonAjouter.CliquerBoutonAjouter"
        ActiveWorkbook.Sheets("GOV-GRV").Shapes("BUT_Ajouter").OnAction = ActiveWorkbook.Name & "!CliquerBoutonAjouter.CliquerBoutonAjouter"
     
        'Insérer pour chaque objet fonctionnant avec une macro
        'de la feuille de boîte de dialogue "FEN_ConstructionGOV" la macro approprié
        For Each objet In ActiveWorkbook.DialogSheets("FEN_ConstructionGOV").Shapes
            If objet.OnAction <> "" Then
                objet.OnAction = "'" & ActiveWorkbook.Name & "'" & Mid(objet.OnAction, 23)
            End If
        Next
        Call CalculerPourcentage(Pourcentage, 14)
     
    End Sub

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour

    Citation Envoyé par DJ_972 Voir le message
    Par contre si je mets le nom complet du chemin où il faut trouver ce fichier, tout fonctionne.
    Et donc tu as la solution. Si c'est juste que tu ne comprends pas : si tu donnes juste le nom, l'appli cherche dans le répertoire par défaut valide au moment où l'instruction est exécutée. Ce dossier change au fur et à mesure de l'utilisation des boîtes de dialogue comme Ouvrir ou Enregistrer sous.

    C'est la moindre des choses quand on veut charger un fichier que de donner son chemin complet, non?

    Cordialement,

    PGZ

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 14
    Par défaut
    Bonjour PGZ

    Tout d'abord merci pour ta réponse.

    C'est vrai que mon problème serait résolu si je mets un le nom du chemin complet mais je veux faire une application qui fonctionne sur n'importe quel ordinateur ayant Microsoft Excel 2002.

    Le problème du chemin complet est qu'après "Documents and settings/...", il y a le nom de l'utilisateur qui change par rapport à l'ordinateur utilisé.
    C'est pour ça que je ne mets pas de chemin complet en sachant que tous mes fichiers sont dans le même répertoire que mon application.

    Du coup je n'avais pas compris pourquoi avant ça fonctionnait et maintenant ça ne fonctionne plus.


    Mais je crois que tu viens de me donner la solution car au lieu d'ouvrir mon application directement en cliquant dessus, je l'ai tout à l'heure ouvert par le biais de Microsoft Excel et tout fonctionne!!!

    Comme tu dis :

    Envoyé par PGZ
    Ce dossier change au fur et à mesure de l'utilisation des boîtes de dialogue comme Ouvrir ou Enregistrer sous.
    Je te remercie beaucoup pour ta solution. Mais, il me vient un autre problème.
    L'utilisateur de mon application n'est pas forcé de passer par Excel pour ouvrir mon application. S'il double-clique dessus, tout ira mal.

    J'ai deux questions:
    • Est-il possible qu'il y ait un code qui permet d'avoir le nom utilisé par l'ordinateur (le nom juste après DocumentsAndSettings dans le chemin complet)?
    • Est-il possible de changer le répertoire de recherche par défaut des fichiers en passant par vba?


    Hé bien! j'ai pu trouver une réponse à ma 2e question qui n'a pas résolu le problème mais je mets quand même le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DefaultFilePath
    Ce code donne le répertoire d'accès par défaut. Et d'après ce que j'ai vu on peut le changer mais il me ressort toujours une erreur.

    Par contre si j'ajoute avant, par exemple, "test.bas", "ThisWorkbook.Path", tout fonctionne car "ThisWorkbook.Path" me ressort le chemin complet d'accès de mon application dynamiquement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.VBProject.VbComponents.Import ThisWorkbook.path & "\test.bas"
    Ce qui veut dire que mon application devrait fonctionner sur n'importe quel ordinateur. Nickel!!!

    Je vais te remercier une troisième fois quand même PGZ car c'est grâce à ta solution que j'ai trouvé tout ça et résoudre mon problème.

    Bonne journée, PGZ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Doxygen : gérer plusieur module dans un projet
    Par hitchie dans le forum C++
    Réponses: 1
    Dernier message: 09/01/2008, 14h17
  2. [MEX] Comment appeler des modules dans un projet
    Par fatenov dans le forum MATLAB
    Réponses: 4
    Dernier message: 22/11/2007, 22h58
  3. importer une librairie dans mon projet
    Par ryoussef19 dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 25/04/2007, 14h04
  4. Projet jbpm jpdl - ajouter dans un projet web dynamique
    Par marwanos dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 01/04/2007, 18h29
  5. importer une classe dans mon projet
    Par dietrich dans le forum Delphi
    Réponses: 1
    Dernier message: 17/07/2006, 09h57

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