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 :

Compilation d'un classeur EXCEL en fichier .EXE


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2012
    Messages : 49
    Par défaut Compilation d'un classeur EXCEL en fichier .EXE
    bonjour,
    je viens de terminer un programme élaboré sur la base de feuilles de calcul EXCEL2007 utilisant des macros écrites en code VB. Le programme en question fait beaucoup de calcul itératif de type numérique.Mon problème et que le programme en question fait beaucoup de temps à l'exécution. J'ai pensé à le compiler sous format .EXE mais je ne sais pas comment.
    je vous pris de bien vouloir m'aider sur ce point
    cordialement

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Mon problème et que le programme en question fait beaucoup de temps à l'exécution.
    Es tu certain d'avoir optimiser ton code avant de t'embarquer vers une compilation qui je ne pense pas accélérera les traitements

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    En VBA tu ne peux pas créer un .exe, enfin, à ma connaissance.

    Hervé.

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    salut Theze,

    Sur Google on trouve des programmes qui font cela.
    Je n'ai jamais testé, mais on peut en télécharger sur Clubic : DoneEx XCell Compiler 1.7.3

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Salut Jérôme,

    Et bien, on en apprend tous les jours ;-)

    Hervé.

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2012
    Messages : 49
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    En VBA tu ne peux pas créer un .exe, enfin, à ma connaissance.

    Hervé.
    Bonjour,
    ne peux pas ça n'existe pas dans le domaine de développement informatique tout est possible. Le code VB est similaire à celui du langage Pascal. Pourquoi ce dernier offre la possibilité d'en faire un .EXE alors que le VB ne l'offre pas?
    Le VB est devenu actuellement "à mon avis" un outil très intéressant pour le développement informatique. Ce que nous demandons nous les consommateurs où plutôt les demandeurs à ce que Microsoft débloque cette situation et nous offre un produit pour la compilation du code VB en .EXE sinon ce langage mystérieux risque d’être abandonner dans le temps.

    Citation Envoyé par jfontaine Voir le message
    salut Theze,

    Sur Google on trouve des programmes qui font cela.
    Je n'ai jamais testé, mais on peut en télécharger sur Clubic : DoneEx XCell Compiler 1.7.3
    BONSOIR,
    j'ai essayé le DoneEX mai ça marche pas à tous les coups c'est un nouveau produit qui ne génère pas toutes les possibilités du code VB.

    Salut jfontaine,
    j'ai trouvé un livre dénommé Visuel Basic6 Le guide du programmeur dont l'hauteur est monsieur Gérard Frantz www.oemweb.com au chapitre 4 paragraphe 1.7 l'auteur décrit la démarche à suivre pour créer un fichier exécutable cette démarche d’après l'auteur nécessite que plusieurs fichiers soient présent sur le système cible, et particulièrement le fichier msvbvm60.dll dans le répertoire système de Windows et l'ensemble des fichiers nécessaires à une application dépend des extensions utilisés (contrôles ActiveX, objets...).
    Deux options principales décrit par le manuel sont disponibles pour la génération de fichiers exécutables :
    1 - la génération d'un fichier exécutable en p-code, qui est la méthode mise en oeuvre par les versions antérieures de VB.Le p-code (p pour pseudo, encore appelé microcode) est formé de pseudo-instructions, qui sont interprétées par l'environnement d’exécution de VB.
    2- Un fichier exécutable en code natif. Il s'agit d'instructions propres au système sur lequel fonctionne VB, par exemple des instructions machines du Pentium.
    L'auteur du manuel nous donne la procédure à suivre pour créer un fichier Exécutable comme suit :
    - Sélectionnez Créer (nom du fichier).EXE dans le menu fichier
    - Saisissez le nom du fichier (par défaut celui du projet).Vous pouvez également associer une icone et un titre à l'application, en cliquant sur le bouton Options (onglet Créer de la boite de dialogue), ils seront utilisés dans le gestionnaire du programme.La boite de dialogue des options permet également la saisie des informations liées à la version de l'application : un numéro de version, ainsi q'une description des informations de copyright et un commentaire. Ces informations apparaissent dans les propriétés du fichier, affichés à l'aide du gestionnaire de fichiers ou de l'explorateur. Elle sont accessibles au programme à travers les propriétés de l'Objet App (voir chapitre 6 du manuel en question)
    - La boite de dialogue des options comprend également un onglet Compilateur qui permet d'indiquer si la génération du code doit utiliser du p-code ou du code natif au système. Dans ce dernier cas plusieurs options d'optimisation sont possibles.
    Cordialement

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    VB6 et VBA même s'ils sont issus de la même société et ont une syntaxe identique sont deux produits différents.
    VB peut générer un Exe à l'aide d'un compilateur et ainsi créer une application autonome. VBA est un VisualBasic pour Application et l'application (Excel, Word etc..) doit être présente lors de son utilisation et ne génère pas d'exécutable, également à ma connaissance, validé par MicroSoft.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Invité
    Invité(e)
    Par défaut
    bonjour,
    vb6 et vba c'est exactement la même chose sauf que ce dernier ne peut pas se compiler en exécutable; qu'il dispose d'objets applicatif (Excel,Word,etc...) d'ou la dénomination VBA; qu'il est allégé de certains contrôle et librairies!

    Vb6 et VBA utilisent un interpréteur de commande? on confond souvent la représentation du code brut( Dim MyVariable as string) et le code pseudo compilé!, en effet VBA compile le code brute en langage Objet (Assembleur de niveau comme le ferait un compilateur C) et ensuite le code assemblé est envoyé à l’interpréteur de commande comme ça ce pase avec VB6 compilé en .exe.

    les options d'optimisation de compilation de VB6, permettent effectivement d'améliorer la vitesse d’exécution du code, mais ça consistes en réaménagement de séquence du code et augmente de ce fait l'ocupation mémoires! donc sur des programmes volumineux, le temps de vitesse gagné peut être largement perdue du fait de sa consommation mémoire et/ou processeurs.

    nom il faut optimiser ton code et ce même si tu entrevois de le migrer vers une autre plat forme!

    inhiber le rafraîchissement de l'ecran; des macros; ne pas oublier qu'un Set Obj = Object doit invariable ment finir par un Set Obj=Nothing; et ne pas oublier de temps en temps de rendre la main à Windows pour gérer sa mémoire DoEvents;


    tous les outils qui tendent à rendre un fichier exécutable ne sont que des surcouches qui encapsule les librairies vba ainsi que le contenu du fichier dans un enveloppe appelé .exe! ; ce sont des outils linckers! il n'aurons aucune conséquence sur le performances, voir ils les réduirons!

    ceci dit depuis 2012??????
    Dernière modification par Invité ; 15/02/2017 à 14h33.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par défaut Protéger le code VBA en transformant le classeur en .EXE
    Bonjour,
    Pour moi, l'objectif de transformer son classeur enrichi de macros VBA en fichier exécutable *.EXE est surtout dans un objectif de protection du code, dans le cadre professionnel (ou associatif), pour arriver à partager un classeur entre l'auteur du code VBA et les utilisateurs de l'application issue de ce code (et non les utilisateurs d'Excel au sens général).

    Dans le cas de fichier partagé au bureau, c'est la protection de l'accès au code VBA qui permet d'éviter que l'utilisateur y mette le nez et d'en modifie le contenue à l'insu de son auteur (même si le code peut parfois planter et laisser afficher un message d'erreur, Excel "invitant" alors "naïvement" l'"utilisateur" à rentrer en mode débogueur dans le code !).

    Le but étant au moins d'arriver à séparer les actions de l'utilisateur (même averti) invité à utiliser le classeur Excel partagé (et uniquement en mode utilisateur de ce classeur Excel), des actions normalement réservées au développeur de code VBA (et/ou XML) intégré au classeur. Et ce même si l'ouverture de l'application Excel qui régit tout classeur à activer (XLSX ou XLSM) permet d'ouvrir l'éditeur de code VBA à tout moment.

    Actuellement, j'utilise Excel 2010 au bureau (ça date, mais pas le choix !). Je ne sais pas si les versions ultérieures ont améliorer les mécanismes de protection du code, car c'est un point dont a toujours souffert Excel (au moins jusqu'en version 2010). La protection par mot de passe du projet VBA n'est vraiment pas suffisante. S'il n'est pas possible de produire un classeur encapsulé dans un format fermé (EXE par exemple), il faudrait au moins trouver la possibilité de désactiver le menu "Développeur" du ruban Excel (cela peut être fait en recodant l'affichage du ruban) ainsi que le raccourci clavier (Alt-F11). Un moyen de protéger contre la diffusion intempestive et incontrôlée le classeur est aussi de ne rendre opérationnel le code VBA (en totalité ou en partie) que si le fichier se trouve au bon endroit prévu pour.

    Mais n'oublions pas non plus qu'un code trop fermé est voué à long terme à disparaître. Le plus important c'est de savoir avec qui l'on travaille et si l'on pense que chacun respectera les droits d'auteur... ou pas ! Le cas échéant on peut toujours déposer le classeur dans un dossier aux droits limités suivant les utilisateurs.

    Tout cela sort un peu du sujet, mais cela montre l'intérêt de revenir à chaque fois aux fondamentaux: les besoins des utilisateurs.
    @+
    Paolo

Discussions similaires

  1. Comment obtenir un fichier .exe ? (le compiler)
    Par Heyloua dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/08/2008, 12h29
  2. [C++] Lecture de fichiers *.XLS (classeur excel)
    Par Kyrel dans le forum Windows
    Réponses: 2
    Dernier message: 03/08/2007, 18h30
  3. fichier .exe ou . bat permettant d'ouvrir un fichier excel book1.xls
    Par gilbisti dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/06/2007, 13h36
  4. Réponses: 28
    Dernier message: 22/05/2006, 16h25
  5. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09

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