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 :

récupérer date dans ContentControls


Sujet :

VBA Word

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Points : 110
    Points
    110
    Par défaut récupérer date dans ContentControls
    Bonjour à tous,

    Je suis en train de développer un formulaire Word avec les contrôles de contenu.
    J'ai besoin de récupérer une date dans un control et de faire un calcul avec celle-ci.

    Lorsque mon contrôle est en format standard: j'arrive sans problème
    Mais lorsqu'elle est formatée en "jjjj j mmmm aaaa" : elle est visiblement en format texte dans le contrôle de contenu, donc impossible d'effectuer un calcul avec. Et je n'arrive pas la convertir.


    (J'ai vraiment simplifié le code pour une meilleure compréhension)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dim mDate as date
     
    For Each cc In ActiveDocument.ContentControls
    if cc.Type = wdContentControlDate Then
    mDate = cc.Range 'Fonctionne avec date au format standard, mais pas dans les autres cas
    MsgBox mDate
    end if
    Next cc
    En fait j'ai fait le tour des propriétés mais je ne trouve pas où Word enregistre réellement la date. Avez-vous une idée ?

    Autrement, comment convertir le cc.Range en vrai date ? J'ai essayé dateval, Cdate… et j'ai cherché plus de 2h mais rien n'y fait.

    Merci d'avance
    ++
    Wouana

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Points : 110
    Points
    110
    Par défaut
    Re…

    C'est un peu brut, mais cela me permet d'être certain qu'il y ai une date dans les controles de contenu "date", comme cela je peux récupérer le contenu pour effectuer par la suite des calculs.
    Vu que DateVal renvoi une erreur si ce n'est pas une date...

    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
     
    Private Sub Document_ContentControlOnExit(ByVal cc1 As ContentControl, Cancel As Boolean)
        Dim i As Integer
     
        Dim maDate As Date
        Dim strDate
        Dim tbJour() As String
     
        'Si controle Date et si contenu saisi dans le controle
        If cc1.Type = wdContentControlDate Then
            'Test si saisie par utilisateur
            If cc1.Range <> cc1.PlaceholderText Then
                strDate = cc1.Range
     
                'Suppression du jour texté
                tbJour() = Split(UCase("Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche," & _
                    "Lun,Mar,Mer,Jeu,Ven,Sam,Dim," & _
                    "Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday," & _
                    "Mon,Tue,Wed,Thu,Fri,Sat,Sun,"), ",")
     
                For i = 0 To UBound(tbJour)
                    strDate = Replace(UCase(strDate), UCase(tbJour(i)), " ")
                Next i
     
                'Remplacement des caractères superflus
                strDate = Replace(strDate, ",", " ")
                strDate = Replace(strDate, "/", " ")
                strDate = Replace(strDate, ".", " ")
     
                On Error GoTo DateErr_
                maDate = DateValue(strDate)
                MsgBox maDate
     
                Exit Sub
            Else
                'MsgBox "Aucune date saisie, control ""vide"""
            End If
        End If
     
     Exit Sub
     
    DateErr_:
        MsgBox strDate & " n'est pas une date, veuillez saisir à nouveau"
    end sub
    Débutant en VBA, je suis preneur si vous avez mieux… ce qui est certainement le cas

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai jamais joué avec ce machin-là, mais tu as au moins 4 propriétés contenant le mot date sur cette page.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Points : 110
    Points
    110
    Par défaut
    Hello,

    Je n'avais pas vu ta réponse avant car l'alerte était sur une adresse mail que je n'utilise plus trop, je vais changer ça sur mes paramètres du site ^^

    Merci pour ta réponse, mais j'avais essayé avec les différentes propriétés contenues dans le lien que tu m'a transmis mais je n'ai pas réussi à en ressortir la date. Soit je suis mauvais, soit la date est récupérable que dans le ContentControl.Range

    ++

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wouana19 Voir le message
    Bonjour,

    Mettez un exemple simplifié dans un .doc pour voir, en expliquant ce que vous saisissez et ce que vous souhaitez faire. Sans garantie.

Discussions similaires

  1. [XL-2007] Récupérer date dans textbox
    Par aziz1015 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 07/09/2015, 12h27
  2. Impossible récupérer date dans un script
    Par lebelo dans le forum BIRT
    Réponses: 12
    Dernier message: 04/09/2009, 10h19
  3. Récupérer date dans un formulaire
    Par hartecel dans le forum Langage
    Réponses: 5
    Dernier message: 16/06/2008, 10h47
  4. Réponses: 12
    Dernier message: 12/10/2005, 14h34
  5. Récupérer la date dans un champ
    Par david71 dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 21/09/2005, 16h44

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