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

Word Discussion :

Champs remplis automatiquement à la création d'un document basé sur un template-formulaire


Sujet :

Word

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Champs remplis automatiquement à la création d'un document basé sur un template-formulaire
    Bonsoir,

    Je me permets de vous soumettre mon problème. Je rencontre plusieurs difficultés pour automatiser des champs d'un template-formulaire qui doivent être remplis automatiquement.

    La référence devrait être remplie automatiquement comme suit:

    Ex: 11 - 327 - 001

    mois de la création du document (11) - la julienne date (327)- numéro incrémenté à chaque nouvelle création (001)


    11 = mois de la création du document --> Résolu

    327 = ce champ devrait correspondre à la Julienne Date en fonction de la date de création du document. Ex: 23/11/2011 = le 327ème jour. Je joins un tableau xls qui donne la correspondance par rapport à la date de création. Je ne sais pas si cela pourra contribuer à solutionner ce problème.

    001 = ce champ devrait correspondre à l'incrémentation automatique au format de 3 digits (001...) pour chaque nouvelle création de document basé sur ce template-formulaire La protection pourrait poser problème.

    Et pour finir, j'ai un champ qui propose 3 options et il faudrait pouvoir sauvegarder une copie pour chaque option ayant comme nom de fichier:
    001 - option1.dotx;
    001 - option2.dotx;
    001 - option3.dotx.
    (00x étant l'incrémentation automatique)

    Je me permets de joindre le template-formulaire. J'espère que mes explications sont suffisamment claires. D'avance, je vous remercie pour votre aide.
    Fichiers attachés Fichiers attachés

  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,

    Pour la date julienne, on peut le faire sans tableau excel.

    Elle peut être calculée.

    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
    Sub AfficherDateJulienne()
     
    MsgBox JourJulien(Date)
     
    End Sub
     
    '*********
    Function JourJulien(dte1 As Date) As Integer
     
     
    Dim dte2 As Date
     
    dte2 = CDate(Format(dte1, "yyyy") & "/01/01")
    JourJulien = dte1 - dte2 + 1
     
    End Function
    Le principe est assez simple, une date est un nombre double en VBA.
    On peut utiliser ce nombre pour faire de simples opérations.

    Une date Julienne est le nombre de jour entre le 1 janvier et la date voulue.

    Si on fait une soustraction de la date voulue, la date du 1 janver de cette même année, on obtient un nombre, si on prend la partie entière, on a la date julienne de la veille, on a joute alors 1

    Ex : 28/11/2011 - 01/01/2011 = 326 + 1 = 327

    Pour le numèro automatique.
    On incrément une propriété du modèle, mais ce code, tu l'avais trouvé sur le forum là : http://www.developpez.net/forums/d69...sous-word2003/

    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
     
    Sub Document_new()
    Dim intI As Integer
    Dim oDoc As Document
     
     
    intI = ActiveDocument.BuiltInDocumentProperties(wdPropertyComments)
    Debug.Print intI
    intI = intI + 1
    Application.ScreenUpdating = False
     
     
    Set oDoc = Application.Documents.Open("C:\Users\Oliver\AppData\Roaming\Microsoft\Templates\" & ActiveDocument.AttachedTemplate)
     
    oDoc.BuiltInDocumentProperties(wdPropertyComments) = intI
     
    oDoc.Save
    oDoc.Close
    Set oDoc = Nothing
    Application.ScreenUpdating = True
    Il est important de mettre le chemin correct dans le code, qui est dans cet exemple : C:\Users\Oliver\AppData\Roaming\Microsoft\Templates\ ce qui correspond au chemin du modèle sur ma machine.

    Pour avoir le numéro dans le document, il suffit dans le modèle d'ajouter un champ qui affiche la propriété Comments.

    Ctrl + F9 et dans les {} on tapes : DOCPROPERTY Comments pour obtenir
    { DOCPROPERTY Comments }
    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
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci Oli pour la rapidité de la réponse. T'es génial!
    Je vais transposer tout cela dans mon formulaire mais je crains d'avoir peut-être d'autres questions...

    @+

  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,

    Regarde où tu bloques et on apportera ce qu'on peut !
    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
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    La macro Julienne Date fonctionne parfaitement mais je souhaiterais que la donnée affichée dans la msg box se mette automatiquement dans le champ prévu à cet effet.

    Est-ce lié avec l'option de champs texte --> exécuter la macro au démarrage/sortie ? Si oui, comment faut-il procéder?

    D'avance merci et bonne journée

  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,

    Tu peux le faire à la création du document.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Document_New()
    ActiveDocument.FormFields("MoChamp").Result = JourJulien(Date)
     
    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 !

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Oli,

    Je te remercie beaucoup pour tes solutions mais je t'avoue que je suis novice en vba et je ne sais vraiment pas comment mettre tout cela en ordre dans la macro Document_New pour l'incrémentation et la date julienne.

    Je continue de chercher malgré tout

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

    Crée un signet S1 sur ton document.

    Dans l'éditeur de code et le module ThisDocument.

    Tu colles le code suivant :

    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 Document_Open()()
     
    ActiveDocument.Bookmarks("S1").Range.Text = JourJulien(Date())
     
    End Sub
     
    '*********
    Function JourJulien(dte1 As Date) As Integer
     
     
    Dim dte2 As Date
     
    dte2 = CDate(Format(dte1, "yyyy") & "/01/01")
    JourJulien = dte1 - dte2 + 1
     
    End Function
    Tu sauvegardes, tu fermes et tu ouvres le document, le signet est remplacé par la date.
    Si tu souhaites répéter l'opération, il faut recréer le signet car il est détruit par le 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 !

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Oli,

    Grâce à tous tes conseils et les différentes solutions, je suis parvenue à automatiser ce formulaire-modèle comme je le souhaitais et je t'en remercie.

    Pour le champ de la date julienne, j'ai mis un signet et dans les propriétés de ce champ, j'ai demandé que la macro s'exécute au démarrage et à la sortie. A chaque nouvelle création de document basé sur ce modèle-formulaire, la date julienne s'affiche lorsque le curseur se trouve sur ce champ.

    Concernant l'incrémentation, c'est parfait même si ce n'est pas au format 3 digits.

    Il ne me reste plus qu'à trouver un moyen de sauvegarder automatiquement une copie pour chaque proposition faite dans un menu déroulant ayant comme nom de fichier le numéro d'incrémentation suivi de la proposition du menu déroulant et le tout sauvegarder dans un dossier bien précis.

    Si tu as une idée (j'en suis certaine) sur la manière de procéder, ce serait vraiment sympa de m'aiguiller.

    Encore un tout grand merci.

  10. #10
    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 format en trois digits, on peut ajouter un masque au champ.

    Modifies le champ.

    Shift + F9,

    Dans les {} tu modifies pour obtenir ceci :
    { DOCPROPERTY Comments \# 000 }

    Tu auras 001; 002; 003; ...

    Pour la sauvegarde, il suffit d'un petit bout de code comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.SaveAs FileName:="c:\temp\" & Format(activedocument.BuiltInDocumentProperties(wdpropertycomments),"000") & Activedocument.FormFields(1).Result
    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 !

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Oli,

    J'ai été longue à donner suite car je voulais m'en sortir seule avec tes indications mais malheureusement, je n'y parviens pas.

    Je souhaiterais que la macro exécute pour chacune des options du menu déroulant une sauvegarde ayant comme nom de fichier le nom de l'option précédée du numéro d'incrémentation. Jusque là, ça peut plus ou moins aller mais mon souci c'est que lorsque j'ouvre les différents fichiers sauvegardés, le menu déroulant reste sur "veuillez choisir".

    Un tout grand merci.

    PS/ Les 3 digits, c'est nickel

  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,

    C'est normal, Word ne garde pas en mémoire le choix de l'utilisateur.
    Il faut le mettre à un autre endroit pour garder ce choix.
    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
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Salut Oli,

    Veux-tu dire que ce n'est pas possible de le faire?

  14. #14
    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, c'est possible, mais il faut enregistrer la donnée pour l'afficher lors de l'ouverture ou alors, la mettre à un endroit visible du document.
    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 !

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Oli,

    J'y suis parvenue; je suis trop contente. Voici ce que j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub SaveDropdownlist()
    '
    ' SaveDropdownlist Macro
    '
    ActiveDocument.FormFields("Choix").DropDown.Value = 2
    ActiveDocument.SaveAs FileName:="Mon chemin d'accès pour l'enregistrement\" & Format(ActiveDocument.BuiltInDocumentProperties(wdPropertyComments), "000 - ") & ActiveDocument.FormFields(1).Result
     
    ActiveDocument.FormFields("Choix").DropDown.Value = 3
    ActiveDocument.SaveAs FileName:="Mon chemin d'accès pour l'enregistrement\" & Format(ActiveDocument.BuiltInDocumentProperties(wdPropertyComments), "000 - ") & ActiveDocument.FormFields(1).Result
     
     
    ActiveDocument.ActiveWindow.Close SaveChanges:=wdSaveChanges
     
    End Sub
    Le seul truc que je souhaiterais améliorer est la vitesse d'exécution des différentes macro.
    Lorsque je crée un nouveau document basé sur ce modèle, il met beaucoup temps pour l'ouverture et ainsi que lors de la sauvegarde.

    En tout cas, je te remercie beaucoup pour tes solutions même si pour moi, cela n'était pas une évidence de le transposer dans mon formulaire. C'est ainsi que j'apprends...

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

    Combien de macro as-tu ?

    Si tu n'as que celle-là, ce n'est pas elle qui ralentit l'ouverture.
    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 !

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Re bonsoir,

    J'en ai 3:

    - une pour l'incrémentation qui fait référence au propriété commentaire du modèle
    - une pour la date julienne
    - une pour la sauvegarde automatique des différentes propositions présentent dans le menu déroulant.

    Merci

Discussions similaires

  1. [SP-2013] Type de document basé sur un type existant, supprimer des colonnes ?
    Par SpaceFrog dans le forum SharePoint
    Réponses: 9
    Dernier message: 18/12/2014, 14h05
  2. [AC-2007] Création d'un état basé sur une requête analyse croisée
    Par s.rais dans le forum Access
    Réponses: 1
    Dernier message: 28/01/2014, 12h16
  3. Réponses: 2
    Dernier message: 23/09/2012, 12h02
  4. [WD14] Création d'un état basé sur plusieurs fichiers
    Par scott_math dans le forum WinDev
    Réponses: 6
    Dernier message: 04/07/2010, 10h49
  5. Réponses: 1
    Dernier message: 21/11/2008, 23h12

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