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

IHM Discussion :

Macro commande pour envoyer un formulaire sur Word [AC-2010]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut Macro commande pour envoyer un formulaire sur Word
    Bonjour tout le monde !!!!!

    J'ai sur mon formulaire j'ai créer un bouton et j'aimerais avoir une macro commande afin que le formulaire choisi se transfère directement sur Word (système de publipostage)

    Je sais qu'il est possible de le faire (il y a un onglet spécial sur Access) mais je souhaiterais que ce soit plus automatiser et plus direct avec le bouton et la macro !!
    Merci beaucoup.

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Tu veux dire que tu veux transférer les données d'un enregistrement, par exemple prénom, nom, adresse, etc., vers un document Word ?

    Si oui, un exemple avec deux champs contenant le nom et le prénom.

    D'abord, référencer Word dans ton projet. Dans l'éditeur VBA, menu Outils ==> Références, tu cherches Microsoft Word 12.0 Object Library et tu la coches pour l'ajouter à ton projet.

    Ensuite, tu prépares un document Word avec divers signets : Nom, Prénom, etc...

    Dans ton formulaire Access, diverses zones de textes avec comme nom, strNom, strPrenom, etc...

    Sur ton formulaire, un bouton cmdPublipostage et dans l'événement Sur clic, ce début de code.

    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
    Private Sub cmdPublipostage_Click()()
     
        'En cas d'erreur, on n'en tient pas compte
        On Error Resume Next
     
        'Déclaration d'une instance Word
        Dim W_App As New Word.Application
     
        'Instance Word
        With W_App
     
            'Word est visible à l'écran ou non
            .Visible = True
     
            'Ouvre le document Word avec les signets
            .Documents.Open ("C:\....\NomDeTonDocument.doc")
     
            'Tranfert du nom : strNom ==> Signet Nom
            .ActiveDocument.Bookmarks("Nom").Select
            .Selection.Text = Me.strNom
     
             'Tranfert du nom : strPrenom ==> Signet Prénom
            .ActiveDocument.Bookmarks("Prenom").Select
            .Selection.Text = Me.strPrenom
     
            'Sauvegarde du nouveau document
            .ActiveDocument.SaveAs ("Nouveau document.Doc")
     
            'Fermeture de Word
            .Quit
     
        End With
     
        'Libération de l'objet Word         
        Set W_App = Nothing
     
    End Sub
    C'est un code pour démarrer. Plusieurs options sont possibles.

    • créer le document à partir d'un modèle Word ;
    • imprimer le document ;
    • spécifer le répertoire de sauvegarde ;
    • afficher la boîte de dialogue Enregistrer sous... de Word ;
    • etc.


    Tu peux déjà faire un essai avec ça et tu pourras le compléter/modifier selon tes besoins.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    bonjour !!!!

    j'ai essayé le code mais ça ne fonctionne pas (je m'y suis probablement mal prise) !

    Alors j'ai modifier la première ligne car ça ne lui plaisait pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Sub Commande68_Click()
    mais lorsque je clique sur le bouton, un message d'erreur apparait : "erreur de compilation type défini par l'utilisateur non défini" et le code surligné est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Déclaration d'une instance Word
    Dim W_App As New Word.Application!
    j'ai probablement raté une étape

    dois-je envoyer mon fichier ?!

    merci beaucoup

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Pour la première ligne, c'est normal, le nom de ton bouton est différent (Commande68 et non cmdPublipostage).

    Il faut faire attention avec les noms que tu utilises pour tes objets, si tu les laisses sans signification réelle, ça devient problématique à la longue pour maintenir ton code. Un tuto à lire, Descriptif des conventions typographiques du code Visual Basic.

    Pour ton deuxième problème :

    D'abord, référencer Word dans ton projet. Dans l'éditeur VBA, menu Outils ==> Références, tu cherches Microsoft Word 12.0 Object Library et tu la coches pour l'ajouter à ton projet.
    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    En effet, ce premier problème à été résolu (merci ), il me reste celui concernant le problème des "str" (enfin je pense que c'est le problème) !


    je vais essayer de comprendre le "tuto"

    merci beaucoup

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonsoir,

    Si tu fais références à ceci par exemple, strNom, c'est le nom donné à une zone de texte du formulaire Access qui contient une donnée à transférer vers Word.

    Dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Tranfert du nom : strNom ==> Signet Nom
    .ActiveDocument.Bookmarks("Nom").Select
    .Selection.Text = Me.strNom
    "Me" fait référence au formulaire, le code étant contenu dans le module de classe de celui-ci. Et strNom à la valeur du contenu de la zone de texte strNom.

    En espérant que cela t'aide.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    ahhhhh.......

    il reste un problème .......

    voila le bouton fonctionne , la page word s'ouvre mais les champs de fusion (sur word) ne fonctionnent pas ....

    merci

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Ce n'est pas très explicite.

    Qu'est-ce qui ne fonctionne pas ?

    Tu as un message d'erreur ?

    Les données ne s'affichent pas sur le document Word ?
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    aucun message d'erreur
    oui aucune données ne s'affichent sur le document word

    en fait j'ai inséré des champs de fusion (publipostage) sur mon document word (en relation avec le fichier Access) ainsi lorsque je souhaite envoyer le formulaire Access sur Word (grâce à la macro commande), tous les champs de fusion (sur Word) se remplissent

  10. #10
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonsoir,

    Ce ne sont pas des champs de fusions que tu dois insérer dans ton document Word, mais des signets.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    ha ....
    ça fonctionne comme les champs de fusion ? j'ai jamais utilisé cette fonction

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    alors maintenant une page word s'ouvre mais rien ne se passe (la page word séléctionné ne s'affiche pas, tout est grisé)

    ce problème peut être du à un autre problème qui est apparu au même moment lorsque je souhaite ouvrir le document word en relation avec la base de données Access : "Une erreur c'est produite : la base de données à été placée par l'utilisateur "admin" sur "W7-1-1105" dans un etat l'empêchant d'être ouvert ou verrouillé"

    merci

  13. #13
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Ok, procédons par ordre.

    Ce que tu dois d'abord comprendre, c'est que tu n'as aucune manipulation à effectuer directement sur Word (d'où probablement le message que tu rencontres). C'est Access qui va se charger entièrement du "pilotage" du document.

    D'abord, as-tu créé un document Word (ne serait-ce que de test) avec au moins un signet ?

    Comment l'as tu nommé et dans quel répertoire est-il ?

    Peux-tu poster la portion de code censée ouvrir ce document.

    Si tu n'as pas encore créé ce document Word, c'est par là qu'il faut commencer. Pour les explications sur les signets si tu en as besoin, regarde sur le forum Word et également cet extrait de tutoriel.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    oui j'ai regardé des tutos sur les signets donc j'ai créé un fichier word appelé "devis", sur ce fichier j'ai crée un seul signet (pour commencer) appelé "Nom".

    ensuite je l'ai enregistré sur le bureau donc : C:\utilisateurs\bureau\devis.docx

    voici le code :
    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
    Private Sub Commande24_Click()
     
     
        'En cas d'erreur, on n'en tient pas compte
        On Error Resume Next
     
        'Déclaration d'une instance Word
        Dim W_App As New Word.Application
     
        'Instance Word
        With W_App
     
            'Word est visible à l'écran ou non
            .Visible = True
     
            'Ouvre le document Word avec les signets
            .Documents.Open ("C:\utilisateurs\bureau\devis.docx")
     
            'Tranfert du nom : strNom ==> Signet Nom
            .ActiveDocument.Bookmarks("Nom contact").Select
            .Selection.Text = Me.[Nom contact]
     
             'Tranfert du nom : strPrenom ==> Signet Prénom
            .ActiveDocument.Bookmarks("Prénom contact").Select
            .Selection.Text = Me.[Prénom contact]
     
            'Sauvegarde du nouveau document
            .ActiveDocument.SaveAs ("devis1.Docx")
     
        End With
     
        'Libération de l'objet Word
        Set W_App = Nothing
     
    End Sub
    donc il n'y a aucun message d'erreur

    on y était presque arrivé...

    Merci en tout cas !!!!!

  15. #15
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Deux choses. d'abord, mets la ligne de gestion d'erreur On Error Resume Next en remarque, sinon, en cas d'erreur, tu ne vas rien voir.

    Egalement, comme dans ton test tu ne fais pour l'instant le transfert que d'une information, il te faut supprimer ou mettre en remarque cette partie-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Tranfert du nom : strPrenom ==> Signet Prénom
    .ActiveDocument.Bookmarks("Prénom contact").Select
    .Selection.Text = Me.[Prénom contact]
    Comme tu n'as pas de signet défini pour le prénom, ça va planter.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    alors j'ai bien suivi tes conseils

    - j'ai mis la ligne de gestion d'erreur On Error Resume Next en remarque
    - j'ai supprimé les lignes concernant le prénom (pour faire les tests)


    lorsque je clique sur le bouton un message d'erreur apparait "erreur d'exécution '5174' fichier introuvable C:\utilisateurs\user\bureau\devis.docx"
    (oui je me suis trompé dans le code que je t'ai envoyé, il s'agit bien de C:\utilisateurs\user\bureau\devis.docx)

    donc j'ai été dans ma barre de recherche et j'ai tapé C:\utilisateurs\user\bureau\devis.docx et le fichier word s'ouvre (encore quelques choses d'étrange )

    merci encore d'avoir de la patience

  17. #17
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Il ne s'agit que d'une erreur de chemin du fichier probablement. Par hasard, ce répertoire ne serait pas caché, ou autre ?

    Pour avancer, mets ton fichier word dans le même répertoire que ton application et remplace la ligne d'ouverture du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Documents.Open (CurrentProject.Path & "\devis.docx")
    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    alors le fichier word qui était sur mon bureau je l'ai mis dans ma clé usb , ensuite j'ai utilisé le code sur un fichier access différent de celui enregistré sur mon bureau et tout fonctionne......

    j'ai donc véritablement un problème avec l'utilisation de certain dossier access (j'ai posté un message dans Access sécurité pour cela)

    je vais aussi essayer ta méthode !


    les mystères de l'informatique ......


    merci merci merci

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    quand je modifie ma ligne avec ".Documents.Open (CurrentProject.Path & "\devis.docx")"
    rien ne se passe mais mon fichier access rame un peu et se grise ....

  20. #20
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bon, ben si en définitive tu as pu ouvrir ton fichier, oublie ma méthode.

    Une fois ton fichier Word ouvert, est-ce que la valeur contenue dans ta zone de texte a bien été transférée sur le document word, à l'endroit où tu as placé le signet ?

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

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

Discussions similaires

  1. [XL-2007] Macro pour exporter des données sur WORD vers Excel (version 2007)
    Par krokos55 dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 31/10/2012, 13h10
  2. Réponses: 2
    Dernier message: 06/01/2011, 16h35
  3. Réponses: 6
    Dernier message: 23/04/2009, 16h07
  4. Réponses: 3
    Dernier message: 23/04/2009, 12h44
  5. Réponses: 4
    Dernier message: 19/03/2009, 09h57

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