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

VBA Word Discussion :

Word: désactiver le menu enregistrer sous


Sujet :

VBA Word

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut Word: désactiver le menu enregistrer sous
    Bonjour,

    est ce que quelqu'un connait le code VB qui permet d'ouvrir un fichier Word en bloquant le menu enregistrer sous?
    Ou un lien qui me menerais vers une réponse.

    Mon but est de l'adapter ensuite sous access pour pouvoir y ouvrir des documents Word en lecture seule (ca je sais faire) mais dont toutes copies est impossible.

    merci pour toute l'aide que vous pourrez m'apporter.

  2. #2
    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 543
    Points
    15 543
    Par défaut
    Effectivement, tu peux faire ça "en dur" sur chaque poste de travail... Mais tu imagines le résultat ?
    Ceci dit, ce n'est certainement pas la solution pour empêcher les copies
    Je me contenterais de copier le fichier et d'aller le lire sur un autre poste de travail.
    Ceci dit, j'ai vu passer quelque chose là-dessus mais pas sous Access, faudrait vérifier.
    Je cherche
    A tout'

  3. #3
    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 543
    Points
    15 543
    Par défaut
    Voilà, j'ai trouvé. Comme je t'ai dit, ce n'est ni word ni access mais tu devrais plutôt chercher de ce côté-là

    Citation Envoyé par Gerard6969
    Citation:
    L'exemple à télécharger ci dessous décrit une méthode qui permet d'ouvrir un
    classeur dans une session privée d'Excel, c'est à dire qui oblige l'utilisateur à ouvrir préalablement une autre session d'Excel pour consulter un ou des classeurs différents. L'ouverture d'un classeur au travers de l'explorateur est automatiquement exécutée dans une session différente de le session
    courante. Accessoirement, cette méthode empêche la copie des feuilles du
    classeur
    .



    Je peut pas être plus claire pour expliquer mon histoire de session unique ou privée...

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tiens un début de solution qui désactive les entrées Enregistrer et Enregistrer Sous .. de l'application word ouvrant le document...

    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
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    Sub OuvreWord(stFichier As String)
    Dim wrd As New Word.Application
    Dim c As CommandBar
    Dim cp 'As CommandBarPopup
    Dim MonDoc As Word.Document
    Set MonDoc = wrd.Documents.Open(Filename:=stFichier, ReadOnly:=True)
    On Error Resume Next
    wrd.Visible = True
     
    For Each c In wrd.CommandBars
         For Each cp In c.Controls
          If c.Type = msoBarTypeMenuBar Or c.Type = msoBarTypePopup Then
             For Each cb In cp.Controls
               If InStr(1, cb.Caption, "registrer") Then cb.Enabled = False
             Next
           End If
             If InStr(1, cp.Caption, "registrer") Or InStr(1, cp.Caption, "Enre&gistrer") Then
                     cp.Enabled = False
                End If
         Next
    Next
     
    End Sub
    Sub test()
    OuvreWord ("c:\tmp\MonDoc.doc ")
    End Sub

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    bonjour,

    merci beaucoup pour vos réponses.

    Maintenant je repart avec mon petit code et va falloir jouer au puzzle pour arranger ca avec mon code access.

    encore un tout grand merci.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    re bonjour,

    désolé de vous redéranger mais j'ai un petit problème pour adapter mon code et je me dis que c'est à cause d'un manque de compréhension du VBA.

    j'ai bien compris que ce qui inhibe mon bouton "enregistrer sous" se situe dans cette partie du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For Each c In wrd.CommandBars
         For Each cp In c.Controls
          If c.Type = msoBarTypeMenuBar Or c.Type = msoBarTypePopup Then
             For Each cb In cp.Controls
               If InStr(1, cb.Caption, "registrer") Then cb.Enabled = False
             Next
           End If
             If InStr(1, cp.Caption, "registrer") Or InStr(1, cp.Caption, "Enre&gistrer") Then
                     cp.Enabled = False
                End If
         Next
    Next
    le problème c'est que j'ai du mal a en comprendre le sens.
    Pourquoi doit-on utiliser une boucle For... Next?

    En plus, en l'adaptant sur mon bouton de formulaire je n'obtient aucun changement, le menu enregistrer sous reste actif.

    le but final est:
    clic bouton dans formulaire Access provoque ouverture du document Word attaché à l'enregistrement.
    Celui-ci s'ouvre en lecture seule.
    J'aimerais en plus rendre innaccessible le menu "enregistrer sous" pour eviter toute copie de ce fichier.

    avez vous une idée?

  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 543
    Points
    15 543
    Par défaut
    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
    For Each c In wrd.CommandBars 'pour parcourir toutes tes barres d'outils ou de menus
         For Each cp In c.Controls 'pour parcourir tous les contrôles de chaque barre de menus ou barre d'outils
          'la ligne suivante identifie le type Menu ou commande dans un menu
          If c.Type = msoBarTypeMenuBar Or c.Type = msoBarTypePopup Then
             'Et si c'est l'un ou l'autre
             For Each cb In cp.Controls ' permet de retrouver la commande "Enregistrer"
               '... et pour désactiver la commande, ligne suivante
               If InStr(1, cb.Caption, "registrer") Then cb.Enabled = False
             Next
           End If
           'Idem mais pr ts controls de toutes les barre d'outils (pour pas en oublier...)
           If InStr(1, cp.Caption, "registrer") Or InStr(1, cp.Caption, "Enre&gistrer") Then
                 cp.Enabled = False ' désactive la commande
           End If
         Next
    Next
    Pour mieux comprendre, regarde dans l'aide à "Type, Propriété", tu as un véritable cours sur la question

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    merci je vais essayer de me débrouiller avec ça.
    graçe a toi c'est déjà un peu moins nébuleux

  9. #9
    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 543
    Points
    15 543
    Par défaut
    Surtout grâce à bbil, je ne t'aurais jamais conseillé ça
    Bonne chance !

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    hello,

    j'ai adapter votre code dans access. (avec l'aide du forum acces, bien entendu,puisque je parle pas courament VBA)
    C'est presque ca!
    reste que le menu enregistrer reste présent et renvois vers enregistrer sous puisque le doc est en lecture seule

    Du coup comme il peuvent rien modifier ne serait-il pas plus judicieux d'ouvrir Word en supprimant tout les menu sauf quittez sans sauvegarde?
    Mais peut être que je vais trop loin!

    sinon il me reste également comme problème
    que quand je referme Word il me demande si je veux enregistrer les modification du fichier DOT. Y a t'il moyen de configurer non d'office et ne plus afficher les messages?

    merci pour votre aide

  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 543
    Points
    15 543
    Par défaut
    Pour désactiver les messages, tu as Application.displayalerts = false mais dans le cas d'un dot, je ne pense pas que cela suffit. Pour que ça fonctionne, je pense qu'il faudrait pouvoir le fermer en faisant "Thisworkbook.close false" mais là encore, pour un .dot, je ne sais pas si c'est possible. Tu as enfin une option (Outils -> Options -> Enregistrement -> Confirmer l'enregistrement de Normal.dot) qui permet de valider l'enregistrement auto ou manuel de ce modèle. J'ignore là encore si pour un autre modèle l'option reste valable
    Pas très constructive, mon histoire, mais c'est en attendant mieux

  12. #12
    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 543
    Points
    15 543
    Par défaut
    Je viens de relire (!) et je me pose une question : Comment se nomme ton .dot ? Si c'est Normal.dot, tu as ta réponse (la dernière)
    Mais ce que je me demande, c'est pourquoi la question de l'enregistrement t'est posée. Tu modifies une macro dans ton appli ?
    A+

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    au cas ou certaines constantes ne soit pas accessible , rajoute la ligne

    en haut de ton code.. et déclare les variables qui ne le sont pas..

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    oulala ca se complique encore plus.

    Par contre Ous'kel'nor me fais penser à quelque chose.
    le .DOT c'est donc le fichier de gestion de la configuration de word?
    si c'est le cas, je devrais pouvoir (avec un peu d'aide ) en créer un avec juste les menu quittez et imprimer qui resterais actif.

    Et ensuite demander à access de m'ouvrir le fichier avec cette version de configuration? (ca m'éviterais les message pour enregistrer les modifs du model)

    Est ce que je rêve ou est ce que ce serais possible et plus propre?

  15. #15
    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 543
    Points
    15 543
    Par défaut
    Oui, ce serait en effet une solution... me semble-t-il... Modifier les barres d'outils en dynamique m'a toujours paru risqué (envisager le plantage, les pannes... est une préoccupation... qui me préoccupe J'ai eu le pb une fois et ça m'a suffi) .
    Ajouter une barre d'outils ou un menu que l'on supprime à la fermeture du fichier n'a pas les mêmes incidences. Après plantage éventuel, le fichier incriminé une fois ré-ouvert puis refermé, tout revient dans l'ordre.
    Un modèle limité à une seule barre d'outil ne possédant que la commande "quitter" me semblerait la bonne solution. Mais pense que ce modèle devra être disponible pour chaque utilisateur : 100 postes = 100 modèles installés.
    Ton .doc devra être développé selon ce modèle. Réserve-toi une macro te permettant de tout remettre en état afin de pouvoir travailler
    Tu n'es pas obligé de placer cette macro sur ton modèle.
    Pense que ton modèle devra être enregistré. Tu n'auras plus la commande "Enregistrer". Prépare une macro placée ailleurs pour le faire
    Etc.
    Commence déjà...
    Bon courage
    A+

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Merci pour vos conseils.

    Grace à vous, J'ai donc créé un modèle DOT avec juste imprimer et quittez comme menu.
    Maintenant va falloir que j'arrive à faire comprendre à access qu'il doit m'ouvrir Word avec ce modèle.

    Mais bon ca je suppose que c'est plutot le forum access qui pourra m'y aider.

    En tout les cas encore un grand merci je trouve ses forums super sympa.


  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Bon ben j'ai du me planter quelque part car quand je modifie mon nouveau DOT ca modifie également le NORMAL donc c'est pas encore ça!!

    zut zut zut

  18. #18
    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 543
    Points
    15 543
    Par défaut
    Tu dois ouvrir un nouveau doc, l'enregistrer sous .dot dans un autre répertoire. Vas dans "Options -> Onglet "Dossier par défaut" et indique le répertoire où se trouve ton .dot
    Ferme Word, rouvre-le, ouvre ton nouveau .dot, modifie-le, enregistre-le.
    Maintenant tu peux le replacer dans modèles.
    Dans le.dot, regarde dans outils -> Modèles et complément -> Attache tes fichiers à ton nouveau .dot.
    Rétablis le Dossier par défaut "C:\Program Files\Microsoft Office\Modèles"
    Ferme Word, rouvre-le. Ouvre un "Nouveau fichier" au Modèle àToi, tu peux maintenant mettre tes affaires dedans, on devrait ne pouvoir que les lire... sauf si le gugus sait comment accéder à l'affichage par touches de fonctions

    Tu ne dois jamais travailler sur un .doc. C'est ce que tu as dû faire
    Sur Normal.dot, prépare la macro qui restitue tout, c'est un conseil
    Bonne chance

    NB - Un autre conseil : Crée une barre d'outils avec tes options plutôt que de supprimer les menus et outils des barres "standard"

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    hello,

    aïe :

    Dans le.dot, regarde dans outils -> Modèles et complément -> Attache tes fichiers à ton nouveau .dot.
    Rétablis le Dossier par défaut "C:\Program Files\Microsoft Office\Modèles"
    je ne sais pas les attacher préalablement puisque les dossiers n'ont pas encore été créer et je crois que ca risque d'être complexe de demander au utilisateur de les y attacher eux-même.

    En fait je pense que je vais leur téléphonner pour voir si je peux simplifier un peu le schmilblik car en deux semaine je me suis "arracher la moitié de mes cheveux".
    j'avoue que j'adore les défis mais j'ai horreur d'avoir l'impression de faire du sur place.
    Ou alors, je vais réflechir a une autre possibilité (mon chef propose d'ouvrir le doc en html avec l'exploreur, je vais tenter d'explorer cette piste)
    j'ai aucune idée de comment faire ou si c'est possible mais bon on va faire des recherche et qui sait...

    un tout grand merci pour ton aide et ta patience.
    désolé de t'avoir pris tout ce temps pour rien.

  20. #20
    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 543
    Points
    15 543
    Par défaut
    Ok, écoute ton chef mais là je ne peux pas t'aider
    Citation Envoyé par Tu
    je ne sais pas les attacher préalablement puisque les dossiers n'ont pas encore été créer et je crois que ca risque d'être complexe de demander au utilisateur de les y attacher eux-même.
    Je pensais à une solution soft, pas manuelle
    Bonne chance

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Modifier menu Enregistrer sous
    Par Vishnou dans le forum Windows 7
    Réponses: 1
    Dernier message: 19/11/2013, 19h50
  2. [XL-2007] Ouverture menu enregistrer sous
    Par havopti dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/05/2013, 15h55
  3. Insérer un menu enregistrer sous
    Par Marie_7 dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 24/03/2012, 22h53
  4. fenetre enregistrer sous document word à partir d'excel
    Par Australia dans le forum VBA Word
    Réponses: 8
    Dernier message: 24/10/2006, 17h53
  5. Réponses: 13
    Dernier message: 11/05/2006, 16h26

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