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 :

Conservation d'un code VBA après fermeture


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Pha
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Pha

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Par défaut Conservation d'un code VBA après fermeture
    Bonjour, je suis tout débutant, dans le cadre de la maîtrise des documents au sein d'une entreprise dans laquelle je travaille, je souhaite créer des formulaires Excel dans lesquels le personnel peut modifier, imprimer mais pas enregistrer ( pour garder le formulaire intact). Je suis tombé sur un code qui permet de désactiver l'enregistrement de ce qui est saisi, (le code est ci dessous), il marche bien, par contre dés que je ferme le fichier excel et je le réouvre, le code VBA disparaît, SVP comment enregistrer le code VBA pour qu'il reste actif, j'en suis tellement reconnaissant

    le code que j'intègre sur ThisWorkbook :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Application.ThisWorkbook.Saved = True
    End Sub
     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Cancel = True
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Logique --->>
    1) inhibe une première fois ces deux instructions
    2) sauvegarde ton classeur
    3) réhabilite ensuite ces deux procédures

    Il est clair que ce mécanisme devra être mis en oeuvre à chaque fois que tu modifieras du code

    Et si tu es un peu ingénieux, tu installes un tout petit mécanisme pour subordonner l'exécution de tes deux procédures évènementielles à l'absence de valeur d'une variable de ton choix, à laquelle tu donnes une valeur si tu ne souhaites pas l'exécution de ces deux procédures. Cette variable peut par exemple être la propriété value d'une cellule de ton choix, que tu peux en outre rendre "illisible" en la formatant blanc sur blanc.

  3. #3
    Candidat au Club
    Homme Profil pro
    Pha
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Pha

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Par défaut Réponse
    Merci pour ta réponse , même si j'ai rien compris , peut être que je doit avoir d'abord quelques bagages en VBA , bon en tt cas merci

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Voici une macro à placer dans le module Worbook, qui comme te l'a suggéré unparia, permet de limiter l'autorisation d'enregistrement aux administrateurs désignés dans la procédure ad hoc :
    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
    Option Explicit
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
      If Not Mode_Administrateur Then
        ThisWorkbook.Saved = True
      End If
    End Sub
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      If Not Mode_Administrateur Then
        MsgBox "Vous n'êtes pas autorisé à enregistrer ce fichier !" & vbCr & vbCr & _
               "Pour toute modification contacter l'administrateur.", vbCritical
        Cancel = True
      End If
    End Sub
    Private Function Mode_Administrateur() As Boolean
    ' teste si l'utilisateurs est un administrateur
      Mode_Administrateur = _
         Environ("username") = "ADMIN" Or _
         Environ("username") = "Patrice33740" Or _
         Environ("username") = "HBK94"
    End Function
    Mais ATTENTION : il suffit que les macros soient désactivées pour que la modification et enregistrement soient possibles

    Edit : un exemple un peu plus évolué (ajoutes ton user dans la procédure Mode_Administrateur):
    Macro obligatoire.xls

Discussions similaires

  1. [Toutes versions] executer code vba apres le calcul automatique des fomules
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/12/2011, 17h42
  2. Suppression code VBA et fermeture classeur
    Par Kaaluu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/04/2009, 11h03
  3. Executer du code vba apres un publipostage
    Par xcbilx dans le forum VBA Word
    Réponses: 6
    Dernier message: 10/04/2008, 00h53
  4. Code VBA function fermeture état
    Par ThieBEN dans le forum VBA Access
    Réponses: 8
    Dernier message: 30/11/2007, 11h36
  5. Code VBA après conversion 2003->97
    Par madchemiker dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/05/2007, 16h15

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