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 :

[E-00] Exploiter une fonction qui se trouve dans un fichier à partir d'excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Points : 59
    Points
    59
    Par défaut [E-00] Exploiter une fonction qui se trouve dans un fichier à partir d'excel
    Bonjour,

    Je voudrais appeler une fonction qui se trouve dans un fichier .odt ou .vb ou n'importe quoi. Mais à partir de visual basic.

    Car j'ai une fonction qui est la même pour plusieurs fichiers excel (6 en tout) donc j'aimerais qu'il appelle tous la même au lieu de devoir récrire 6 fois le même code.

    Comment faire ?

    Merci de bien vouloir m'aider.

    Benjycool

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    un fichier .odt est un fichier OpenOffice, il y a le moyen de piloter OpenOffice http://silkyroad.developpez.com/VBA/PiloterOpenOffice/

    Par contre pour les fichier .vb je ne vois pas.

    Philippe

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Ok merci je suis en train de le consulter. Mais il n'y a pas un moyen plus simple ???

    Genre je mais le code dans un fichier wordpad ou même dans un bloc note et grâce à une syntaxe particulière j'utilise le code depuis excel ???

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par Benjycool Voir le message
    Genre je mais le code dans un fichier wordpad ou même dans un bloc note et grâce à une syntaxe particulière j'utilise le code depuis excel ???
    Personnellement (je peux me tromper), mais il faut bien un logiciel pour interpréter la fonction, le seul moyen serait de copier la fonction dans son intégralité dans VBE et de l'utiliser. Pour cela tu peux lire cet article : http://silkyroad.developpez.com/VBA/VisualBasicEditor/

    Philippe

  5. #5
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Merci je pense que c'est ce qu'il me faut. Je viens de le regarder mais je n'y comprend pas grand chose (chapitre IV).

    Je ne suis pas un expert en excel et le code dans le chapitre est je trouve assez complexe à comprendre peut tu m'aider ?

    Benjycool

  6. #6
    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
    Bonjour Philippe, Benjycool, tous
    Benjycool , je crois que tu sous-entend l'utilisation de vbscript (écrit avec le bloc-note ou wordpad...)
    Sinon, tu as la possibilité d'utiliser une "macro complémentaire" sous la forme d'un fichier.xla.
    Les macros complémentaires sont des macros VBA placées dans des fichiers Excel enregistrés sous ".xla.
    Elles sont accessibles depuis n'importe quelle macro dès lors qu'elles ont été validées,
    - soit par macro (voir Addins dans l'aide en ligne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddIns.Add(Chemin & "Fichier.xla").Installed = True
    - soit dans Excel -> Menu Outils -> Macros complémentaires.
    Bonne journée

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    Une autre solution, si tu maitrises mal VBA, serait après avoir récupérer le code source,
    d'utiliser un ScriptControl.
    Cela suppose que le code est écrit en Javascript ou en VBScript.

  8. #8
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    ouskel'n'or je suis en train de tester ta methode mais sans réussite.
    Il faut dire que je ne sais pas trop ce qu'il faut faire.

    J'ai ouvert un nouveau classeur (Module_DIV) ou j'ai insérer le code dans le module1 de Module_DIV puis je l'ai enregistrer en .xla.

    Ensuite dans le classeur ou je veut utiliser la fonction, j'ai ecrie ce que tu ma dit puis ensuite appelé la fonction que je voulais mais sans réussite. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub CommandButton1_Click()
     
    AddIns.Add("G:\Cours\Stage\Stage 2eme année\SES\Division\" & "Module_DIV.xla").Installed = True
     
        Call Export("1")
     
    End Sub
    Où j'ai foirer ????

    Benjycool

  9. #9
    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
    Teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
         AddIns.Add("G:\Cours\Stage\Stage 2eme année\SES\Division\" & "Module_DIV.xla").Installed = True
         'pour une fonction :
         r = Application.Run("Module_DIV.xla!Export", "1")
         'pour une macro
         Application.Run "Module_DIV.xla!Export", "1"
    End Sub

  10. #10
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Ok sa marche merci, par j'ai un message qui s'affiche quand le clique sur le bouton :

    "Copier 'Module_DIV.xla' dans la bibliothèque de macro complémentaires pour administrateur ?"

    Je dois mettre non pour que sa marche.

    Mais comment je peut faire pour que le message n'apparaisse pas ??? Qu'il fasse directement non quoi en faite ???

    Merci de m'aider.

    Benjycool

  11. #11
    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
    Citation Envoyé par Benjycool
    comment je peux faire pour que le message n'apparaisse pas ??? Qu'il fasse directement non quoi en fait ???
    Aucune idée, désolé, je n'ai pas ce message.
    Où se trouve le bouton ?
    Quand le message apparaît-il ?
    Quelle version d'Excel as-tu ?

    Tu peux toujours ajouter en début de code du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.displayAlerts = false
    mais sans garantie puisque je n'observe pas ce phénomène.
    Sur mon poste l'.xla se trouve dans "C:\Documents and Settings\User (c'est moi) \Application Data\Microsoft\Macros complémentaires"
    Peut-être est-ce la raison...

    Espérons que DarkVader repasse par là, il en saura peut-être plus que moi

  12. #12
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    En fait j'ai une feuille excel avec diverse infomation mise en vrac dessus.
    Avec le bouton j'envoie se que je souhaite avoir comme information dans un autre classeur.
    Au fur et a mesure cela forme un tableau.

    Le bouton se trouve donc sur la feuille du premier classeur, le chemin :
    G:\Cours\Stage\Stage 2eme année\SES\Division\TB-Classeur1.xls

    Et le fichier .xla :
    G:\Cours\Stage\Stage 2eme année\SES\Division\Module_DIV.xla

    Lorsque je met le code que tu m'as donné il me dit :
    "erreur d'execution '1004' :
    impossible de copier cette macro complémentaire dans la bibliothèque de macro."

    C'est toi qui la créer ce dossier ???

  13. #13
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Ok c'est bon, il suffit de le mettre dans le fichier que tu as dis c'est a dire, en l'occurence pour moi :

    C:\Documents and Settings\user\Application Data\Microsoft\Macros complémentaires\Module_DIV.xla

    Bon beh je te remercie de ton aide.

    Benjycool

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/02/2014, 10h16
  2. [Lazarus] Comment utiliser une fonction qui se trouve dans une DLL externe ?
    Par [ZiP] dans le forum Lazarus
    Réponses: 2
    Dernier message: 01/12/2012, 00h33
  3. Appeler une fonction qui se trouve dans une autre fonction
    Par waxouse dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 11/05/2009, 16h28
  4. Exploiter un userform qui se trouve dans un fichier à partir d'excel
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2009, 08h25
  5. Réponses: 1
    Dernier message: 09/02/2009, 01h36

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