ComboBox et document Word/BookMark

mafooley Messages postés 1 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 18 août 2009 - 18 août 2009 à 10:22
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 - 18 août 2009 à 13:40
Bonjours à tous,

Dans un cadre professionnel, je suis amener à créer un script VBA associer à un fichier Word.
En fait, j'aimerai pouvoir insérer des mots ou des phrases dans le ducument en fonction d'une selection réalisée depuis un ComboBox. Ce dernier serai bien sûr sur une UserForm.
Je pense utiliser pour ça les BookMark et ça fonctionne parfaitement avec la simple commande:

Private Sub CMD01_Click()

   With ActiveDocument
    .Bookmarks("BK01").Range _
    .InsertBefore "Texte à écrire"
   End With

End Sub


Le problème vient alors lors de l'utilisation de mon Combobox. En l'occurrence, je suis passé par un module plutôt que de surcherger ma UserForm. Voici mes codes:

Ma UserForm (FRM01):

Private Sub UserForm_Initialize()
    Macro_init
End Sub
 
Private Sub ComboBox1_Change()
    Macro_CMB1
End Sub
 
Private Sub CMD01_Click()
    Macro_remplissage
End Sub


Mon Module:

Option Explicit
Public nom As String
Public couleur As String
Public marque As String
 
Sub Macro_init()
    FRM01.ComboBox1.AddItem "Riri"
    FRM01.ComboBox1.AddItem "Fifi"
    FRM01.ComboBox1.AddItem "Loulou"
End Sub
 
Sub Macro_CMB1()
    Select Case FRM01.ComboBox1.Value
    Case 0
        nom = "Riri Duck"
        couleur = "Rouge"
        marque = "BMW"
    Case 1
        nom = "Fifi Duck"
        couleur = "Bleu"
        marque = "Audi"
    Case 2
        nom = "Loulou Duck"
        couleur = "Vert"
        marque = "Porsche"
    End Select
End Sub
 
Sub Macro_remplissage()
   With ActiveDocument
    .Bookmarks("BK01").Range _
    .InsertBefore nom
    .Bookmarks("BK02").Range _
    .InsertBefore couleur
    .Bookmarks("BK03").Range _
    .InsertBefore marque
   End With
   FRM01.Hide
End Sub


Voilà, là rien ne se passe. Je suppose que c'est au niveau de l'affectation des variables mais je ne sais pas quoi faire. Pourriez-vous, s'il vous plait, jeter un coup d'oeil ?
Merci d'avance.

Mafooley

1 réponse

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
18 août 2009 à 13:40
Bonjour

Ajoute ceci (et remplasse Macro_Remplissage)

Private Sub ComboBox1_Click() 'en non _Change
Macro_CMB1
End Sub


Sub Macro_remplissage()
ModifierSignet("BK01",nom)
ActiveDocument.InsertBefore nom
ModifierSignet("BK02",couleur)
ActiveDocument.InsertBefore couleur
ModifierSignet("BK03",marque)
ActiveDocument.InsertBefore marque
End Sub

Modifie ou crée un signet s'il n'existe pas

Sub ModifierSignet(sig as string, valeur as string)
ActiveDocument.bookmarks(sig).Select
Selection.Text=valeur
ActiveDocument.Bookmarks.Add Name:=sig, Range=Selection.Range
End Sub
0
Rejoignez-nous