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'hui1117
Hier1747
Cette semaine6293
Ce mois25586
Total depuis 200418228126

22
visiteurs actuellement en ligne

18 avril 2024