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 :

Enregistrer avec un contenu de champ


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut Enregistrer avec un contenu de champ
    Bonjour,

    Je souhaiterais créer une macro qui enregisre le fichier de la manière suivante:

    CDI-ONYME-Anne.doc

    CDI est dans un champ de formulaire, idem pour ONYME et Anne.

    Voici le début de mon code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub norma()
     
    ActiveDocument.SaveAs FileName:="G:\Contrats de Travail\Chrono\" & "CONTRAT" & "PRENOM" & "NOM" & " " & ".doc"
     
    End Sub
    Merci pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 81
    Points : 124
    Points
    124
    Par défaut
    Bonjour fpicaut,

    Tu as uniquement ça comme code ?
    Car déjà tes variables ne sont pas déclarées
    Les champs tu les remplis via un userform?

    Cordialement,
    Ltspitfire
    "Ordre et discipline font la force des armées" Charles de Gaulles

  3. #3
    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,

    Si ce sont des champs de formulaire, on récupère la valeur des champs de cette manière :

    http://heureuxoli.developpez.com/off...aires/#L5-B-10
    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 !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Ok merci,


    Donc, si j'ai bien capté, il faut mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ActiveDocument.FormFields(1).Result
     
    Sub norma()
     
    ActiveDocument.FormFields(1).Result
     
    ActiveDocument.SaveAs FileName:="G:\Contrats de Travail\Chrono\" & "CONTRAT" & "PRENOM" & "NOM" & " " & ".doc"
     
    End Sub
    ...ça marche pas ....

    Merci d'avance.
    Fabrice.

  5. #5
    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,

    Ecrit de cette manière, le contraire m'aurait surpris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub EnregistrerAvecChamp()
     
    ActiveDocument.savesas "C:\temp\" & Activedocument.FormFields("BlaBla").Result & ..............
     
    End Sub
    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 !

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Hélas non ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub norma()
     
    ActiveDocument.savesas "G:\Contrats de Travail\Chrono\" & ActiveDocument.FormFields("NOM").Result
     
    End Sub
    Merci.

  7. #7
    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,

    Essaie de faire un debug.print sur ton ActiveDocument.FormFields("NOM").Result

    Je suis certain de la syntaxe et du résultat à obtenir.
    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 !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Tu voudras bien m'excuser, je suis très débutant...c'est quoi ?

    Merci à toi,

  9. #9
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Essaie de faire cela
    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
    Sub norma()
    Dim sPath As String
     
    sPath = "G:\Contrats de Travail\Chrono\"
     
    With ActiveDocument
        sPath = sPath & .FormFields("CONTRAT")
        Debug.Print sPath
        sPath = sPath & .FormFields("PRENOM")
        Debug.Print sPath
        sPath = sPath & .FormFields("NOM")
        Debug.Print sPath
     
        .SaveAs sPath & ".doc"
    End With
     
    End Sub
    Si tu ouvres la fenêtre d'exécution de l'éditeur VB, tu verras les différentes valeurs de sPath.
    Sans les debug.print, tu peux aussi exécuter au pas à pas et ouvrir la fenêtre des variables locales.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Ca marche, mais le fichier n'a pas le nom CONTRAT NOM PRENOM .doc mais 707070.doc

    Merci.

  11. #11
    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,

    Qu'est-ce qui marche ?

    Si c'est le code, il ne contient pas d'erreur, il va donc s'exécuter.
    Quelles sont les valeur que tu obtiens dans la fenêtre d'exécution lorsque le code est fini ?
    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 !

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Le fichier se créer, masi je cherche à ce que le fichier se nomme avec les valeurs du champ.
    Exemple: Le champ NOM contient la valeur dupont. Le but est que le fichier se nomme dupont.doc .
    Actuellement, il renvoit 70.doc

    Merci.

  13. #13
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    Dans la procédure proposée il y a 3 instructions "Debug.print" qui doivent provoquer des inscriptions dans la fenêtre d'exécution, lors de l'exécution de la procédure. Peux-tu dire ce que tu y lis ? Ca pourrait aider !

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Oui, je ne dois pas être très doué...il n'y a rien...

  15. #15
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Si tu ne trouves pas la fenêtre d'éxecution, dans le code remplace chaque Debug.Print par MsgBox
    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
    Sub norma()
    Dim sPath As String
     
    sPath = "G:\Contrats de Travail\Chrono\"
     
    With ActiveDocument
        sPath = sPath & .FormFields("CONTRAT")
        MsgBox "sPath = " & sPath
        sPath = sPath & .FormFields("PRENOM")
        MsgBox "sPath = " & sPath
        sPath = sPath & .FormFields("NOM")
        MsgBox "sPath = " & sPath
     
        .SaveAs sPath & ".doc"
    End With
     
    End Sub
    Lors de l'exécution, tu dois voir 3 messages successifs et tu notes à chaque fois ce que tu vois.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Ok,

    La réponse:

    Spath:"G:\Contrats de Travail\Chrono\70
    Spath:"G:\Contrats de Travail\Chrono\7070
    Spath:"G:\Contrats de Travail\Chrono\707070

    Et il crée le fichier.

    Merci.

  17. #17
    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,

    Tes champs contiennent 70.
    Le résultat obtenu avec ton nom de fichier est conforme.
    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 !

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Salut,

    Les champs contiennent un type de contrat (CDI), un nom (Dupont), un prénom (marcel)...
    Je ne comprends pas ...

  19. #19
    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,

    Les mesures que nous t'avons demandé de mettre en place pour des tests servent en général à faire du débogage.
    En utilisant soit des Debug.Print ou des MsgBox, on demande l'affichage des certaines choses pendant l'exécution de la procédure.

    Dans ton cas, les champs contiennent "70".

    Soit les objets que tu souhaites utiliser ne sont pas les bons, soit ils ne contiennent pas la valeurs que tu penses.
    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 !

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 7
    Points
    7
    Par défaut
    Ok, il s'agit de signets et renvoi de signets qui font office de champs.
    Le document est un contrat qui contient un formulaire.
    L'utilisateur remplit ces champs. Une fois remplis, les renvois de signets viennent remplir le contrat.
    Mon but est de me servir du contenu de ces champs ou signets pour nommer le fichier et donc là, je séche sérieusement sur le 70 .

    Merci.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/01/2010, 19h33
  2. Affichage enregistrements avec champs vides
    Par Tybot dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/11/2008, 10h10
  3. Enregistrer une picture box avec son contenu
    Par kinkinhxc dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/03/2008, 15h36
  4. concatener nom de table avec le contenu d'un champ
    Par maximenet dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 28/11/2007, 15h35
  5. Réponses: 1
    Dernier message: 28/09/2007, 21h05

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