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 :

Empecher le report du code entre des documents [WD-2010]


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Empecher le report du code entre des documents
    Bonjour à tous,

    J'ai crée un code VBA spécifique pour un document Word (qui fonctionne très bien) et que j'ai mis dans Project (Mon Doc) > Word Objects > This Document.

    Malheureusement, dès que j'ouvre simultanément un autre document Word, mon code s'active aussi dans cet autre document (et se recopie tout seul dans Project(Mon 2nd Doc) > Word Objects > This Document, ce que je ne veux absolument pas !
    Aurais-je placé mon code au mauvais endroit ? Comment puis-je faire pour que mon code soit spécifique à un seul doc ?

    Merci d'avance à tous ceux qui pourront m'aider

    edité : Au cas où, le code en question :

    Dim WithEvents oWdApp As Word.Application

    Sub Document_Open()

    Set oWdApp = Word.Application

    End Sub

    Sub oWdApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)

    MsgBox "Vous êtes sur le point de sauvegarder le document " & Doc.Name & Chr(13) & Chr(13) & "Info"

    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,
    Es-tu certain qu'il est copié ?
    Qu'il soit disponible, c'est un peu normal, qu'il soit copié ne l'est pas.
    Pour le vérifier, ouvre le second document tout seul, tu verras ce qu'il contient.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut et merci pour ta réponse !
    J'ai vérifié, il ne se copie pas mais s'applique au second document, que ce soit un doc existant que j'ouvre (mais qui ne contient pourtant aucun code) ou un que je crée...

    Exemple : J'ouvre "MonDoc" (celui avec le code VBA), si j'essaie de l'enregistrer, le message apparaît comme prévu dans le code. Je laisse "MonDoc" ouvert.
    Ensuite, j'ouvre un document vierge (donc qui ne contient aucun code). Si j'essaie de l'enregistrer, le message apparaît... C'est ça que je veux éviter, je souhaite que mon message n’apparaisse que pour "MonDoc".

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est un lien vers le modèle que tu as utilisé.
    Si tu changes le modèle du document, ça ne devrait plus se produire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut et encore merci,

    J'ai crée un nouveau modèle et donc changé le modèle de mon document (de Normal.dotm vers Modele1.dotm), mais si j'ouvre un nouveau document (qui est par défaut en Normal.dotm), mon problème persiste
    Les modèles sont-ils liés entre eux par défaut ou ais-je mal compris tes explications ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est normal, je pensais que ton code se trouvait dans un modèle autre que le normal.

    Le normal est lié par défaut à tous les documents.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Justement, je pensais avoir tout enlevé du Normal pour le mettre dans l'autre modèle... Et ça ne marche pas quand même.
    En fait, ce que je cherche à faire, c'est de rendre un code spécifique à un document et à un seul, sans qu'il aille influer sur les autres.
    Je viens d'ouvrir un second document (simultanément au premier où il y a mon code) où j'avais aussi du code VBA dedans, ça a été un sacré feu d'artifice à l'ouverture
    Au final, est-ce que c'est possible avec Word de réaliser ce que je cherche à faire ?

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour,

    oui certainement avec un code un tant soit peu logique ‼

    Tester au moins le nom du document ou son chemin, s'il est vide ou pas …


    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour Marc-L,

    Peux-tu détailler un peu ton propos (comment tester le nom du document/son chemin), mes compétences sont un peu limitées et Google pas très coopératif

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Ne pas s'étonner de voir tous les documents affectés par ce code en utilisant une classe générique pour tous les documents !
    Ce code n'est pas du tout l'air spécifique à un document …
    Vérifier aussi ce qu'il y a dans le projet Normal commun à tous les documents.

    Comme je n'ai sous le coude qu'une version 2003, je laisse la main à ceux disposant de ta version …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Hier, j'ai juste survolé ce sujet. Maintenant que je suis un peu plus attentif, je me pose une question. Cependant, j'avoue que je n'ai rien testé et que je n'ai pas vraiment le temps pour l'instant. Mais j'aimerais avoir votre avis.

    Dans le "code original"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim WithEvents oWdApp As Word.Application
     Sub Document_Open()
     Set oWdApp = Word.Application
     End Sub
    La macro est déjà dans une application Word, donc dans une première "word.application". Dans la première ligne, il semble, du moins à première vue (et sans avoir testé) qu'il y a la "création" d'une seconde "word.application". Et, si ma supposition est exacte, la seconde "word.application" devrait ouvrir un second "jeu" des mêmes modèles et donc, conserver le message dans la seconde "Word.Application".

    Donc, toujours si mes suppositions sont exactes, il faudrait enlever la première ligne, ou la remplacer par autre chose, non ?

    Mais, je vais quand même mettre cette question au "réfrigérateur" et tester plus tard.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour le code, il n'y a pas de différence entre 2003 et 2010.
    Par contre, un Private pourrait limiter l'usage du code.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut à tous,

    Citation Envoyé par Marc-L Voir le message

    Vérifier aussi ce qu'il y a dans le projet Normal commun à tous les documents.
    Normal est vide.

    Citation Envoyé par clementmarcotte Voir le message
    La macro est déjà dans une application Word, donc dans une première "word.application". Dans la première ligne, il semble, du moins à première vue (et sans avoir testé) qu'il y a la "création" d'une seconde "word.application". Et, si ma supposition est exacte, la seconde "word.application" devrait ouvrir un second "jeu" des mêmes modèles et donc, conserver le message dans la seconde "Word.Application".

    Donc, toujours si mes suppositions sont exactes, il faudrait enlever la première ligne, ou la remplacer par autre chose, non ?
    Sans la première ligne, rien ne marche. Si je ne me trompe pas, cette word.application permet de pouvoir utiliser par la suite " DocumentBeforeSave ", qui n'est pas utilisable à la base.

    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Pour le code, il n'y a pas de différence entre 2003 et 2010.
    Par contre, un Private pourrait limiter l'usage du code.
    J'avais déjà essayé, ça ne résout pas le problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/08/2013, 13h47
  2. Code entre le document er un UserForm
    Par FCL31 dans le forum VBA Word
    Réponses: 19
    Dernier message: 02/07/2008, 10h37
  3. Récupérer le code d'une relation entre des tables
    Par ClaudeLELOUP dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/05/2008, 17h51
  4. Réponses: 2
    Dernier message: 10/05/2007, 17h12
  5. Réponses: 3
    Dernier message: 19/05/2006, 11h05

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