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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word
Imports Microsoft.Office.Interop.Word.WdColor
Sub Wordphrasegenree
wordapppub = GetObject(, "Word.application")
wordapppub.Visible = True
wordapppub.Application.Activate()
NameWordmodele = wordapppub.ActiveDocument
Dim expresm As String = ""
Dim expresmme As String = ""
Dim expresmmes As String = ""
Dim expresmms As String = ""
Dim oldselecstring As String = ""
If NameWordmodele.ActiveWindow.Selection.Range is Nothing Then
oldselecstring = ""
Else
oldselecstring = NameWordmodele.ActiveWindow.Selection.Range.Text 'mémorise le texte surligné pour le proposer aux différents genres
NameWordmodele.ActiveWindow.Selection.Range.Text = ""
End If
NameWordmodele.Bookmarks.Add("Signetprovisoire", NameWordmodele.ActiveWindow.Selection) 'créé un signet pour retrouver l'emplacement qu'on a supprimé et réinjecter la phrase si aucun champs de créer
AddMyVar(NameWordmodele, "" & Genrevar, "M.", False) 'crée la variable genre si elle n'existe pas, AddmyVar est une fonction trouvée ailleurs
expresmms = InputBox("Indiquer une expression de genre pour un couple de requérants. Ex : Les requérants demandent. En cas d'annulation, l'expression de genre n'apparaitra pas.", "M. et Mme", oldselecstring)
expresmmes = InputBox("Indiquer une expression de genre pour un couple de requérantes. Ex : Les requérantes demandent. En cas d'annulation, l'expression de genre n'apparaitra pas.", "Mme et Mme", expresmms)
expresm = InputBox("Indiquer une expression de genre pour un requérant. Ex : Le requérant demande. Si vide, l'expression n'apparaitra pas.", "M.", expresmmes)
expresmme = InputBox("Indiquer l'expression à retenir pour une requérante. Ex : La requérante demande. Si vide, l'expression n'apparaitra pas.", "Mme", expresm)
NameWordmodele.ActiveWindow.Selection.Font.Color = wdColorBlue
Dim champs As Word.Field
Dim nbchamps As Byte
Dim champRange As Range
Dim champsacreer As Byte = 1
Dim phrasegenree, sujetgenre As String
Do
Select Case champsacreer 'on retient 4 genres possible
Case Is = 1
If expresmms = "" Or expresmms = " " Then
expresmms = ""
champsacreer = 2
Else
sujetgenre = "M. et Mme"
phrasegenree = expresmms
End If
Case Is = 2
If expresmmes = "" Or expresmmes = " " Then
expresmmes = ""
champsacreer = 3
Else
sujetgenre = "Mme et Mme"
phrasegenree = expresmmes
End If
Case Is = 3
If expresm = "" Or expresm = " " Then
expresm = ""
champsacreer = 4
Else
sujetgenre = "M."
phrasegenree = expresm
End If
Case Is = 4
If expresmme = "" Or expresmme = " " Then
expresmme = ""
champsacreer = 5
Else
sujetgenre = "Mme"
phrasegenree = expresmme
End If
Case Is = 5
GoTo endy
End Select
'création du champs
NameWordmodele.ActiveWindow.Selection.Range.Fields.Add(NameWordmodele.ActiveWindow.Selection.Range, WdFieldType.wdFieldDocVariable, "Newfield")
nbchamps = NameWordmodele.Fields.Count
If nbchamps > 0 Then 'gestion d'erreur au cas où mais normalement au moins un champs a été créé
nbchamps = 1
For Each champs In NameWordmodele.Fields 'on va rechercher le champs créé
If InStr(1, NameWordmodele.Fields(nbchamps).Code.Text, "Newfield") > 0 Then 'quand on l'a trouvé
NameWordmodele.Fields(nbchamps).Code.Fields.Add(NameWordmodele.Fields(nbchamps).Code, WdFieldType.wdFieldDocVariable, "Wgenre", False) 'on retire le code et on ajoute un code doc variable
champRange = NameWordmodele.Fields(nbchamps).Code 'on met le code du champs en range pour mettre un début et une fin
champRange.InsertBefore("If") 'on met au début IF
champRange.InsertAfter("=" & Chr(34) & sujetgenre & Chr(34) & Chr(34) & phrasegenree & Chr(34)) 'et on met la définition de IF
Exit For
End If
nbchamps = nbchamps + 1
Next
Else
MessageBox.Show("Une erreur a été trouvée : aucun champs n'a été créé")
GoTo endy
End If
champsacreer = champsacreer + 1
Loop Until champsacreer = 5
endy :
If expresmms = "" and expresmmes = "" And expresm = "" And expresmme = "" and Then 'si aucun champs n'a été rempli on remet le texte original
NameWordmodele.ActiveWindow.Selection.Text = oldselecstring
End If
NameWordmodele.Bookmarks("Signetprovisoire").Select()
NameWordmodele.Bookmarks("Signetprovisoire").Delete()
NameWordmodele.ActiveWindow.Selection.WholeStory() 'met à jour le champs
NameWordmodele.ActiveWindow.Selection.Fields.Update() 'met à jour le champs
End Sub |
Partager