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 :

Interdire enregistrer sous excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 268
    Points : 98
    Points
    98
    Par défaut Interdire enregistrer sous excel
    Bonjour
    J'ai un fichier excel contenant des userforms avec des textbox qui sont liées à des cellules. De ce fait, je souhaiterais interdire la fonction "enregistrer" de ce fichier ou la protéger par un code. Attention cette fonction doit permettre à l'utilisateur de travailler sous le nom de ce fichie mais de pas l'enregistrer.
    La protection classique proposé par excel ne me convient pas.
    Merci de votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Voici une méthode de "bourrin" :

    Elle empêche l'utilisateur d'accèder au menu fichier, à l'icone disquette et d'utiliser le raccourci clavier.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub empecheEnr()
     
        With Application.CommandBars("Standard")
            .Controls("Enre&gistrer").Enabled = False
        End With
        With Application.CommandBars("Worksheet Menu Bar")
            .Controls("Fichier").Enabled = False
        End With
     
        'desactive le raccourci clavier Ctrl+S
        Application.OnKey "^s", ""
     
    End Sub

  3. #3
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Bonjour,
    perso, j'utilise un fichier modèle (.xlt) mis à dispo sur le réseau. L'utilisateur peut créer un nouveau fichier, mais pas modifier le modèle qui est protégé par un mot de passe.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Pour info il y a aussi ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_BeforeClose()
        ' ferme le classeur modifié sans l'enregistrer et sans qu'un message vous propose de le faire.
        ThisWorkbook.Saved = True
    End Sub

  5. #5
    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 546
    Points
    15 546
    Par défaut
    Faire suivre ThisWorkbook.Saved = true de la ligne

  6. #6
    Membre régulier Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par choucks
    Voici une méthode de "bourrin" :

    Elle empêche l'utilisateur d'accèder au menu fichier, à l'icone disquette et d'utiliser le raccourci clavier.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub empecheEnr()
     
        With Application.CommandBars("Standard")
            .Controls("Enre&gistrer").Enabled = False
        End With
        With Application.CommandBars("Worksheet Menu Bar")
            .Controls("Fichier").Enabled = False
        End With
     
        'desactive le raccourci clavier Ctrl+S
        Application.OnKey "^s", ""
     
    End Sub
    Je rebondis sur un sujet connexe et voudrais savoir si pour les contrôles de ce type, il existe un nom générique qui ne fasse pas intervenir le parler du cru.
    Je m´explique: je bosse en Allemagne, sur un windows en langue de Goethe donc et chez moi, le ".Controls("Enregistrer")" est en fait ".Controls("Speichern")", et ca vaut pour toutes instructions de mon code où intervient la langue locale de l´appli.
    Du coup, pour mes collègues de par le vaste monde qui recoivent mes fichiers, en termes de portabilité pour mes macros, c´est ... comment dire ...
    donc, existe-t-il une typo globale (j´imagine par exemple un "Savecontrol" ou un "NewFileControl") sans intervention d´un language local ? Si oui, ou puis-je la trouver ?
    D´avance merci

  7. #7
    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 546
    Points
    15 546
    Par défaut
    Tu peux retrouver le nom avec le caption du bouton. Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each ctrl In Application.CommandBars("Standard").Controls
    i = i + 1
    MsgBox "Controls(" & i & ")" & " => " & ctrl.Caption '& Application.CommandBars("Standard").Controls(i).Caption
    Next
    Just ça à modifier
    A+

    PS - Comment ça se dit "Standard" en allemand ? T'as intérêt à le savoir parce sinon, ça fonctionnera pas

  8. #8
    Membre régulier Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 87
    Points
    87
    Par défaut
    juste ce dont j´avais besoin
    merci

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut macro excel
    Salut tout le monde

    J'ai utilisé la méthode de "bourrin" pour empécher l'enregistrement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub empecheEnr()
     
        With Application.CommandBars("Standard")
            .Controls("Enre&gistrer").Enabled = False
        End With
        With Application.CommandBars("Worksheet Menu Bar")
            .Controls("Fichier").Enabled = False
        End With
     
        'desactive le raccourci clavier Ctrl+S
        Application.OnKey "^s", ""
     
    End Sub
    Mais "petit" problème, maitenant je n'ai plus accès au menu fichier sur n'importe quel doc...

    Aidez-moi svp

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_BeforeClose()
     
        With Application.CommandBars("Standard")
            .Controls("Enre&gistrer").Enabled = True
        End With
        With Application.CommandBars("Worksheet Menu Bar")
            .Controls("Fichier").Enabled = True
        End With
     
    End Sub
    En rétablissant à la fermeture du fichier, ça refonctionne ?

  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 546
    Points
    15 546
    Par défaut
    Citation Envoyé par klrblz Voir le message
    Salut tout le monde

    J'ai utilisé la méthode de "bourrin" (de choucks) pour empécher l'enregistrement:

    Mais "petit" problème, maitenant je n'ai plus accès au menu fichier sur n'importe quel doc...

    Aidez-moi svp
    C'est malin !
    Quand tu modifies les barres d'outils ou que tu les masques, le modèle conserve les modifications.
    Tape Alt + A pour afficher le menu affichage. Et là, tu as accès à "Barres d'outils", barre d'état et barre de formules

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Santé

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Tu as eu une réponse
    Citation Envoyé par doringen Voir le message
    Je rebondis sur un sujet connexe et voudrais savoir si pour les contrôles de ce type, il existe un nom générique qui ne fasse pas intervenir le parler du cru.
    Je m´explique: je bosse en Allemagne, sur un windows en langue de Goethe donc et chez moi, le ".Controls("Enregistrer")" est en fait ".Controls("Speichern")", et ca vaut pour toutes instructions de mon code où intervient la langue locale de l´appli.
    Du coup, pour mes collègues de par le vaste monde qui recoivent mes fichiers, en termes de portabilité pour mes macros, c´est ... comment dire ...
    donc, existe-t-il une typo globale (j´imagine par exemple un "Savecontrol" ou un "NewFileControl") sans intervention d´un language local ? Si oui, ou puis-je la trouver ?
    D´avance merci
    Hello, la question m'intéresse. Est-ce que tu as trouvé une réponse 11 ans plus tard?

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    sert toi des index de bouton et non de leur capiton normalement c'est pareil pour toutes les langues

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Santé

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci, effectivement ça sera pas mal.

    Cependant, je me pose la question d'une manière plus générale.... Dans ma boite certains ont leur PC en Français, d'autres en anglais. Ma Macro génère une formule Excel automatiquement en =IF(), en Français ça ne marchera pas... De la meme manière que certaines fonctions / noms etc. sont typées par langue.
    Donc en gros la question serait : est-ce qu'il y a un moyen de dire à Excel / VBA "je code en anglais" ou en global, et qu'il fasse la traduction des parties "typées"?

  15. #15
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par StefBBR Voir le message
    Hello, la question m'intéresse. Est-ce que tu as trouvé une réponse 11 ans plus tard?
    Do It yourself.

    Lance ce code et tu auras toutes les barres et tous les contrôles avec leurs indices et leur nom qui s'affichera dans la fenêtre d'exécution.
    Ensuite, tu n'auras plus qu'à trouver les tiens et à utiliser leur index comme le conseille Patrick.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
     
    Dim CB As Long, CT As Long
    For CB = 1 To Application.CommandBars.Count
        Debug.Print "CommandBars " & CB & " : " & Application.CommandBars(CB).Name
        For CT = 1 To Application.CommandBars(CB).Controls.Count
            Debug.Print "    Control " & CB & "-" & CT & " : " & Application.CommandBars(CB).Controls(CT).Caption
        Next CT
    Next CB
     
    End Sub
    Citation Envoyé par StefBBR Voir le message
    Dans ma boite certains ont leur PC en Français, d'autres en anglais. Ma Macro génère une formule Excel automatiquement en =IF(), en Français ça ne marchera pas...
    Je ne sais pas quelle instruction tu utilises pour inscrire les formules dans les cellules, mais avec Formula, tu peux (tu dois) écrire la formule en anglais, quelle que soit la langue de l'Excel concerné.
    C'est FormulaLocal qui te permet d'écrire des formule dans la langue... locale.
    https://msdn.microsoft.com/fr-fr/lib.../ff838835.aspx
    https://msdn.microsoft.com/fr-fr/lib.../ff838851.aspx

Discussions similaires

  1. Interdire enregistrer sous excel
    Par nevenblouet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/07/2014, 14h39
  2. [XL-2010] bloquer enregistrer sous Excel 2010
    Par moi244 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/12/2011, 16h49
  3. [VxiR2] Enregistrement sous excel en-tête et pieds de page
    Par cgblois dans le forum Webi
    Réponses: 3
    Dernier message: 11/07/2011, 17h26
  4. Enregistrement sous Excel
    Par Snooky68 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/07/2008, 12h42
  5. Interdire enregistrer sous
    Par arsay200 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/03/2008, 19h37

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