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 :

Génération d'un Tag avec valeur incrementée, en VBA


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Génération d'un Tag avec valeur incrementée, en VBA
    Bonjour,
    Je souhaiterais créer une macro en VBA dans un document Word, me permettant d’insérer un Tag dans mon fichier.
    Ce Tag serait de la forme : [MonTAG_reqNum]. « reqNum » étant incrémenté à chaque création d’un nouveau tag.
    « reqNum » doit pouvoir être initialisé à une valeur quelconque.

    La dernière valeur de « reqNum » peut être afficher dans un tableau de ma page de garde, par exemple.
    Pour insérer un nouveau Tag :
    - Récupèrer reqNum de ma page de garde
    - Créer le Tag
    - Faire reqNum +1 pour mon nouveau Tag, puis modifier la valeur du « reqNum » de la page de garde, pour une prochaine utilisation.

    Est-ce possible en VBA ? (désolé mais je ne connais pas grand-chose de ce langage)
    Dois-je utiliser une variable ou stocker cette valeur dans les propriétés du document ou juste dans un endroit précis de mon fichier (style un tableau. Ca, ce n’est pas gênant)… ???
    Voici mon code, mais il manque encore quelques commandes :

    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
    Sub addReq()
        Static reqNum As Long    'Déclarer reqNum comme une variable de type Entier Long
        ‘Aller chercher la valeur de reqNum sur la page de garde du document (dans un tableau ??)
        ‘ et l’affecter à reqNum 
        ‘Inserer le Tag : [MonTag_reqNum]
           ???
     
        ‘ Incrementer reqNum de 1
        reqNum = reqNum + 1        
     
        ‘ Si utilisation d’un variable, traiter les erreurs (Add, si déjà existante)    
        On Error Resume Next
        ActiveDocument.Variables.Add Name:="reqNum"
        Select Case Err.Number
        Case "5903"
        ActiveDocument.Variables("reqNum").Value = reqNum
        Case Else
        Exit Sub
        End Select
     
      ‘Mettre à jour la valeur de reqNum sur la page de garde
      ‘ ???  Selection.Fields.Update
    End Sub
    Merci de votre aide...

  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
    Salut,

    Pourquoi VBA ?

    Un champ SEQ devrait le faire sans VBA.
    http://heureuxoli.developpez.com/off...amps/#LIV-E-10
    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
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse ! (et la mise en forme de mon message)
    Je ne pense pas que le champs SEQ convienne :
    Je veux pouvoir garder l’historique de la numérotation (une fois qu’un Tag est posé, on ne change pas son identifiant)
    Le pb du SEQ, lors d’un ajout d’un nouveau Tag, l’update va modifier les anciennes valeurs de la séquence (sauf si le Tag est insérer un fin de séquence, mais ce ne sera pas toujours le cas)

  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
    Salut,

    Alors, il faut utiliser un propriété du document pour stocker la valeur, ajouter un champ sur ta page de garde pour afficher la propriété.

    Chaque fois que tu feras appel à ton code, il faut récupérer la propriété et ajouter 1 et mettre a jour le contenu de la propriété.
    On peut aussi faire la même chose avec une variable de document.

    http://heureuxoli.developpez.com/office/word/variables/
    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
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ca marche avec une variable ! MERCI !!!

    Voici mon code :
    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
    'Methode creation variable
    Sub creationVariable()
        On Error Resume Next
        ActiveDocument.Variables.Add Name:="reqNum", Value:=0
        Select Case Err.Number
        Case "5903"
        ActiveDocument.Variables(reqNum).Value = 0
        Case Else
        Exit Sub
        End Select
    End Sub
    'Methode mise à jour valeur de la variable
    Sub addVariable(stValue As Long)
        On Error Resume Next
        ActiveDocument.Variables.Add Name:="reqNum", Value:=stValue
        Select Case Err.Number
        Case "5903"
        ActiveDocument.Variables(reqNum).Value = stValue
        Case Else
        Exit Sub
        End Select
    End Sub
    'Methode increment variable
    Sub incrementreqNum()
        Static reqNum As Long    'Déclarer reqNum comme une variable de type Entier Long
        ActiveDocument.Variables("reqNum").Value = ActiveDocument.Variables("reqNum").Value + 1
    End Sub
    'Methode init variable
    Sub initreqNum()
        Static reqNum As Long    'Déclarer reqNum comme une variable de type Entier Long
        ActiveDocument.Variables("reqNum").Value = 0
    End Sub
    'Methode pour initialiser le Tag à une valeur désirée
    Sub setValue()
     Selection.HomeKey wdStory
     Static myNumber As Long
     myNumber = InputBox("Value to initialize the Requirement number :", "Set the Requirement value")
     ActiveDocument.Variables("reqNum").Value = myNumber
     End Sub
    'Main
    Sub addTag()
     Dim myTag As String
     Static maVariable As Long
     
     maVariable = ActiveDocument.Variables("reqNum").Value
     addVariable (maVariable)
     incrementreqNum
     
     myTag = "[MonTag_" & maVariable & "]"
     Selection.TypeText (myTag)
    End Sub

Discussions similaires

  1. Zend_Config_Xml - récupérer valeur depuis un tag avec attribut
    Par mkoko dans le forum Autres composants
    Réponses: 0
    Dernier message: 03/02/2014, 10h13
  2. Réponses: 2
    Dernier message: 19/04/2011, 17h15
  3. [Débutant] génération d'un EJB avec GenIc
    Par Stessy dans le forum JOnAS
    Réponses: 65
    Dernier message: 31/01/2005, 10h50
  4. Pb requete avec valeurs nulles
    Par James85 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/04/2004, 10h20
  5. Génération de script SQL avec les données
    Par borgfabr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/03/2004, 13h57

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