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 :

VBA: Affichage d'un message lors de l'ouverture d'un fichier word


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 197
    Points : 53
    Points
    53
    Par défaut VBA: Affichage d'un message lors de l'ouverture d'un fichier word
    Bonjour,

    j'ai créer une macro sous Excel qui fait les étapes suivantes:

    - copier des champs Excel
    - ouvrir word
    -coller ces champs sur word (en obtenant un format image)
    -enregistre ensuite ce formulaire word dans un dossier.

    y'a t-il un moyen par lequel chaque formulaire enregistré m'affiche un msgbox lors de son ouverture qui indique que ce formulaire est à usage strictement interne ?

    Merci pour votre réponse.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    au lieu de ouvrir word de coller et enregistrer
    Il faudrait que tu ouvre un Template préalablement créer avec comme événement
    dans ThisDocument

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Document_Open()
        MsgBox "ce formulaire est à usage strictement interne"
    End Sub
    de coller et de enregistrer sous

  3. #3
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 197
    Points : 53
    Points
    53
    Par défaut
    Merci beaucoup pour votre réponse.

    je suis débutant en VBA et j'ai encore deux questions si vous me permettez:

    1) y'a t-il un moyen de faire apparaître ce msgbox uniquement après l'avoir l'enregistrer afin de ne pas le visualisez à chaque fois lors de sa création ?
    2) les fichiers créés sont transmis souvent à des personnes qui n'ont pas activés leur macro automatiquement. Est ce que ce msgbox apparaît malgré la désactivation de leur macro ?

    Merci pour votre suivi.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    oui à la question 1
    oui à la question 2

    à placer toujours dans ThisDocument

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private WithEvents App As Word.Application
     
    Private Sub Document_Open()
    Set App = Word.Application
    End Sub
     
    Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    MsgBox "ce formulaire est à usage strictement interne"
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 197
    Points : 53
    Points
    53
    Par défaut
    Désolé si je n'ai pas arrivé à m'éclaircir ma première question.au fait, je veux que le msgbox n’apparaît pas lors de sa création (ni lors de la première ouverture du template ni lors de l'enregistrement). je préfère après avoir faire le save du fichier dans le dossier sous le nom approprié et la réouverture pour la 2eme fois du document(devenu formulaire complet ) le msgbox apparaît . si je résume le msgbox apparaîtra lors de l'ouverture du formulaire complet et sauvegardé (et non pas du template).

    voici mon code sous excel:

    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
    29
    30
    31
    32
    Sub Formulaire()
     
    Dim Dte As Date
    Dim j As Byte, m As Variant
    Dim a As Integer
     
    mee = Sheets("Historique.").Cells(3, 1)
    m = Format(mee, "mmmm")
    Dte = Sheets("Offre").Cells(5, 8)
    j = Day(Dte)
    a = Year(Dte)
     
    Dim oWdApp As Object
    Dim oWdDoc As Object
     
    ligne = ActiveCell.Row
     
    Sheets("Offre").Activate
    relation = Sheets("Offre").Cells(9, 6)
     
    Set oWdApp = CreateObject("Word.Application")
    Set oWdDoc = oWdApp.Documents.Open("C:\Users\Sinfo\Desktop\Doc2.docx")
     
    oWdApp.Visible = True
    Range("A1:J47").Copy
    oWdApp.Selection.PasteAndFormat (13)
    Application.CutCopyMode = False
    oWdApp.Visible = True
    oWdApp.Selection.TypeParagraph
    oWdApp.ActiveDocument.SaveAs Filename:="C:\Users\Sinfo\Desktop\" & relation & "(" & j & "_" & m & "_" & a & ")" & ".docx"
     
    End Sub
    je vous remercie encore une fois.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Pour ce que vous voulez c'est un peu plus compliqué mais réalisable.
    Donc votre Template word devra être vide de macro dans ThisDocument.

    Il faut créer une macro word avec une macro excel.

    Premièrement dans word il faut que
    Dans Paramètre des macro "Accès approuvé au modèle d'object du projet VBA" soit coché.

    2- Dans Excel ajouter la référence "Microsoft Visual Basic for Applications Extensibility 5.3"

    3- Il faut un fichier txt qui contient ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private WithEvents App As Word.Application
     
    Private Sub Document_Open()
    Set App = Word.Application
    End Sub
     
    Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    MsgBox "ce formulaire est à usage strictement interne"
    End Sub
    on fera appel au txt dans votre code

    4-Après avoir enregistrer votre document il faut le fermer.
    ensuite on l'ouvre avec un nouvel object pour pouvoir lui insérer la macro et on enregistre.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Formulaire()
     
    Dim Dte As Date
    Dim j As Byte, m As Variant
    Dim a As Integer
     
    mee = Sheets("Historique.").Cells(3, 1)
    m = Format(mee, "mmmm")
    Dte = Sheets("Offre").Cells(5, 8)
    j = Day(Dte)
    a = Year(Dte)
     
    Dim oWdApp As Object
    Dim oWdDoc As Object
     
    ligne = ActiveCell.Row
     
    Sheets("Offre").Activate
    relation = Sheets("Offre").Cells(9, 6)
     
    Set oWdApp = CreateObject("Word.Application")
    Set oWdDoc = oWdApp.Documents.Open("C:\Users\Sinfo\Desktop\Doc2.docx")
     
    oWdApp.Visible = True
    Range("A1:J47").Copy
    oWdApp.Selection.PasteAndFormat (13)
    Application.CutCopyMode = False
    oWdApp.Visible = True
    oWdApp.Selection.TypeParagraph
     
    oWdApp.ActiveDocument.SaveAs Filename:="C:\Users\Sinfo\Desktop\" & relation & "(" & j & "_" & m & "_" & a & ")" & ".docx"
     
    oWdApp.Quit 'On ferme
     
    Set oWdApp = Nothing
    Set oWdDoc = Nothing
     
    Dim oWdApp_2 As Object
    Dim oWdDoc_2 As Object
     
    Set oWdApp_2 = CreateObject("Word.Application")
    Set oWdDoc_2 = oWdApp_2.documents.Open("C:\Users\Sinfo\Desktop\" & relation & "(" & j & "_" & m & "_" & a & ")" & ".docx")
    oWdApp_2.Visible = True
     
    'On écrit la macro à partir du txt
    oWdApp_2.VBE.VBProjects("Project").VBComponents.Item("ThisDocument").CodeModule.AddFromFile ("C:\Chemin du txt\Code.txt")
    oWdDoc_2.Save
     
    Set oWdApp_2 = Nothing
    Set oWdDoc_2 = Nothing
     
    End Sub
    J'ai tester et cela fonctionne.
    Salutation!

  7. #7
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 197
    Points : 53
    Points
    53
    Par défaut
    Bonjour ,

    Est-ce que je dois créer un fichier txt (bloc note) ? et comment intégrer le code dans ce fichier txt ?

    Merci pour votre suivi.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par LANGAZOU Voir le message
    Bonjour ,
    Est-ce que je dois créer un fichier txt (bloc note) .
    oui un fichier txt bloc note

    Citation Envoyé par LANGAZOU Voir le message
    comment intégrer le code dans ce fichier txt ?
    il faut faire seulement un copier coller de ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private WithEvents App As Word.Application
     
    Private Sub Document_Open()
    Set App = Word.Application
    End Sub
     
    Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    MsgBox "ce formulaire est à usage strictement interne"
    End Sub
    et enregistrer puis on fait appel à ce fichier txt dans ta macro excel de cette manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oWdApp_2.VBE.VBProjects("Project").VBComponents.Item("ThisDocument").CodeModule.AddFromFile ("C:\Chemin du txt\Code.txt")
    pour créer le macro word avec excel on se sert du txt, les étapes sont expliqué dans mon message précedent

  9. #9
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 197
    Points : 53
    Points
    53
    Par défaut
    ca n'a pas marché. je crois que le fichier txt doit inclure uniquement ce code pour qu'il m'affiche le msg box à l'ouverture du fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Document_Open()
        MsgBox "ce formulaire est à usage strictement interne"
    End Sub
    ensuite l'enregistrement de ce code doit se faire dans this document au niveau du projet (Normal) et non pas dans le 2ème project. j'ai fait quelque manipulations manuelles et ca marche mais je ne sais pas comment faire pour integrer le code du fichier txt dans (NORMAL, Microsoftword objects,this documents).

    j'espère que j'avais raison parce que je suis nul en VBA.

    Merci.

  10. #10
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par LANGAZOU Voir le message
    ensuite l'enregistrement de ce code doit se faire dans this document au niveau du projet (Normal) et non pas dans le 2ème project. j'ai fait quelque manipulations manuelles et ca marche mais je ne sais pas comment faire pour integrer le code du fichier txt dans (NORMAL, Microsoftword objects,this documents).
    Non il ne faut pas le mettre dans Normal car tout les document de votre ordinateur word aura ce macro
    il faut le mettre dans Project.
    si vous l'avez mit dans Normal, il faut l'enlever.
    Je ne sais pas pourquoi cela ne fonctionne pas ..... esseai avec un .doc au lieu d'un .docx


    Citation Envoyé par LANGAZOU Voir le message
    ca n'a pas marché. je crois que le fichier txt doit inclure uniquement ce code pour qu'il m'affiche le msg box à l'ouverture du fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Document_Open()
        MsgBox "ce formulaire est à usage strictement interne"
    End Sub
    effectivement ceci suffit de ce code pour avoir un msgbox à l'ouverture, je croyais avoir compris que tu voulait avoir un msgbox à l'enregistrement.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par LANGAZOU Voir le message
    2) les fichiers créés sont transmis souvent à des personnes qui n'ont pas activés leur macro automatiquement. Est ce que ce msgbox apparaît malgré la désactivation de leur macro ?
    Je vous ai induit en erreur, il faut que les macro soit activé.

  12. #12
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 197
    Points : 53
    Points
    53
    Par défaut
    re bonjour,

    Alors je pense que ca sert à rien de faire tout ce travail si les macros des destinataires sont à l'origine désactivées non !?

  13. #13
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par LANGAZOU Voir le message
    re bonjour,

    Alors je pense que ca sert à rien de faire tout ce travail si les macros des destinataires sont à l'origine désactivées non !?

  14. #14
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2015
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 197
    Points : 53
    Points
    53
    Par défaut
    Merci beaucoup pour votre aide

Discussions similaires

  1. Réponses: 12
    Dernier message: 27/12/2013, 11h41
  2. [WD-2000] Problème lors de l'ouverture d'un fichier par VBA word
    Par juju05 dans le forum VBA Word
    Réponses: 2
    Dernier message: 03/12/2010, 09h11
  3. Réponses: 1
    Dernier message: 28/03/2008, 16h06
  4. [VBA E]Pb de chemin lors de l'ouverture d'un explorateur windows
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/04/2006, 14h26
  5. [VBA-E]message lors de l'ouverture d'un autre classeur
    Par repié dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/02/2006, 15h30

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