Créer un .exe sous Excel

Chacalou13 Messages postés 405 Statut Membre -  
sifusalade Messages postés 142 Statut Membre -
Salut tout le monde,
J'ai créé un bel outil sous Excel et je voudrais savoir si on peut faire qq chose pour pouvoir l'ouvrir sans aller fouiner dans le code ( mais sans utiliser la protection du doc).
Autrement dit, je voudrais créer une sorte d'exécutable pour qu'il ne puisse pas avoir accès aux fonctionnalité d'Excel.
Est-ce possible ???
Merci d'avance.

Grève de la signature

15 réponses

Résumé de la discussion

Plusieurs utilisateurs cherchent à ouvrir un outil Excel sans explorer le code et veulent transformer un classeur en exécutable afin d’empêcher l’accès aux fonctionnalités d’Excel. Plusieurs solutions existent, comme protéger le projet VBA par mot de passe, bloquer les raccourcis et afficher Excel en plein écran sans onglets lors de l’ouverture, puis réactiver ces options à la fermeture. D'autres évoquent des convertisseurs Excel-to-exe, mais cela ne garantit pas une protection efficace et peut nécessiter des chargements supplémentaires ou des licences. En pratique, la protection reste fragile et dépend fortement du contexte: les protections VBA et les paramètres d’interface ne bloquent pas les utilisateurs déterminés et peuvent être contournées.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Yce
     
    Bonjour Chacalou13,
    Je ne sais pas si cela peut t'aider, mais moi, je protege mes fichiers comme ceci pour que les utilisateurs ne triffouillent pas de trop. en prime mes feuilles et mon code vba sont protegés par mot de passe. je sais bien qu'il est toujours possible de "Bidouiller" mais ça marche pour la plupars des utilisateurs.
    Cela se passe en 2 temps. D'abord, a l'ouverture, blocage de tous les raccourcis et affichage en plein ecran sans les onglets.
    Ensuite, a la fermeture, reactivation de toutes ces options (il vaut mieux)

    Dans "ThisWorkbook":

    '_______________________________________________________
    Private Sub Workbook_Open()

    Application.WindowState = xlMaximized
    Application.DisplayFullScreen = True
    ActiveWindow.DisplayWorkbookTabs = False
    Application.DisplayFormulaBar = False
    ActiveWindow.DisplayHeadings = False
    Application.CommandBars(1).Enabled = False
    Application.DisplayStatusBar = False
    boolFermeture = False

    'desactivation raccourcis claviers

    'Alt
    Application.OnKey "%{F1}", ""
    Application.OnKey "%{F2}", ""
    Application.OnKey "%{F3}", ""
    Application.OnKey "%{F4}", ""
    Application.OnKey "%{F5}", ""
    Application.OnKey "%{F6}", ""
    Application.OnKey "%{F7}", ""
    Application.OnKey "%{F8}", ""
    Application.OnKey "%{F9}", ""
    Application.OnKey "%{F10}", ""
    Application.OnKey "%{F11}", ""
    Application.OnKey "%{F12}", ""
    'Direct
    Application.OnKey "{F2}", ""
    Application.OnKey "{F3}", ""
    Application.OnKey "{F4}", ""
    Application.OnKey "{F5}", ""
    Application.OnKey "{F6}", ""
    Application.OnKey "{F7}", ""
    Application.OnKey "{F8}", ""
    Application.OnKey "{F9}", ""
    Application.OnKey "{F10}", ""
    Application.OnKey "{F11}", ""
    Application.OnKey "{F12}", ""
    'Ctrl
    Application.OnKey "^{F1}", ""
    Application.OnKey "^{F2}", ""
    Application.OnKey "^{F3}", ""
    Application.OnKey "^{F4}", ""
    Application.OnKey "^{F5}", ""
    Application.OnKey "^{F6}", ""
    Application.OnKey "^{F7}", ""
    Application.OnKey "^{F8}", ""
    Application.OnKey "^{F9}", ""
    Application.OnKey "^{F10}", ""
    Application.OnKey "^{F11}", ""
    Application.OnKey "^{F12}", ""
    'shift
    Application.OnKey "+{F1}", ""
    Application.OnKey "+{F2}", ""
    Application.OnKey "+{F3}", ""
    Application.OnKey "+{F4}", ""
    Application.OnKey "+{F5}", ""
    Application.OnKey "+{F6}", ""
    Application.OnKey "+{F7}", ""
    Application.OnKey "+{F8}", ""
    Application.OnKey "+{F9}", ""
    Application.OnKey "+{F10}", ""
    Application.OnKey "+{F11}", ""
    Application.OnKey "+{F12}", ""

    End Sub
    Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Call fermeture

    End Sub

    Dans un module:
    '____________________________________________
    Sub fermeture()
    ActiveWindow.DisplayWorkbookTabs = True
    Application.DisplayFormulaBar = True
    ActiveWindow.DisplayHeadings = True
    Application.CommandBars(1).Enabled = True
    Application.DisplayStatusBar = True
    Application.DisplayFullScreen = False
    boolFermeture = True
    ActiveWorkbook.Close True

    'Activation raccourcis claviers

    'Alt
    Application.OnKey "%{F1}"
    Application.OnKey "%{F2}"
    Application.OnKey "%{F3}"
    Application.OnKey "%{F4}"
    Application.OnKey "%{F5}"
    Application.OnKey "%{F6}"
    Application.OnKey "%{F7}"
    Application.OnKey "%{F8}"
    Application.OnKey "%{F9}"
    Application.OnKey "%{F10}"
    Application.OnKey "%{F11}"
    Application.OnKey "%{F12}"
    'Direct
    Application.OnKey "{F2}"
    Application.OnKey "{F3}"
    Application.OnKey "{F4}"
    Application.OnKey "{F5}"
    Application.OnKey "{F6}"
    Application.OnKey "{F7}"
    Application.OnKey "{F8}"
    Application.OnKey "{F9}"
    Application.OnKey "{F10}"
    Application.OnKey "{F11}"
    Application.OnKey "{F12}"
    'Ctrl
    Application.OnKey "^{F1}"
    Application.OnKey "^{F2}"
    Application.OnKey "^{F3}"
    Application.OnKey "^{F4}"
    Application.OnKey "^{F5}"
    Application.OnKey "^{F6}"
    Application.OnKey "^{F7}"
    Application.OnKey "^{F8}"
    Application.OnKey "^{F9}"
    Application.OnKey "^{F10}"
    Application.OnKey "^{F11}"
    Application.OnKey "^{F12}"
    'shift
    Application.OnKey "+{F1}"
    Application.OnKey "+{F2}"
    Application.OnKey "+{F3}"
    Application.OnKey "+{F4}"
    Application.OnKey "+{F5}"
    Application.OnKey "+{F6}"
    Application.OnKey "+{F7}"
    Application.OnKey "+{F8}"
    Application.OnKey "+{F9}"
    Application.OnKey "+{F10}"
    Application.OnKey "+{F11}"
    Application.OnKey "+{F12}"
    End Sub
    1
    1. sifusalade Messages postés 142 Statut Membre 7
       
      ta méthode me semble fort intéressante, mais peux tu expliquer à quoi corresponds
      boolFermeture = False
      ?

      Et, est-ce que le temps que ce classeur est ouvert, ces paramètres s'appliquent aux autres classeurs ouvert ?

      Si par exemple, j'ai un fichier A ouvert où j'ai besoin des ces fonctions, le fait d'ouvrir ce fichier B (qui contient tout ça) va t-il appliquer ces paramètres au fichier A ?

      Application.ToutCeQuiSuit
      est-il lié à Excel lui même ?
      0
    2. Yce
       
      Bonjour sifusalade,

      boolFermeture = False bloque la croix de fermeture du classeur, l'exemple que j'ai donné est un peu mal choisi parce que normalement il aurait fallu separer les chose a la fermeture:
      je m'explique, dans le Workbook_BeforeClose il faut mettre:

      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      'Empêche la fermeture du classeur par la croix
      If boolFermeture = False Then Cancel = True
      End Sub

      et pour fermer le fichier j'utilise un bouton qui commande la macro "fermeture" et dans le haut du module correspondant je rajoute : Public boolFermeture As Boolean

      Pour repondre a ta question sur les parametres, ils s'appliquent a tous les fihiers ouverts dans la même session tant que celui-ci ne sera pas fermé, mais il y quand même une possibilité de rajouter un test en fonction du fichier actif pour gerer l'activation ou la desactivation des raccourcis et autres fonctions

      "Application.ToutCeQuiSuit" ne s'applique qu'a la session Excel ouverte, si tu as un fichier word à coté, il ne sera pas impacté.

      Dans l'exemple, j'ai séparé les choses pour que chacun puisse "jouer" avec les divers raccourcis, mais il y a plus simple si on veut oter tous les raccourcis.
      _____________________________________________________
      Dans Workbook_Open je remplace tous les "Application.ToutCeQuiSuit" par:
      Desactive_Raccourcis
      Dans Fermeture je remplace tous les "Application.ToutCeQuiSuit" par:
      Active_Raccourcis
      _____________________________________________________
      Dans un module
      _____________________________________________________
      Sub Desactive_Raccourcis()
      Dim Combin As Variant
      Dim RacsArray As Variant
      Dim Rac As Variant
      Dim I As Long
      On Error Resume Next
      'Shift = "+"
      'Ctrl = "^"
      'Alt = "%"
      'Shift-Ctrl, Shift- Alt, Ctrl-Alt, Shift-Ctrl-Alt

      For Each Combin In Array("+", "^", "%", "+^", "+%", "^%", "+^%")

      RacsArray = Array("{BS}", "{BREAK}", "{CAPSLOCK}", "{CLEAR}", "{DEL}", _
      "{DOWN}", "{END}", "{ENTER}", "~", "{ESC}", "{HELP}", "{HOME}", _
      "{INSERT}", "{LEFT}", "{NUMLOCK}", "{PGDN}", "{PGUP}", _
      "{RETURN}", "{RIGHT}", "{SCROLLLOCK}", "{TAB}", "{UP}")

      'Desactive les raccourcis clavier
      For Each Rac In RacsArray
      Application.OnKey Combin & Rac, ""
      Next Rac

      'Desactive les raccourcis numeriques
      For I = 0 To 255
      Application.OnKey Combin & Chr$(I), ""
      Next I
      'Desactive les raccourcis F1 - F15 avec Shift, Ctrl ou Alt
      For I = 1 To 15
      Application.OnKey Combin & "{F" & I & "}", ""
      Next I
      Next Combin
      'Desactive les raccourcis F1 - F15
      For I = 1 To 15
      Application.OnKey "{F" & I & "}", ""
      Next I
      'Desactive PGDN and PGUP
      Application.OnKey "{PGDN}", ""
      Application.OnKey "{PGUP}", ""
      End Sub
      _____________________________________________________

      et pour les reactiver avant la fermeture
      _____________________________________________________

      Sub Active_Raccourcis()
      Dim Combin As Variant
      Dim RacsArray As Variant
      Dim Rac As Variant
      Dim I As Long

      On Error Resume Next

      'Shift = "+"
      'Ctrl = "^"
      'Alt = "%"
      'Shift-Ctrl, Shift- Alt, Ctrl-Alt, Shift-Ctrl-Alt

      For Each Combin In Array("+", "^", "%", "+^", "+%", "^%", "+^%")
      RacsArray = Array("{BS}", "{BREAK}", "{CAPSLOCK}", "{CLEAR}", "{DEL}", _
      "{DOWN}", "{END}", "{ENTER}", "~", "{ESC}", "{HELP}", "{HOME}", _
      "{INSERT}", "{LEFT}", "{NUMLOCK}", "{PGDN}", "{PGUP}", _
      "{RETURN}", "{RIGHT}", "{SCROLLLOCK}", "{TAB}", "{UP}")
      ' Active les raccourcis clavier
      For Each Rac In RacsArray
      Application.OnKey Combin & Rac
      Next Rac
      ' Active les raccourcis numeriques
      For I = 0 To 255
      Application.OnKey Combin & Chr$(I)
      Next I
      ' Active les raccourcis F1 - F15 avec Shift, Ctrl ou Alt
      For I = 1 To 15
      Application.OnKey Combin & "{F" & I & "}"
      Next I
      Next Combin
      ' Active les raccourcis F1 - F15
      For I = 1 To 15
      Application.OnKey "{F" & I & "}"
      Next I
      'Active PGDN and PGUP
      Application.OnKey "{PGDN}"
      Application.OnKey "{PGUP}"
      End Sub
      0
    3. sifusalade Messages postés 142 Statut Membre 7
       
      Merci beaucoup Yce pour ces réponses qui sont en plus claires et précises ;)
      0
  2. SHERRED
     
    http://www.drmsoft.com/Excel-to-exe-converter.asp
    1
  3. Pitu Messages postés 1460 Statut Contributeur 125
     
    Diantre !!!
    Pas courant, ce que tu cherches à faire.
    Ca tient plus de la programmation VB qu'à de la feuille de calcul (au passage, je te rappelle qu'Excel n'est qu'un tableur, à l'origine ... ;o) )
    Et cette feuille, elle doit faire quoi ? Calculer et afficher un résultat ? Imprimer quelque chose ?
    En tout cas, ça me parait pas gagné, ton affaire ...
      (:•Þ   Pitu
    0
  4. Chacalou13 Messages postés 405 Statut Membre 21
     
    En fait c'est un outil de consultation.
    Donc un Menu qui mène à d'autres feuilles, grace à des macros, des filtres élaborés, etc...
    Le tout mixé avec un poil de VBA pour le faire apparaitre en plein écran , et lui donner ainsi l'apparence d'une application.
    Le pb, c'est qu'avec un minimum de connaissance, tu peux facilement casser ce mode plein ecran (et même faire des modif à l'aide des raccourcis clavier).
    Bref, j'essaie donc de trouver un moyen de faire qu'on ne puisse plus faire de mal à mon appli mais sans utiliser la protection du classeur .
    Ouf c'est dit ....

    Grève de la signature
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Chacalou13 Messages postés 405 Statut Membre 21
     
    Merci bcp, je vais aller un peu fouiner par là-bas..

    Grève de la signature
    0
  7. Profil bloqué
     
    tu peux désactiver ou protéger les feuille contre toutes les actions.
    sinon tu peux caher ton code avec un mot de passe (faut voir dans les options de Visual Basic Editor) comme ça ton code sera protégé

    mais pour produire un executable sous excel , c'est impossible , je le confirme, j'ai même assisté à un séminaire de Microsoft où cette question à été posée.

    time is not money, time is life
    0
    1. yba
       
      tu dis que l'on peux désactiver ou protéger les feuille contre toutes les actions.
      Je cherche actuellement à empêcher, sur une feuille protégé, le fait qu'on puisse changer son nom.
      Je ne peux pas simplement protéger le classeur car toutes les autres feuilles du classeur ne sont pas concernées par cette protection.
      Merci d'avance si une solution existe en vba.

      youcef
      0
    2. haque_coucou Messages postés 8 Statut Membre 1 > yba
       
      Cela depend de ce que tu veux faire.
      Les usagers de ton appli ont ils besoin de voir ta feuille ou non?

      Si oui, ben ca va etre dur car j'ai un peu regardé et il est vrai que la fonction protect peut tout verrouiller excepter le nom d'onglet...

      Si non, alors là c'est assez simple, meme pas besoin de code: tu vas dans ces propriete vba et tu lui dis SheetNotVisible.

      Tiens moi au courant ;-)

      Poiloulpilou!
      0
    3. yba > haque_coucou Messages postés 8 Statut Membre
       
      Bonjour,
      Merci très beaucoup pour ta réponse,
      malheureusemnt je m'attendais à ce que soit non positif car cette feuille doit rester pour de multiples raisons visible car par exemple quand on ouvre un classeur vierge de tout travail cette feuille est la seule présente et dans ce cas je ne peux pas la rendre non visible.
      En tout les cas merci pour le coup de main.
      Je continue à réfléchir et je tiens au courant en cas de miracle.
      A bientôt.
      youcef
      0
    4. haque_coucou Messages postés 8 Statut Membre 1 > yba
       
      Dans ces cas la, tu n'as pas 36 solutions.
      La seule que je vois, c'est de faire la mise a jour du nom a chaque evenement du classeur: on open, on change... C'est la seule maniere, a ma connaissance d'avoir un minimum de probleme sur ce nom de feuille...

      Poiloulpilou!
      0
    5. yba > yba
       
      Je n'ai pas saisi ton astuce, de quel évenement parles-tu ?
      0
  8. Chacalou13 Messages postés 405 Statut Membre 21
     
    Bonjour et Merci Mr filaliabdou,

    Eh bien tant pis pour moi.
    Je vais protéger les feuilles une à une, à l'ancienne.
    Je vais écrire à Billou pour qu'il rajoute cette fonctionnalité :-)), ca pourrait être partique.
    Parce que avoir le message d'erreur d'Excel quand tu essaies de remplir un champ protégé, c'est pas forcément très esthétique...
    0
  9. Haque_coucou
     
    Bijour!
    Je travail sur excel et le code VBA derriere toute la journee.
    Je peux t'assurer que tu peux tout verrouiller avec le code VBA, si tu as des questions, ecris moi à haque_coucou@hotmail.com
    Par contre, le point bloquant que j'essai de resoudre en ce moment, c'est la desactivation/réaffectation des raccourcis windows.
    Si quelqu'un a des idees la dessus....

    Bizoo a tous ;-)
    0
  10. Chacalou13 Messages postés 405 Statut Membre 21
     
    Salut Haque_coucou,

    Effectivement, mais ce post date un peu, et j'ai trouvé la solution depuis.
    Pour ton problème, je crois que tu peux assez facilement supprimer tous les raccourcis clavier en VB.
    Quand à la réaffectation , là ça me semble plus dur...

    Grève de la signature
    0
    1. haque_coucou Messages postés 8 Statut Membre 1
       
      Et non, tu ne peux pas supprimer les raccourcis windows comme ctrl+alt+sup par exemple, la est le probleme....
      Du coup, je cherche tjs!

      Poiloulpilou!
      0
    2. Francois
       
      Bien sur que tu peux reaffecter des raccourcis clavier a Excel, de la meme maniere que tu les annules.
      Du genre
      application.onkey "+c", "" annule la fonction CTRL + C pour application.onkey "+c", "macro1" attrinue a CTRL + C la macro macro1
      application.onkey "+c" reinitiolise CTRL + C (fonction copier).

      Ainsi pur proteger un classeur correctement, c'est un peu lourd, mais c'est faisable, tu peux desactiver tous les menu d'EXCEL, annuler le clique droit, proteger toutes les feuilles, proteger le classeur et annuler tous les raccourcis., tous ca avec l'obligation d'activer les macros, et c'est a peu pres protege.

      Bon courage

      Mangda
      0
  11. haque_coucou Messages postés 8 Statut Membre 1
     
    Oui mais non!
    Ca ne fonctionne pas pour les raccourcis alt+tab, alt+esc
    par exemple.
    Si quelquun a une solution la dessus...

    Poiloulpilou!
    1
  12. Chacalou13 Messages postés 405 Statut Membre 21
     
    C'est assez marrant de voir que 3 ans et 6 mois (au jour près !!!) après ce post, je me repose la même question !!!

    Et qu'en cherchant sur gogole je tombe sur mon propre message !

    0
    1. Chacalou13 Messages postés 405 Statut Membre 21
       
      C'est encore plus marrant de voir que 4 ans et 9 mois après ce post, je me repose encore la même question !!!
      Il faudrait vraiment penser à créer des éxécutables depuis Excel ...

      Grève de la signature
      0
  13. Chacalou13
     
    faut vraiment que je change de métier ...
    0
  14. Mumu003
     
    A quand ta recherche pour l'année 2010 ?
    héhéhé...
    0
    1. Chacalou13 Messages postés 405 Statut Membre 21
       
      hé hé hé et oui fonctionnalité toujours inexistante ... et puis 7 ans après je fais encore la même chose .... faut vraiment que je change de métier !!!!
      0
    2. Théo
       
      la userform d'excel correspond à peu de chose près à une appli indépendante que tu aurais toi même codé. tu la lance et une page s'ouvre par dessus ta page excel active. Après ca tu n'as plus qu'à dissimuler ta page excel en la réduisant ou avec .visible = false (j'ai pas vérifié si la syntaxe fonctionne), puis c'est tout. Pour mieux faire tu peux meme executer ta USF à l'ouverture du fichier puis l'enregistrer et quitter à la fermeture de la USF, tout en n'oubliant pas de te laisser un moyen sécurisé d'accéder à ton code. Via un cmdButton protégé par mdp par exemple. Voila je sais pas si ca aide...
      0
    3. Théo
       
      (par contre pour faire ça faut manger pas mal de VBA)
      0
    4. Chacalou13 Messages postés 405 Statut Membre 21
       
      Oui c'est comme ça que je m'en sors mais ça n'empêche pas que l'on peut rentre facilement dans Excel par un Echap ou autre subtile Shift pour zapper le Workbook Open ... donc faut vraiment appeler Bill Gates ....
      Merci quand même :-)
      0
    5. Tonton Léon
       
      En fait toute la question tient à ceci :
      Comment réaliser avec Excel (ou Open-Office Calc) les applis que Multiplan permettait facilement il y a plus de vingt ans : une page de calcul débarrassée de toutes les barres de menus Microsoft et de toutes les lignes de menus Microsoft, mais où seuls celles que j'avais décidé de laisser ou de créer apparaissaient : l'utilisateur de la page ne pouvait alors que procéder aux calculs (et affichages) prévus. C'était l'enfance de l'art.
      Et c'était exactement la même chose avec le gestionnaire de base de données dBase.

      Maintenant que les concepteurs ont pris l'habitude de nous vendre des applis qui sont à la bureautique ce que les 38 tonnes sont à la mère de famille qui va chercher son pain à la boulangerie du coin ... maintennt que, donc, tut est devenu infiniment plus compliqué ...!
      0
  15. Ori
     
    Sinon à venir, à voir ce que ça donne: www.xlExe.com, le programme était en ligne pendant 3 jours, mais n'y est plus.
    0
  16. Chacalou13 Messages postés 405 Statut Membre 21
     
    Pas mal j'espère que les 2 derniers liens seront utiles à ceux qui se poseraient la question ....

    moi c'est bon j'en ai plus besoin dorénavant ;-)
    0