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 :

Code partagé entre Excel et autres applications VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut Code partagé entre Excel et autres applications VBA
    Bonjour,

    Je partage du code entre Excel et CATIA, mais bon ça reviendrait au même avec d'autres applications (Outlook, Word, PowerPoint...)

    Est-il possible de savoir quel est "l'hôte" qui est utilisé pour exécuter le code ? J'imagine que ça passe par de la compilation conditionnelle, mais je ne crois pas qu'il existe de constante Excel, CATIA, etc.

    Dans l'idéal, il me faudrait quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim myApplication As Object
     
    #if EXCEL then Set myApplication = Excel
    #if CATIA then Set myApplication = CATIA
    Pouvez-vous m'aider à ce sujet ?

    Merci par avance !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Sur Excel, il y a Application.Name qui renvoie Microsoft Excel.
    Je suppose que ça doit fonctionner aussi avec CATIA.
    https://docs.microsoft.com/fr-fr/off...plication.name

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut
    Effectivement, mais cela revient à me mordre la queue, car sous Excel : Application.Name est en réalité Excel.Application.Name...

    Je viens de remarqué que dans Excel, "CATIA V5 ApplicationFrame Object Library" n'est pas disponible et réciproquement "Microsoft Excel 14.0 Object Library" dans CATIA. A voir si je peux utilisé une condition telle que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #If MODE_CATIA Then
        ...
    #Else
        ...
    #End If
    mais, je préférerais que cela ne nécessite pas de paramétrage externe via Tools / VBAProject Properties.

  4. #4
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    En fait les constantes Excel n'existe pas dans Catia et réciproquement.

    En revanche tu peux créer un énumérateur pour les constante Excel et un pour Catia et les utiliser invariablement dans ton code.

    Excel ou Catia le code est complètement identique plus de souci !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Enum ConstExcel
    Xlup=1234
    XlEnd=123
    End Enum
    Enum ConstCatia
    Etc...

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Orbeaman Voir le message
    Effectivement, mais cela revient à me mordre la queue, car sous Excel : Application.Name est en réalité Excel.Application.Name...
    Je pensais utiliser cette propriété ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
        Select Case Application.Name
        Case "Microsoft Excel"
            .... code Excel ....
        Case "Catia"
            .... code CATIA....
        Case Else
            Exit Sub
        End Select
    End Sub
    Mais ça ne peut fonctionner que si la bibliothèque d'objets CATIA est chargeable dans Excel et réciproquement.
    Si ce n'est pas possible, il n'y a pas de solution pour un code commun.

    A part, peut-être, utiliser un langage qui accède aux deux bibliothèques. VB.Net peut-être...

  6. #6
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    En fait j'ai rien compris!
    Si c'est un problème de constantes les deux énumérateur règle le problème, si c'est pour récupérer d'objet Application on a Me.Application.
    Ou plus simplement
    set MyApp=ApplicationLes méthodes GetObject et CreateObject permettent charger dynamiquement des librairie.

    Expliqués un peut mieux les objectifs, les tenants et aboutissant.

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut
    Effectivement, il ne s'agit pas que d'un problème de constantes. Je pense que je vais finalement charger les librairies CATIA dans Excel (il y a en a plusieurs dizaines, mais je pense que la "CATIA V5 ApplicationFrame Object Library" est la principale), mais si je ne piloterait pas CATIA depuis Excel VBA (j'ai des collègues qui le font en VB.Net). En fait, j'utilise aussi certaines classes définies dans CATIA (comme Product), mais je les ai temporairement remplacées par Object, mais ça m'embête quand même de perdre l'intellisense. Il doit aussi avoir des noms de classes identiques entre CATIA et Excel, d'où l'intérêt de les faire faire préfixer...

  8. #8
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par Orbeaman Voir le message
    , (j'ai des collègues qui le font en VB.Net).





    P.S. Si "automation" (en fait, ce n'est pas vraiment de l'automation) fonctionne dans ce cas; cela devrait théoriquement fonctionner avec VBA

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Orbeaman Voir le message
    Il doit aussi avoir des noms de classes identiques entre CATIA et Excel, d'où l'intérêt de les faire faire préfixer...
    De toute façon, en VBA, tous les éléments d'une application extérieure doivent être préfixés.

Discussions similaires

  1. Rapatrier des données d'un fichier excel à l'autre via VBA
    Par aurel262 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/02/2016, 10h51
  2. [MySQL] Données partagées entre site web et application mobile
    Par okoweb dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/09/2013, 18h57
  3. [XL-2007] navigation aller-retour entre application VBA et classeur Excel
    Par pithèque dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/01/2012, 06h01
  4. Perte du code VBA entre Excel 2007 et antérieure
    Par GreatDeveloperOnizuka dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/07/2008, 21h42
  5. partage de mémoire entre excel et les autres
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/09/2007, 15h08

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