mafooley
Messages postés1Date d'inscriptionjeudi 20 novembre 2008StatutMembreDernière intervention18 août 2009
-
18 août 2009 à 10:22
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDerniè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.
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 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