Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA 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 11/01/2008, 20h04   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 0
Points : 0
Par défaut Problème sur la conversion d'une date

Bonjour à tous,
je déterre ce topic pour vous posez une question:
Je suis débutant en vba.
J'ai bien mis tout le code sauf qu'à cette ligne
Citation:
NouvelleRéférence = Format(Month(Now), "00") + "_" + CStr(Year(Now)) + "_" + Format(Val(Mid(Selection, 9, 4) + 1), "0000")
il me met une erreur (le texte et surligner en jaune).
malgré mes recherches, je ne comprend pas pourquoi cela ne marche pas.
J'ai essayé de shunté cette ligne, et là il me crée un fichier de type: spécification N° .doc
comprend pas.....
D'avance un grand merci
mich38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 20h30   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Moi je ferais autrement.


Code :
MaRef = Format(Date(), "dd_mm_yyyy")
Pour obtenir la valeur de la date.

L'opérateur de concaténation est le & ou esperluette à préférer au +.
Pour le dernier morceau, si tu pouvais préciser ce que tu veux 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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 20h46   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 0
Points : 0
Voila, je m'explique:
alors je veux créer un modèle de document word (modele.doc), dans ce document je veux avoir un numéro de référence (qui doit être unique) pour chaque document créer.
Quand un utilisateur veut créer un nouveau document, il ouvre modèle.doc
qui va générer automatiquement un autre fichier du genre JJ_MM_AAA_numreference (25_11_2008_1.doc) ainsi de suite 25_11_2008_2.doc pour la deuxième pesonne qui ouvrira modele.doc...et renseigner automatiquement le numéro de référence.

Code qui a été ecrit par ouskel'n'or ici
Code :
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
 
Private Sub Document_Open()
if activedocument.name = modele then exit sub '**************
Dim NouvelleRéférence, NomFich, Chemin
Chemin = "C:\travail\"
 
    'Se placer en début de doc
    Selection.HomeKey Unit:=wdLine
 
    'Sélection jusqu'en fin de ligne
    Selection.EndKey Unit:=wdStory, Extend:=wdExtend
 
    'Retrait de vbcr qui se trouve en fin de ligne pour avoir l'ancienne réf.
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
 
    'Constitution de la nouvelle référence en incrémentant le N°
    NouvelleRéférence = Format(Month(Now), "00") + "_" + CStr(Year(Now)) + "_" + Format(Val(Mid(Selection, 9, 4) + 1), "0000")
 
    'Remplacement de l'ancienne ref. par la nouvelle incrémentée
    Selection.TypeText NouvelleRéférence
 
    'sauvegarde du modèle avec la nouvelle référence
    ActiveDocument.Save
 
    'Constitution du nom du nouveau fichier
    NomFich = Chemin + "Spécification n° " + NouvelleRéférence + ".doc"
 
    'Sauvegarde du nouveau fichier sous son nouveau nom
    MsgBox Chemin + NomFich ' juste pour voir si ton chemin est bon, tu l'enlèveras après
    ActiveDocument.SaveAs NomFich
End Sub
mais j'ai la ligne qui apparet en jaune...
Code :
1
2
'Constitution de la nouvelle référence en incrémentant le N°
    NouvelleRéférence = Format(Month(Now), "00") + "_" + CStr(Year(Now)) + "_" + Format(Val(Mid(Selection, 9, 4) + 1), "0000")

merci
mich38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 21h45   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Le format de la date je l'ai mis dans le post précédent.

Pour récupérer la valeur du numéro de document, tu dois extraire les données de la chaîne récupérée.

Val ou CInt feront l'affaire.

Le prélèvement, je ne vais pas détailler.

Pour l'extraction, on connaît la longueur de la date xx_xx_xxxx soit 10 caractères.

Mid(Selection.range.text,10,4) devrait donner 0001, converti en Entier 1.

Alors, 1+1 -> 2

On le converti à nouveau en String, on le mesure, et on ajoute les 0 manquants.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Dim MaDemiRef as variant
 
MaDemiRef = Mid(Selection.RAnge.Text, 10 , 4)
MaDemiRef = Cint(MaDemiRef)
MaDemiRef = MaDemiRef + 1
MaDemiRef = CStr(MaDemiRef)
 
Select Case Len(MaDemiRef)
Case 1
MaDemiRef = "000" & MaDemiRef
Case 2
MaDemiRef = "00" & MaDemiRef
Case 3
MaDemiRef = "0" & MaDemiRef
End Select
 
MaRef = Format(Date(), "dd_mm_yyyy") & MaDemiRef
J'ai pas testé, mais je pense que tout s'y trouve pour complèter ton 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 13/01/2008, 21h52   #5
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 0
Points : 0
Alors voila ou j'en suis,
je n'arrive pas à récupérer mon signet
pourtant s'est bien se code là:
Activedocuemnt.Bookmarks("Text1").Range.Text


Code :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Private Sub Document_Open()
If ActiveDocument.Name = doc_num_auto Then Exit Sub '**************
Dim NouvelleRéférence, Nomfich, Chemin
Dim MaDemiRef As Variant
 
Chemin = "C:\Vba\Word\"
 
    'Se placer en début de doc
    Selection.HomeKey Unit:=wdLine
 
    'Sélection jusqu'en fin de ligne
    Selection.EndKey Unit:=wdStory, Extend:=wdExtend
 
    'Retrait de vbcr qui se trouve en fin de ligne pour avoir l'ancienne réf.
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
 
maref = Format(Date, "dd_mm_yyyy")
 
Activedocuemnt.Bookmarks("Texte1").Range.Text
 
 
MaDemiRef = Mid(Selection.Range.Text, 10, 4)
MaDemiRef = CInt(MaDemiRef)
MaDemiRef = MaDemiRef + 1
MaDemiRef = CStr(MaDemiRef)
 
Select Case Len(MaDemiRef)
Case 1
MaDemiRef = "000" & MaDemiRef
Case 2
MaDemiRef = "00" & MaDemiRef
Case 3
MaDemiRef = "0" & MaDemiRef
End Select
 
maref = Format(Date, "dd_mm_yyyy") & MaDemiRef
 
 
    'Remplacement de l'ancienne ref. par la nouvelle incrémentée
    Selection.TypeText maref
 
    'sauvegarde du modèle avec la nouvelle référence
    ActiveDocument.Save
 
    'Constitution du nom du nouveau fichier
    Nomfich = Chemin + "REF" + maref + ".doc"
 
    'Sauvegarde du nouveau fichier sous son nouveau nom
    'MsgBox Chemin + NomFich ' juste pour voir si ton chemin est bon, tu l'enlèveras après
    ActiveDocument.SaveAs Nomfich
End Sub
mich38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2008, 22h01   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Le fait d'écrire sur un signet le détruit.
Il faut trouver une autre méthode pour insérer du texte et le récupérer.
__________________
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 13/01/2008, 22h22   #7
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 0
Points : 0
Alors comment puis je faire pour que sur mon document, il m'indique la réf?
Je n'ai pas d'idée?
peut être la nuit porte conseil?
@ demain et merci encore
mich38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 06h48   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
J'y ai un peu réfléchi.

L'idéal serait d'utiliser une variable document.
Code :
1
2
 
ActiveDocument.Vrariables("MaVar").Value = "MaValeur"
Pour l'afficher, il suffit d'utilser un champ VariableDoc

http://heureuxoli.developpez.com/off...hamps/#LIV-A-6

Les données sont plus faciles à récupérer et à manipuler.
__________________
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 14/01/2008, 21h55   #9
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 0
Points : 0
Et à tout hasard,
sa ne serait pas possible de mettre à jour la réf, le nom du fichier avec un
???

Sinon, je peux faire apparaitre ma valeur REF dans une textbox

juste comme ceci

Code :
textbox1 = ActiveDocument.Variables("MaVar").Value = "MaValeur"
mais comment faire pour que cette valeur (MaValeur), à la première ouverture du modèle prenne la valeur 1 et que cette valeur soit garder pour que le modèle ouvert en deuxième prenne la valeur 2...

Parce se que là je ne vois pas trop comment récupérer se numéro de ref?...
mich38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 12h58   #10
Membre éclairé
 
Inscription : décembre 2007
Messages : 426
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 426
Points : 313
Points : 313
Citation:
Le fait d'écrire sur un signet le détruit.
Il faut trouver une autre méthode pour insérer du texte et le récupérer.
J'ai eu le même problème et je l'ai résolu en recréant le signet à chaque fois que je le modifie:
Code :
1
2
3
4
5
6
ActiveDocument.Bookmarks(signet).Select
ActiveDocument.Bookmarks(signet).Range.Text = valeur
deb = Selection.Start
fin = deb + Len(valeur)
ActiveDocument.Range(deb, fin).Select
ActiveDocument.Bookmarks.Add signet, Selection.Range
Si ca peut aider à résoudre son problème
Eric93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 23h29   #11
Membre confirmé
 
Jacques Lesueur
Inscription : mai 2006
Messages : 180
Détails du profil
Informations personnelles :
Nom : Jacques Lesueur

Informations forums :
Inscription : mai 2006
Messages : 180
Points : 209
Points : 209
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Dim MaDemiRef as variant
 
MaDemiRef = Mid(Selection.RAnge.Text, 10 , 4)
MaDemiRef = Cint(MaDemiRef)
MaDemiRef = MaDemiRef + 1
MaDemiRef = CStr(MaDemiRef)
 
Select Case Len(MaDemiRef)
Case 1
MaDemiRef = "000" & MaDemiRef
Case 2
MaDemiRef = "00" & MaDemiRef
Case 3
MaDemiRef = "0" & MaDemiRef
End Select
 
MaRef = Format(Date(), "dd_mm_yyyy") & MaDemiRef
donne
Code :
1
2
3
 
Dim MaRef as variant
MaRef = Format(Date(), "dd_mm_yyyy") & Format(Mid(Selection.RAnge.Text, 10 , 4)+1,"0000")
de plus en inversant année et jour le fichier sur le disque sera trié correctement
Code :
1
2
3
 
Dim MaRef as variant
MaRef = Format(Date(), "yyyy_mm_dd") & "_" & Format(Mid(Selection.RAnge.Text, 10 , 4)+1,"0000")
Jack78960 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 17h39   #12
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 0
Points : 0
un grand merci pour toute cette aide,
je regarde sa et vous tiens au courant
bonne soirée
mich
mich38 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 11h54.


 
 
 
 
Partenaires

Hébergement Web