Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 20h40   #1
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
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
Type de fichier : docx Document d'explication.docx (22,2 Ko, 7 affichages)
Type de fichier : xlsx julian date.xlsx (19,2 Ko, 2 affichages)
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 21h33   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
Salut,

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

Elle peut être calculée.

Code :
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 :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 21h55   #3
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
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...

@+
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 22h39   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 07h50   #5
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
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
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 13h36   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
Salut,

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

Code :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 19h45   #7
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
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
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 23h14   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
Salut,

Crée un signet S1 sur ton document.

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

Tu colles le code suivant :

Code :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 19h35   #9
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
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.
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 20h13   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 19h18   #11
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
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
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 21h40   #12
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 17h55   #13
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
Salut Oli,

Veux-tu dire que ce n'est pas possible de le faire?
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 19h42   #14
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2011, 13h23   #15
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
Oli,

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

Code :
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...
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2011, 20h55   #16
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2011, 22h30   #17
Invité de passage
 
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 0
Points : 0
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
Mathida est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h49.


 
 
 
 
Partenaires

Hébergement Web