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/2012, 17h37   #1
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
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 :
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...
N1N1_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 18h32   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 340
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 340
Points : 29 249
Points : 29 249
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 18h59   #3
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
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)
N1N1_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 19h10   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 340
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 340
Points : 29 249
Points : 29 249
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 23h06   #5
Invité de passage
 
Homme
Inscription : janvier 2012
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2012
Messages : 3
Points : 0
Points : 0
Ca marche avec une variable ! MERCI !!!

Voici mon code :
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
'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
N1N1_35 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 23h01.


 
 
 
 
Partenaires

Hébergement Web