user_mobilelogo

Le code VBA final de l’exemple

Tout l’exemple est téléchargeable dans l’exemple fourni. En allant dans VBE avec Alt+F11 on y trouvera la UserForm décrite plus haut ainsi que tout le code reproduit ci après :

Dans ThisDocument

Private Sub CommandButton1_Click()
Call Formulaire
End Sub


Private Sub CommandButton2_Click()
raz
End Sub
Sub Formulaire()
' Réaffiche la UserForm
UserForm1.Show
End Sub


Private Sub Document_Open()
' Lancement automatique à chaque nouveau document
Load UserForm1
UserForm1.Show
End Sub

Dans le module Signets

 ' *******************************
' *** Utilisation des signets ***
' *******************************


Public Sub RemplirSignet(S As String, T As String)
' Remplit le signet S avec le texte T sans détruire S
On Error GoTo rien
Dim Place As Long
Place = ActiveDocument.Bookmarks(S).Range.Start
ActiveDocument.Bookmarks(S).Range.Text = T
ActiveDocument.Bookmarks.Add Name:=S, _<br>    Range:=ActiveDocument.Range(Place, Place + Len(T))
rien:
End Sub

Sub raz()

Dim T As String ' Titre
Dim Q As String ' Question
Dim R As String ' Répondeur
Dim D As String ' Date

RemplirSignet "Titre", T
RemplirSignet "Question", Q
RemplirSignet "Répondeur", R
RemplirSignet "Date", D

End Sub

Dans le Userform

 

Option Explicit
Dim T As String ' Titre
Dim Q As String ' Question
Dim R As String ' Répondeur
Dim D As String ' Date


Private Sub UserForm_Initialize()
' Lors du chargement de la UserForm : opérations d'initialisations

' 1 - Remplissage de la liste déroulante
With Me.ComboBox1
    .AddItem "Anacoluthe"
    .AddItem "Argitxu"
    .AddItem "Geo"
    .AddItem "m@rina"
End With

' 2 - Initialisation de la date : aujourd'hui + 1 jour
Me.TextBox2.Value = Date + 1

' 3 - Initialisation du focus
Me.TextBox1.SetFocus

End Sub
Private Sub CommandButton1_Click()
' = Bouton Annuler
' Lui affecter la propriété Cancel à True
' pour bénéficier de la touche Echap (ESC)
'me.Hide conserve les données entrées si on relance le formulaire
Me.Hide
End Sub

Private Sub CommandButton2_Click()
Dim madate As Date
' = Bouton OK

' Les données du UserForm :
'Dim T As String ' Abonné m ou f
'Dim Q As String ' Question
'Dim R As String ' Répondeur
'Dim D As String ' Date

' 1 - Récupérer les données

If Me.OptionButton1 = True Then
      T = "Cher abonné"
Else: T = "Chère abonnée"
End If

= Me.TextBox1.Text

= Me.ComboBox1.Value

= Me.TextBox2.Value

' 2 - Vérifier la cohérence des données

If Me.TextBox1.Value = "" Then
   MsgBox "Il manque la question !", vbExclamation, "Erreur"
   Exit Sub
End If

Me.TextBox2.Value = Format(TextBox2.Value, "dd mmmm yyyy")
madate = Date + 1
If Me.TextBox2.Value < madate Then
   MsgBox "On ne peut répondre avant demain !", vbExclamation, "Erreur"
   Me.TextBox2.Value = Date + 1
   Exit Sub
End If

' 3 - Placer les données dans le document

RemplirSignet "Titre", T
RemplirSignet "Question", Q
RemplirSignet "Répondeur", R
RemplirSignet "Date", D

With ActiveDocument
.Fields.Update ' màj des champs pour le renvoi sur Titre
'ajout de couleur pour le répondeur et la date
.Bookmarks("Répondeur").Range.Font.ColorIndex = wdRed
.Bookmarks("Date").Range.Font.ColorIndex = wdRed
End With
' 4 - Fermer la Userform et la supprime de la mémoire

Unload Me

End Sub



Statistiques

Aujourd'hui303
Hier1770
Cette semaine5634
Ce mois35866
Total depuis 200418238406

2
visiteurs actuellement en ligne

25 avril 2024