Tout d'abord, je précise que les solutions données ne sont valables que pour les contrôles ActiveX. Ce ne sera pas valable pour un champ de formulaire hérité qui ne peut déclencher une macro qu'à l'entrée ou à la sortie (il faut donc agir pour sortir), ni pour un contrôle de contenu.

Tout d'abord, il est impératif de donner au contrôle une longueur maximale, afin que Word sache quand passer au contrôle suivant. Cette longueur maximale s'ajoute dans les propriétés (MaxLength).

Si l'on parle d'un formulaire (Userform), c'est très simple : il suffit d'affecter au champ la propriété AutoTab, directement via la fenêtre Propriétés.

S'il s'agit de contrôles Textbox insérés directement dans le document, il faudra malheureusement une macro par textbox, du fait que la propriété AutoTab ne fonctionne pas dans ce contexte.

Voici la macro pour la TextBox1 afin de passer automatiquement dans la TextBox2 une fois la longueur maximale de texte saisi :

 

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'macro écrite par m@rina
If Len(TextBox1) = TextBox1.MaxLength - 1 Then
TextBox1 = TextBox1 + Chr(KeyAscii)
TextBox2.Activate
End If
End Sub

Cette macro va se déclencher lorsque la longueur maximale - 1 caractère sera atteinte. À ce moment-là le fait de presser le dernier caractère envoie directement dans la Textbox2.

Recommencer pour chaque TextBox en modifiant les noms des Textbox.