Bonjour,
Je programmais en VBA et j'essaye de passer ma solution en VBNET.
Mon but est de piloter word à partir d'un windows Form, de créer un champs IF qui contiendrait une variable DOCVARIABLE. Il s'agit de permettre à des rédacteurs de choisir une phrase qui changerait en fonction du genre. Le genre est renseigné dans une variable Wgenre. Une fois la macro éxécuté et les codes IF créés si on change le genre dans la windows form tout le document se met au masculin, féminin, masculin pluriels....
Donc en code champs :
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 {IF DOCVARIABLE{WGENRE}="M." "représenté" ""} {IF DOCVARIABLE{WGENRE}="Mme" "représentée" ""} ....
Mon code en VBA était
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim NameWordmodele as object Set NameWordmodele = wordApp.ActiveDocument 'le document word Dim expresm as string ' l'expression a changé en fonction du genre NameWordmodele.ActiveWindow.Selection.Fields.Add Range:=NameWordmodele.ActiveWindow.Selection.Range, Type:=wdFieldEmpty, PreserveFormatting:=False NameWordmodele.ActiveWindow.Selection.TypeText Text:="IF " NameWordmodele.ActiveWindow.Selection.Fields.Add Range:=NameWordmodele.ActiveWindow.Selection.Range, Type:=wdFieldDocVariable, Text:="" & "Wgenre" NameWordmodele.ActiveWindow.Selection.TypeText Text:="=""M."" """ & expresm & """" NameWordmodele.ActiveWindow.Selection.MoveRight Unit:=wdCharacter, Count:=2
Soit adapté en VBNET
Le problème est que lorsque VBNET ajoute un champs vide, il le ferme aussitôt et n'ajoute pas le code IF + la variable. Aussi le code champs écrit suite au code est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 NameWordmodele.ActiveWindow.Selection.Fields.Add(NameWordmodele.ActiveWindow.Selection.Range, WdFieldType.wdFieldEmpty, False) NameWordmodele.ActiveWindow.Selection.TypeText("If ") NameWordmodele.ActiveWindow.Selection.Fields.Add(NameWordmodele.ActiveWindow.Selection.Range, WdFieldType.wdFieldDocVariable, "" & "Wgenre") NameWordmodele.ActiveWindow.Selection.TypeText("=""M."" """ & expresm & """") NameWordmodele.ActiveWindow.Selection.MoveRight(, 2)
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part {0 \ MERGEFORMAT} IF {DOCVARIABLE{WGENRE}="M." "représenté"
Je peux écrire le IF dans le champs vide pour en faire un champs IF, ou même faire du champs vide un champs IF natif mais cela ne résout pas le problème d'y inclure une docvariable à l'intérieur.
Quelqu'un pourrait-il m'aider ? Je vous remercie par avance![]()
Partager