FAQ Word

FAQ WordConsultez toutes les FAQ
Nombre d'auteurs : 20, nombre de questions : 289, dernière mise à jour : 15 juin 2021
Sommaire→Formulaires Word→Formulaires Word VBA- Comment faire pour effectuer une action sur un champ de formulaire ?
- Comment imposer pour les cases à cocher des formulaires un choix unique ?
- Pourquoi je ne parviens pas à utiliser les champs de mon formulaire ?
- Comment récupérer les données de mon formulaire ?
- Comment ajouter des données à une liste déroulante ?
- Comment faire pour obtenir une liste déroulante contenant plus de 25 items ?
- Comment faire pour insérer plus de 255 caractères dans un champ texte de mon formulaire en VBA ?
Les champs utilisés pour les formulaires peuvent être associés à des macros.
Un double-clic sur le contrôle
La liste déroulante vous permet de choisir une macro.
Contrairement aux UserForm, les formulaires ne permettent pas un groupement des cases à cocher.
Par le biais des macros, il est possible d'imposer un seul choix.
Le principe est simple, il suffit de décocher toutes les autres cases à cocher.
Sub CaseACocher1()
ActiveDocument.FormFields(2).Result = False
ActiveDocument.FormFields(3).Result = False
ActiveDocument.FormFields(4).Result = False
ActiveDocument.FormFields(5).Result = False
End SubSi nous avons 5 cases à cocher, lors du choix de la première, on change la valeur des autres à Faux (non coché)
Pour pouvoir utiliser un formulaire, le document doit être protégé. Même si aucun mot de passe n'est défini, sans protection, vous ne pouvez remplir le formualire.
La récupération des données de formulaire ne devient réellement intéressante qu'en VBA.
On récupère le contenu d'un champ de formulaire avec la propriété Result de ce champ.
Dim fld As FormField
For Each fld In Activeocument.FormFields
Debug.Print fld.Result
Next fld
La méthode utilisée pour ajouter des données à une liste déroulante se fait de préférence sur l'initialisation du UserForm.
Dans l'exemple qui suit, nous allons sur l'évènement Initialize du UserForm remplir le Combo avec deux éléments : "a" et i.
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 50
Me.ComboBox1.AddItem "a" & i
Next i
End SubNous pourrions envisager l'utilisation d'un tableau pour le remplissage du combo.
Option Base 1
Private Sub UserForm_Initialize()
Dim i(6) As String
Dim j As Integer
i(1) = "A"
i(2) = "B"
i(3) = "C"
i(4) = "D"
i(5) = "E"
For j = 1 To UBound(i)
Me.ComboBox1.AddItem i(j)
Next j
End SubLien : Les tableaux en VBA
Dans un formulaire Word, il n'est pas possible d'utiliser une liste déroulante contenant plus de 25 entrées.
Pour obtenir une liste avec plus de 25 éléments, il est nécessaire de passer par un UserForm. Ce UserForm contiendra une liste déroulante.
Après la mise à jour, l'élément sélectionné sera envoyé dans un champ de formulaire du document.
Private Sub UserForm_Initialize()
Me.ComboBox1.List() = Array("Un", "Deux", "Trois")
End SubUne autre possibilité de remplissage est l'utilisation de la méthode AddItem
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 1 To 40
Me.ComboBox1.AddItem "a" & i
Next i
End SubLors de l'ouverture du document, il faut initialiser le UserForm
Sub document_open()
Load UserForm1
UserForm1.Show
End SubL'écriture de la donnée dans le document. Pour recevoir la donnée, nous aurons besoin d'un champ texte.
Private Sub ComboBox1_Change()
ActiveDocument.FormFields(1).Result = Me.ComboBox1.Value
UserForm1.Hide
End SubLien : Support Microsoft
Lorsque vous souhaitez insérer dans le champ texte d'un formulaire, Word possède une limitation qui n'est pas décrite. Cette limitation se traduit de deux façons différentes, si votre texte fait 256 caractères, Word plante simplement, si vous avez plus de 256 caractères, vous recevez un message d'erreur.
Parallèlement, si vous entrez votre texte au clavier, vous ne rencontrez pas d'erreur. La solution consiste donc à simuler une entrée clavier dans votre champ.
Sub WorkAround255Limit()
' Ajout d'un texte particulier
ActiveDocument.FormFields("text1").Result = "****"
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If
Selection.GoTo What:=wdGoToBookmark, Name:="Text1"
Selection.Collapse
Selection.MoveRight wdCharacter, 1
'Simulation de 256 caractères
Selection.TypeText (String(256, "W"))
Selection.GoTo what:=wdGoToBookmark, Name:="Text1"
' Suppression des étoiles
With Selection.Find
.Execute findtext:="*", replacewith:="", replace:=wdReplaceAll
End With
ActiveDocument.Protect Password:="", NoReset:=True, Type:= _
wdAllowOnlyFormFields
End Sub



