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 :

Problème sur la conversion d'une date


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 1
    Points
    1
    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
    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

  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
    Moi je ferais autrement.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    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 : 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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  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
    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 : 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
     
    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 !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    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 : 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
    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

  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
    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 !

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    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

  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
    J'y ai un peu réfléchi.

    L'idéal serait d'utiliser une variable document.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème

  11. #11
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    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
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim MaRef as variant
    MaRef = Format(Date(), "yyyy_mm_dd") & "_" & Format(Mid(Selection.RAnge.Text, 10 , 4)+1,"0000")

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    un grand merci pour toute cette aide,
    je regarde sa et vous tiens au courant
    bonne soirée
    mich

Discussions similaires

  1. Encore un problème sur le format d'une date!
    Par bygui dans le forum Langage
    Réponses: 1
    Dernier message: 26/06/2006, 08h41
  2. Conversion d'une date jj/mm/aaaa en N°sem
    Par GD67 dans le forum Access
    Réponses: 2
    Dernier message: 16/11/2005, 09h02
  3. Problème sur la réalisation d'une requête
    Par soso78 dans le forum Access
    Réponses: 1
    Dernier message: 06/10/2005, 13h17
  4. [date] conversion d'une date et compatibilité access
    Par WriteLN dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/01/2005, 14h03
  5. requête sur l'année d'une date
    Par jo77 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/07/2003, 09h28

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