Userform Word et fichiers Excel : problèmes...

paullux

XLDnaute Nouveau
Bonjour,

Bon j'ai bien cherché sur tous les sujets qui ne marchent pas dans ma macro mais je n'ai malheureusement pas trouvé de réponse dans les autres discussions. Donc si quelqu'un a des idées, c'est bien volontiers.

Objectif: je souhaite remplacer des champs de fusions situés dans un document word par ce que l'utilisateur souhaite via une userform.

Pour cela, j'ai créer un userform contenant des TextBox (dans lequel je peux rentrer ce que je veux) et un bouton qui a pour action de remplacer les champs de fusion du doc word par le contenu des TextBox.
Cette action est définie dans le CommandButton comme suit :
Code du CommandButton de la Userform Fenetre :

Private Sub ButtonRemplacer_Click()

'Les données de la Userform :******************************

Dim Preparation As String 'Preparation de la prestation
Dim NomFichierDonnees As String 'Nom du fichier Excel ou seront stockées les données

'1-Récupérer les données*****************************
Preparation = Me.ChampPreparation.Text

'2-Vérifier la cohérence des données***********************
If IsNull(Me.ChampPreparation) Then
MsgBox ("Vous devez remplir tous les champs")
End If

'3-Ouvrir un nouveau fichier Excel*****************************
Dim xlApp As Excel.Application
Dim Wb As Excel.Workbook

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set Wb = xlApp.Workbooks.Add

'4.1-Remplir le fichier Excel avec les champfusion*********************
xlApp.ActiveSheet.Cells(1, 10) = "PREPARATION_DE_LA_PRESTATION"

'4.2-Remplir les données rentrées par l'utilisateur dans la userform********
xlApp.ActiveSheet.Cells(2, 10) = Preparation

'5-Enregistrer les données et fermer Excel************************
xlApp.ActiveWorkbook.SaveAs FileName:=NomFichierDonnees

'6-Fusionner les données avec le document en appelant la subroutine "fusionner"
fusionner NomFichierDonnees

'7-Fermer Excel*************************
xlApp.ActiveWorkbook.Close True
xlApp.Quit
Set xlApp = Nothing

'7- Fermer la userform*********************************
ActiveDocument.Fields.Update
Me.Hide

End Sub


Alors ca marche à peu près sauf que :
- Y a t il un moyen de ne pas passer par la fusion du document Excel, c'est à dire de remplacer les champs de fusion du document word directement? J'ai vu qu'il devait etre possible de passer par des signets et des renvois mais ceux ci conservent la mise en page or j'ai plusieurs mises en page pour un meme mot repeté plusieurs fois.
- Dans le code précédent, j'ai demandé à ce qu'une MsgBox s'affiche si la TextBox n'avait pas ete remplie mais en pratique elle ne s'affiche pas, c'est comme si ces lignes de code n'existaient pas.
- Y a t-il un moyen d'ouvrir un nouveau fichier Excel à partir de word sans passer par un Excel.Application ? En effet, cette fonction nécessite l'activation de la référence Microsoft.Excel 11.0 Object Library or j'aimerais le simplifier pour des utilisateurs non familiers avec VBA. Serait il possible de déclarer par exemple un Object à la place de Excel.Application et qu'elle serait la différence ?

Cela fait déjà beaucoup de questions : je suis désolé si elles sont très simple et peut etre un peu betes. Je débute...

Enfin une fois la fusion effectuée entre le document Excel et le Document Word, l'ouverture du document word provoque la protection automatique du fichier excel correspondant qui est alors en lecture seule donc non modifiable.
Je pensais pouvoir creer une autre fenetre suivant le code ci-dessous mais j'ai quelques soucis à cause de la protection...
Voici le code du bouton de la fenetre FentreModifier :

Private Sub CommandButton1_Click()

Dim Preparation As String 'Preparation de la prestation
Dim NomFichierDonnees as string 'nom du fichier dans lequel les données ont été stockées.

NomFichierDonnees = Me.ChampNomFichier.Text
FenetreModifier.Hide

'Ouvrir le fichier de données******************
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Open (NomFichierDonnees)

'Remplir la variable correspondante******************
Preparation = xlApp.ActiveSheet.Cells(2, 10)

'charger la premiere fenetre ******************
Load Fenetre
Fenetre.Show

'Ecrire la valeur de la variable dans la TextBox******************
Fenetre.ChampPreparation.Text = Preparation
Fenetre.ChampNomFichier.Text = NomFichierDonnees

End Sub


-Mon premier soucis est que la variable n'est pas ecrite dans la textbox de la Userform Fenetre et je ne vois pas pourquoi : j'ai essayé plusieurs chose (notamment avec Range à la place de cells...)
-Ensuite le fichier de donnees Excel que j'ouvre est en lecture seule, du coup je ne peux pas le modifier.
- Si je reenregistre un autre fichier de donnees Excel, ca bug car il y a deja un fichier fusionné avec mon document Word....

La solution idéal serait sans doute de se passer d'Excel mais je n'ai pas trouvé comment.
Enfin si quelqu'un a une idée je suis preneuse car bien bloquée pour l'instant...


Merci à tous et à bientot.

Paullux
 

Discussions similaires

Haut Bas