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 :

recupération des valeurs PropriétéDoc (DOCPROPERTY)


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut recupération des valeurs PropriétéDoc (DOCPROPERTY)
    Bonjour a tous.
    Dans un premier temps, J'aurai souhaité affiché toutes les valeurs de type PropriétéDoc dans mon document.
    Seulement j'ignore le code permettant de faire une telle opération.

    Sur le principe cela revient à utiliser ce code sauf que celui la affiche les dans un nouveau document les champs présents dans un document.
    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
     Public Sub listchamps()
    Dim stTableau As String
    Dim ch As Field
     
    For Each ch In ActiveDocument.Fields
    stTableau = stTableau & vbCrLf & ch.Code & " - " & ch.Result
    Debug.Print stTableau
    Next ch
    Application.Documents.Add
     
    Selection.TypeText stTableau
     
     
     
    End Sub
    Moi à la différence je pars d'un document sans champ inséré et ma macro rajouterai automatiquement toutes les valeurs de PropriétéDoc.
    J'ai besoin de cette macro car le nombre de champs possibles d'un document à un autre varie et je ne peux donc pas créé un modèle de document car des champs seraient manquants, la macro sert à les rajouter en automatique.
    Je ne sais pas si j'ai été clair dans ce que je souhaite obtenir.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    J'ai parcouru le doc ainsi que le doc sur les champs dans Word mais j'ai de la peine à trouver une solution à mon problème.

    Je travaille avec une base de donnée et au moment ou je fais nouveau document, je renseigne via mon système de base de donnée des valeurs qui se retrouvent dans PropriéteDoc.
    Le souci s'est que je ne connais pas la définition exacte du code de champs à afficher pour pouvoir le mettre en dur dans un code, le nombre à ajouter varie lui aussi.

    Le code du champs se pésente ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {DOCPROPERTY IBA|COMPOSANT_LABO~~WCP|21584083|1\*MERGEFORMAT}
    Je peux avoir 4 champs a afficher dans mon doc seul le numero 21584083 va changer.
    Je pense qu'il faudrait créer une boucle mais hélas mes connaissances en VBA sont nulles.
    Suis je déja sur la bonne direction.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    En cherchant dans l'aide je pense que je vais arriver au résultat final.
    Le code joint ci dessous affiche bien ce qu'il y a dans PropriétéDoc, jusque la c'est pas mal.
    Comment modifier le code pour dire qu'il n'affiche les valeurs qui ont pour début de code :
    DOCPROPERTY IBA|COMPOSANT_LABO

    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
    Sub ListProperties()
        Dim rngDoc As Range
        Dim proDoc As DocumentProperty
     
        Set rngDoc = ActiveDocument.Content
     
        rngDoc.Collapse Direction:=wdCollapseEnd
     
        For Each proDoc In ActiveDocument.CustomDocumentProperties
            With rngDoc
                .InsertParagraphAfter
     
                On Error Resume Next
                .InsertAfter proDoc.Value
            End With
        Next
    End Sub

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Je viens seulement de comprendre.

    Tu peux toujours dans ta boucle, faire un test sur le Name de ta propriété.

    Si le .Name est le bon, on fait ce que tu souhaites.

    On peut toujours ne tester que sur une partie du .Name, la valeur renvoyée est un string, il suffit de prendre le morceau que l'on veut.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Un collègue a terminé avec les infos que j'ai pu lui donner.
    Ce code permet donc de rajouter dans un tableau des champs qui sont situés dans propriétédoc.

    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
    52
    Sub ListProperties()
     
    Dim proDoc As DocumentProperty
    Dim stTemp As String
    Dim i As Integer
     
    i = 0
     
    'COMPTE LE NOMBRE DE COMPOSANTS
    For Each proDoc In ActiveDocument.CustomDocumentProperties
        If proDoc.Name Like "*COMPOSANT*" Then
            i = i + 1
        End If
    Next
     
    'SORT DE LA MACRO SI UN SEUL COMPOSANT ou SI MARO DEJA LANCEE
    If i = 1 Then Exit Sub
    If ActiveDocument.Tables(2).Rows.Count > 2 Then Exit Sub
     
     
    'CREATION DU NOMBRE DE LIGNE NECESSAIRE
    ActiveDocument.Tables(2).Select
    Selection.InsertRowsBelow i - 1
     
    'REMPLI LA COLONNE COMPOSANT
    ActiveDocument.Tables(2).Cell(2, 1).Select
    For Each proDoc In ActiveDocument.CustomDocumentProperties
        If proDoc.Name Like "*COMPOSANT*" Then
            Selection.Range.Text = proDoc.Value
            Selection.MoveDown
        End If
    Next
     
    'REMPLI LA COLONNE REFERENCE
    ActiveDocument.Tables(2).Cell(2, 2).Select
    For Each proDoc In ActiveDocument.CustomDocumentProperties
        If proDoc.Name Like "*REFERENCE*" Then
            Selection.Range.Text = proDoc.Value
            Selection.MoveDown
        End If
    Next
     
    'REMPLI LA COLONNE FOURNISSEUR
    ActiveDocument.Tables(2).Cell(2, 3).Select
    For Each proDoc In ActiveDocument.CustomDocumentProperties
        If proDoc.Name Like "*FOURNISSEUR*" Then
            Selection.Range.Text = proDoc.Value
            Selection.MoveDown
        End If
    Next
     
    End Sub

Discussions similaires

  1. recupérer des valeurs d'un fichier dans un tableau de string
    Par Kansuke dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 07/04/2008, 14h54
  2. [JDOM] recupérer des valeurs d'un fichier xml
    Par legendaire dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/02/2008, 17h21
  3. Recupération des valeurs des checkbox
    Par goosweb dans le forum Général VBA
    Réponses: 1
    Dernier message: 10/07/2007, 21h40
  4. Recupérer des valeurs perdues
    Par bounnitcharaf dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/10/2006, 10h36
  5. [VB.NET][2.0]recupérer des valeurs d'un bindingsource
    Par Golzinne dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/03/2006, 19h43

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