Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3041 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Champs Word /Date

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Champs Word /Date

n°2090314
Guillaume3​94
Posté le 20-07-2011 à 10:36:09  profilanswer
 

Bonjour,  
 
J'ai une petite question sur les champs Word en rapport avec les dates.  
 
J'ai vu que le code du champs date en Word est  
{DATE \@ "MMMM yyyy" \* MERGEFORMAT\* Firstcap}  
pour obtenir "Juillet 2011" en terme de forme, mais je voudrai savoir ou je peux parametrer le fait d'actualiser moi même ce champs. Y a t-il une option pour que le champs ne s'actualiser pas automatiquemet ?  
 
 
Par ailleurs je voulais savoir quel était le code qui permettait d'afficher la date mais avec le mois précédant. cf pour obtenir juin 2011 par exemple.  
 
Merci d'avance,  
 
G.

mood
Publicité
Posté le 20-07-2011 à 10:36:09  profilanswer
 

n°2090886
SuppotDeSa​Tante
Aka dje69r
Posté le 22-07-2011 à 16:14:02  profilanswer
 

Il faut savoir que Word est tres nul en calcul... Et que si tu veux tomber juste, il faut faire des calculs astronomiques comme j'ai pu en faire, mais c'est la misère...
 
Voila pour le mois précédent... Mais ca ne marchera pas en Janvier... Faudrait tester si le mois =1 et a ce moment enlever 1 à l'année en cours...
 
On insere un code de champ avec Ctrl+F9
Le retour à la ligne dans un champ se fait avec Shift + Entrée  
 
{ QUOTE
{ DATE \@ "dd/" }
{ ={DATE \@ MM }-1 \#00}
{ DATE \@ "/yyyy" }
 
Pour l'histoire de janvier on verra apres, la c'est le we :D


---------------
Soyez malin, louez entre voisins !
n°2091362
Guillaume3​94
Posté le 25-07-2011 à 14:45:59  profilanswer
 

Salut dje69,
 
Merci pour ta réponse.
 
J'ai vu le "code astronimique" en fin de page que tu as écrit... effectivement ça fait peur.
 
J'ai essayé le code que tu m'a passé mais quand je le rentre dans les crochet aprés avroi fait ctrl F9 et que je bascule les code de champs, il ne m'inscrit pas de texte.Juste une sorte de zone de texte vide.
 
Dans l'absolu je ne souhaite que le mois d'avant (en lettre si possible) , donc  
{ QUOTE { ={DATE \@ MM }-1 \#00}  
devrait suffir nan ?
 
J'ai trouvé une astuce sur  
http://office.microsoft.com/fr-ca/ [...] 86186.aspx
 ou il propose le code suivant  
{ QUOTE { IF { DATE \@ "M" } = 1 "12" " {= { DATE \@ "M" } -1 } " }/1/03 \@ "MMMM" }
 
Mais pareil quand je bascule en code champs, il me mets du texte blanc, un peu comme un espace que je peux selectionner. Je peux rebasculer les codes de champs pour réobtenir le code , en cliquant droit sur cet interval de texte vide....  
 
C'est assez étrange. Je pense que je dois mal m'y prendre pour inserer le code dans le champs  
Tu as peut être une idée de là ou ça pourrait venir ?
 
 
Merci bcp,
G.

n°2091364
SuppotDeSa​Tante
Aka dje69r
Posté le 25-07-2011 à 14:51:54  profilanswer
 

J'ai une idée en effet...
 
Une fois le code de champ 'basculé' (d'un coté ou de l'autre) ne pas oublier de cliquer sur "Mettre à jour les champs"...?
 
Pour le code proposé par Microsoft.Office, ca devrait le faire...


---------------
Soyez malin, louez entre voisins !
n°2091369
Guillaume3​94
Posté le 25-07-2011 à 15:17:07  profilanswer
 

En fait j'actualise le champs. C'est même quand j'actualise qu'il me mets ça en texte "vide". Ou parfois il me mets : Erreur ! Trop de commutateurs d'image définis.
 
Par exemple, je fais ctrl F9 et je copie le code suivant : QUOTE { IF { DATE \@ "M" } = 1 "12" " {= { DATE \@ "M" } -1 } " }/1/03 \@ "MMMM"  
entre les crochets il me met
Erreur ! Trop de commutateurs d'image définis
 
Quand je fais ctrl F9 et je copie le code suivant :  
QUOTE  
{ DATE \@ "dd/" }  
{ ={DATE \@ MM }-1 \#00}  
{ DATE \@ "/yyyy" }
 
Et que je bascule le champs et que j'actualise, il me mets aussi Erreur ! Trop de commutateurs d'image définis.
 
Ces codes marches quand tu les essayes dans un doc word ?
 
Merci,
G.

n°2091399
SuppotDeSa​Tante
Aka dje69r
Posté le 25-07-2011 à 16:54:40  profilanswer
 

Deja on ne colle pas du code de champ, on le tape...
Ou on passe par l'assistant... Mais un copier/coller ca ne marche pas...
 
Si je donne un morceau de code, c'est testé, sinon je le précise.
 
Solution MS « adaptée » qui fonctionne :  
 
{ QUOTE { IF{ DATE \@ M } = 1 "12" "{ ={ DATE \@ M }-1 \# 00} "} }
Résultat : 06
 
Solution MS adaptée pour avoir le 1er du mois précédent { QUOTE "01/" { IF{ DATE \@ M } = 1 "12" "{ ={ DATE \@ M }-1 \# 00}"} "/"{ IF{ DATE \@ M } = 1"{ DATE \@ yyyy }-1 \# 0000}""{ DATE \@ yyyy }"}
Résultat : 01/06/2011
 
Autre maniere de trouver le mois et l’année, mais la ca demande un peu de connaissance sur les calculs de date et les modulos :  
 
{ QUOTE { SET DELAIS 1 } { =MOD({ DATE \@ MM }-DELAIS;12) } }
Résultat : 6
 
{ QUOTE { SET DELAIS 1 } { ={ DATE \@ yyyy}+INT((DELAIS+{ DATE \@ M }-1)/12)} }
Résultat : 2011
 
On peut donc en jouant avec les formats, en passant donc par un format « numérique » intermediaire arrivé à : { QUOTE { SET DELAIS 1 } { SET m{=MOD({DATE \@ MM }-DELAIS-1;12)+1 } } { SET a{={ DATE \@ yyyy }+INT((DELAIS+{ DATE \@ M }-1)/12) } } { =(m*10000+a) \# "00'-'0000"}}
Résultat : 06-2011
 
Grace à ce format intermediaire, on peut donc jouer sur les formats pour arriver au format final souhaité : MOIS ANNEE  
{ QUOTE { SET DELAIS 1 } { SET m{=MOD({DATE \@ MM }-DELAIS-1;12)+1 } }  
{ SET a{={ DATE \@ yyyy }+INT((DELAIS+{ DATE \@ M }-1)/12) } } { =(m*10000+a) \# "00'-'0000"} \@ "MMMM yyyy"}
 
Résultat : juin 2011
 
 
Et comme je suis de bonne humeur car il fait super beau pour un mois d'octobre :
http://dje69r.free.fr/Guillaume394.doc
 
Si après vous n'achetez pas une Peugeot, vous êtes vraiment des enc*lés !
[:vulcain00]


---------------
Soyez malin, louez entre voisins !
n°2091401
SuppotDeSa​Tante
Aka dje69r
Posté le 25-07-2011 à 17:06:17  profilanswer
 

Le DELAIS te permet de choisir le nombre de mois precedents.


---------------
Soyez malin, louez entre voisins !
n°2091411
Guillaume3​94
Posté le 25-07-2011 à 18:10:03  profilanswer
 

Franchement dje,  
Merci bcp !!
 
C'est exactement ce que je cherchais et ça fait qq temps que j'esperai qu'une bonne ame m'aide.
Le word, c'est la cerise sur le gateau. Franchement merci !
 
Bon par contre histoire de pas mourrir idiot, j'aimerai bien comprendre deux trois choses. (Si tu trouves que je commence à abuser, t'embetes meme pas à répondre, tu m'a deja bien aidé).
 
J'ai tapé le code QUOTE { IF { DATE \@ "M" } = 1 "12" " {= { DATE \@ "M" } -1 } " }/1/03 \@ "MMMM" et il ne fonctionne pas. Le code est-il correct ?
 
Ensuite, j'ai une ou deux questions pratiques : Si je veux la première ligne en majuscules, il faut que je tape : \* Firstcap au bout de mon champs, n'est ce pas ? Mais est ce que je peux l'insérer tel quel ou faut-il que je fasse un renvoi à la ligne ou qqch comme ca ? Y a t-il un ordre de priorité dans le code avec le \@ "MMMM" ?
 
En fait je cherche a savoir à peu prés comment fonctionne la régle de casse des champs (retour à la ligne). Un truc trés simple mais qu'on trouve pas dans les tutoriels, un peu comme les evidences du style "copier/coller dans un champs ca ne marche pas..."' que je n'aurai jamais deviné tout seul.
 
Merci encore,  
G.
 
Ps vive le mois d'octobre...

n°2091418
SuppotDeSa​Tante
Aka dje69r
Posté le 25-07-2011 à 19:00:37  profilanswer
 

Je ne suis plus devant un ordi, mais de ce que je vois, il devrait te retourner pour juillet : 6/1/03
Or, ceci n'est pas une date... Et au pire, si c'etait formaté comme il faut, il renverrai Janvier. La date est sous forme "mois/1/03"... Ca coince forcement.
Je suppose que tu as pris cet exemple sur un site en anglais/americain

 

De memoire, tu dois pouvoir cumuler les formats. Je verifierai. Ca faisait "longtemps" que j'avais pas fait ca...

 

Le retour a la ligne, c'est juste pour la lisibilité du "code". Sauf si tu le mets dans une expression ou dans des guillemets.

 

Et les {} idem, on ne les tapes pas. On fait Ctrl+F9


Message édité par SuppotDeSaTante le 25-07-2011 à 19:02:13

---------------
Soyez malin, louez entre voisins !
n°2091504
Guillaume3​94
Posté le 26-07-2011 à 09:49:53  profilanswer
 

Nan, Nan pas du tout, je l'ai pris sur le site office.microsoft en français.
http://office.microsoft.com/fr-ca/ [...] 86186.aspx
Aprés ils ont peut etre gardé les formules avec le format US.
 
En tt cas ce n'est pas grave puisque ta dernière formule fonctionne parfaitement. Merci !
 
Dernière question : les champs sont paramétrés pour s'actualiser à l'ouverture et à la fermeture d'un fichier, et manuellement pendant que le fichier est ouvert si j'ai bien compris.
Peut -on changer ce fonctionnement ? Peut-on actualiser les champs à la main en permance i.e. qu'il ne s'actualise pas tout seul.  
Par ex si je touche pas au word d'ici fin juillet, puis-je paramètrer le champs pour que si j'ouvre le fichier en aout, il m'affiche toujours juin ?
 
Merci pour ton aide.
G.

mood
Publicité
Posté le 26-07-2011 à 09:49:53  profilanswer
 

n°2091569
SuppotDeSa​Tante
Aka dje69r
Posté le 26-07-2011 à 16:42:46  profilanswer
 

Re ;)
 
Après vérification :
{ QUOTE { SET DELAIS 1 } { SET m{=MOD({DATE \@ MM }-DELAIS-1;12)+1 } }  
{ SET a{={ DATE \@ yyyy }+INT((DELAIS+{ DATE \@ M }-1)/12) } } { =(m*10000+a) \# "00'-'0000"} \@ "MMMM yyyy" \* Firstcap}

 
Donne bien : Juin 2011
(Avec la majusucule donc)
 
 
Pour ta question sur la date qui ne doit pas etre modifiée, il y a plusieurs solutions. En voici 2
 

  • Ne pas prendre DATE comme reference mais la date de creation du fichier par exemple : DATECREATE

{ QUOTE { SET DELAIS 1 } { SET m{=MOD({DATECREATE \@ MM }-DELAIS-1;12)+1 } }  
{ SET a{={ DATECREATE \@ yyyy }+INT((DELAIS+{ DATECREATE \@ M }-1)/12) } } { =(m*10000+a) \# "00'-'0000"} \@ "MMMM yyyy" \* Firstcap}

 
Si je mets ma date system sur Aout :
Avec DATE : Juillet 2011 (logique on est en aout sur le system)
Avec CREATEDATE : Juin 2011 (là il prend bien ma date de création du fichier)
 
 
 

  • Utiliser une variable

Sur la premiere ligne du document on va definir une variable date :
{ SET MADATE 01/07/2011 }
On bascule le code de champs, rien n'apparait, normal c'est un SET
 
Ensuite le code identique au précédent sauf qu'on va faire reference à notre variable MADATE
{ QUOTE { SET DELAIS 1 } { SET m{=MOD({MADATE \@ MM }-DELAIS-1;12)+1 } }  
{ SET a{={ MADATE \@ yyyy }+INT((DELAIS+{ MADATE \@ M }-1)/12) } } { =(m*10000+a) \# "00'-'0000"} \@ "MMMM yyyy" \* Firstcap}

Resultat : Juin 2011
 
Donc si tu modifies la variable MADATE, en basculant le code de champ et en venant modifier la date :
{ SET MADATE 01/08/2011 }
Le champ du dessous sera Juillet 2011
 
Maintenant l'interet.... Autant saisir 01/07/2011 et mettre le format sous forme MMMM yyyy
 
 
 
EDIT : Et pour l'exemple sur le site MS, c'est bien une erreur de transcription ou erreur tout court ou sur une suite d'office que j'ai pas testé (2010)...
Quelle que soit la date, leur exemple renverra 'janvier'... Forcément, le mois (donc le chiffre du milieu) reste toujours 1...
Si on fait l'essai d'ailleurs de remplacer le 1 par 5, ca renvoi bien 'mai'... Et ce, peu importe la date system


Message édité par SuppotDeSaTante le 26-07-2011 à 16:51:30

---------------
Soyez malin, louez entre voisins !
n°2091601
Guillaume3​94
Posté le 26-07-2011 à 19:03:24  profilanswer
 

Re,  
 
Ecoute c'est trés clair,  
Merci beaucoup pour ton temps et ton aide.
 
Thx !!!

n°2091605
SuppotDeSa​Tante
Aka dje69r
Posté le 26-07-2011 à 20:03:30  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Champs Word /Date

 

Sujets relatifs
pb récupération du contenu d'un champs texteConvertir une date au format JJMMAAAA vers le format JJ/MM/AAAA
Fichiers de moins de 24h triés par date ?Générer fichier word avec des données d'une page Web
[Resolu] GROUP BY Sur deux champsProbleme affichage champs
Problème de format de datebouton "effacer" tous les champs d'un table
VBA : Erreur de syntaxe dans un champs Word 
Plus de sujets relatifs à : Champs Word /Date


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR