Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment importer un module et un form dans 1 fichier Word depuis E

4 réponses
Avatar
totox24
Bonsoir à toutes & tous,

Je suis en train de me fabriquer un fichier excel me permettant de gerer du
publipostage depuis une base de données MySQL heberger sur internet

Celui-ci se connect au serveur pour récuperer le fichier provenant de la
base de donnees.
Un formulaire permet de faire une selection dans le fichier (plusieurs
adresse possible) puis propose de choisir un document word pour realiser le
publipostage.
Une fois, le fichier selectionné, je voudrais verifier que le module et le
form sont bien present dans le Doc (sinon récupération de ceux-ci qui sont
enregistrer dans des fichiers: bas et frm).

tous le reste fonctionne tres bien:

le module et le form a creer sur le document word, permettent de creer le
lien Publiposage avec le fichier Excel, creer un barre d'outil spécifique,
permettant de simplifier le publipostage (insertion champ de fusion,
previsualisation et lancement de la fusion)




La question que je me pose:

Comment faire la verification depuis Excel, et comment importer le module et
le form dans le document Word, si ils ne sont pas present?

ou

puis-je utiliser les fichier directement dans les fichier BAS et FRM?


Merci d'avance
Laurent

4 réponses

Avatar
totox24
Petite Precision:
La question que je me pose:

Comment faire la verification depuis Excel, et comment importer le module et
le form dans le document Word, si ils ne sont pas present?

ou

puis-je utiliser les fichier directement dans les fichier BAS et FRM et
Comment ?


Merci d'avance
Laurent



Bonsoir à toutes & tous,

Je suis en train de me fabriquer un fichier excel me permettant de gerer du
publipostage depuis une base de données MySQL heberger sur internet

Celui-ci se connect au serveur pour récuperer le fichier provenant de la
base de donnees.
Un formulaire permet de faire une selection dans le fichier (plusieurs
adresse possible) puis propose de choisir un document word pour realiser le
publipostage.
Une fois, le fichier selectionné, je voudrais verifier que le module et le
form sont bien present dans le Doc (sinon récupération de ceux-ci qui sont
enregistrer dans des fichiers: bas et frm).

tous le reste fonctionne tres bien:

le module et le form a creer sur le document word, permettent de creer le
lien Publiposage avec le fichier Excel, creer un barre d'outil spécifique,
permettant de simplifier le publipostage (insertion champ de fusion,
previsualisation et lancement de la fusion)




La question que je me pose:

Comment faire la verification depuis Excel, et comment importer le module et
le form dans le document Word, si ils ne sont pas present?

ou

puis-je utiliser les fichier directement dans les fichier BAS et FRM?


Merci d'avance
Laurent



Avatar
tissot.emmanuel
Bonsoir,

Dans ton fichier Excel il faut ajouter la référence à Microsoft Visual Basic
for Application x.y via le menu Outils>Références.

Dans Word il faut cocher l'option "Faire confiance au projet Visual Basic"
dans Outils>Macros>Sécurité>Editeurs approuvés.

Ensuite adapte les noms des fichiers et des répertoires.

Sub ImporterModuleFormulaire()

Dim NomModule As String, NomFormulaire As String, Chemin As String
Dim WdApp As Object, WdDoc As Object, VbComp As VBComponent

NomModule = "MonModule"
NomFormulaire = "MonFormulaire"
Chemin = "C:.............."

Set WdApp = CreateObject("Word.application")
WdApp.Visible = True
Set WdDoc = WdApp.Documents.Open(Filename:="C:..........MonDocument.doc")

On Error Resume Next
With WdDoc.VBProject
Set VbComp = .VBComponents("MonModule")
If VbComp Is Nothing Then
.VBComponents.Import Chemin & NomModule & ".bas"
Else
MsgBox "Module présent dans le fichier."
End If
Set VbComp = .VBComponents("MonFormulaire")
Set VbComp = Nothing
If VbComp Is Nothing Then
.VBComponents.Import Chemin & NomFormulaire & ".frm"
Else
MsgBox "Formulaire présent dans le fichier."
End If
End With
End Sub

Je te renvoie à cette discussion si le fonctionnement du formulaire pose
probleme.

http://groups.google.fr/group/microsoft.public.fr.excel/browse_thread/thread/1376d4f27f9a5fa5/f0f686831d001716?lnk=gst&q=charger+automatiquement+un+formulaire&rnum=7&hl=fr#f0f686831d001716


Cordialement,

Manu/

"totox24" a écrit dans le message de
news:
Petite Precision:
La question que je me pose:

Comment faire la verification depuis Excel, et comment importer le module
et
le form dans le document Word, si ils ne sont pas present?

ou

puis-je utiliser les fichier directement dans les fichier BAS et FRM et
Comment ?


Merci d'avance
Laurent



Bonsoir à toutes & tous,

Je suis en train de me fabriquer un fichier excel me permettant de gerer
du
publipostage depuis une base de données MySQL heberger sur internet

Celui-ci se connect au serveur pour récuperer le fichier provenant de la
base de donnees.
Un formulaire permet de faire une selection dans le fichier (plusieurs
adresse possible) puis propose de choisir un document word pour realiser
le
publipostage.
Une fois, le fichier selectionné, je voudrais verifier que le module et
le
form sont bien present dans le Doc (sinon récupération de ceux-ci qui
sont
enregistrer dans des fichiers: bas et frm).

tous le reste fonctionne tres bien:

le module et le form a creer sur le document word, permettent de creer le
lien Publiposage avec le fichier Excel, creer un barre d'outil
spécifique,
permettant de simplifier le publipostage (insertion champ de fusion,
previsualisation et lancement de la fusion)




La question que je me pose:

Comment faire la verification depuis Excel, et comment importer le module
et
le form dans le document Word, si ils ne sont pas present?

ou

puis-je utiliser les fichier directement dans les fichier BAS et FRM?


Merci d'avance
Laurent






"totox24" a écrit dans le message de
news:
Bonsoir à toutes & tous,

Je suis en train de me fabriquer un fichier excel me permettant de gerer
du
publipostage depuis une base de données MySQL heberger sur internet

Celui-ci se connect au serveur pour récuperer le fichier provenant de la
base de donnees.
Un formulaire permet de faire une selection dans le fichier (plusieurs
adresse possible) puis propose de choisir un document word pour realiser
le
publipostage.
Une fois, le fichier selectionné, je voudrais verifier que le module et le
form sont bien present dans le Doc (sinon récupération de ceux-ci qui sont
enregistrer dans des fichiers: bas et frm).

tous le reste fonctionne tres bien:

le module et le form a creer sur le document word, permettent de creer le
lien Publiposage avec le fichier Excel, creer un barre d'outil spécifique,
permettant de simplifier le publipostage (insertion champ de fusion,
previsualisation et lancement de la fusion)




La question que je me pose:

Comment faire la verification depuis Excel, et comment importer le module
et
le form dans le document Word, si ils ne sont pas present?

ou

puis-je utiliser les fichier directement dans les fichier BAS et FRM?


Merci d'avance
Laurent




Avatar
totox24
Bonjour,

un grand merci à Manu

ça marche nickel, j'ai modifié un peu le code que tu m'as donné et tous
marche:

mon code:
------------------------------------------------------------------------------------------------------------------------
Private Sub ListModele_Click()
Dim NomModule, NomFormulaire, NomFormulaire2, Chemin As String
Dim WdApp As Object, WdDoc As Object, VbComp As VBComponent

Range("J1").Value = ListModele.Value
NomModule = "NewMacros"
NomFormulaire = "InsertChamp"
NomFormulaire2 = "Bienvenue"
Chemin = "C:CourrierOutils"

Set WdApp = CreateObject("Word.application")
WdApp.Visible = True
Set WdDoc =
WdApp.Documents.Open(Filename:=Sheets("Creation_Courrier").Range("G1").Value
& Sheets("Creation_Courrier").Range("J1").Value)

vmonmoduleOK = 0
vmonFormulaireOK = 0
vmonFormulaire2OK = 0
On Error Resume Next
With WdDoc.VBProject
vnbmodule = .vbcomponents.Count
For i = 1 To vnbmodule
If .vbcomponents(i).Name = NomModule Then
vmonmoduleOK = 1
End If
If .vbcomponents(i).Name = NomFormulaire Then
vmonFormulaireOK = 1
End If
If .vbcomponents(i).Name = NomFormulaire2 Then
vmonFormulaire2OK = 1
End If
Next i
If vmonmoduleOK = 0 Then
.vbcomponents.Import Chemin & NomModule & ".bas"
Else
.vbcomponents.Remove (NomModule)
.vbcomponents.Import Chemin & NomModule & ".bas"
End If
If vmonFormulaireOK = 0 Then
.vbcomponents.Import Chemin & NomFormulaire & ".frm"
Else
.vbcomponents.Remove (NomFormulaire)
.vbcomponents.Import Chemin & NomFormulaire & ".bas"
End If
If vmonFormulaire2OK = 0 Then
.vbcomponents.Import Chemin & NomFormulaire2 & ".frm"
Else
.vbcomponents.Remove (NomFormulaire2)
.vbcomponents.Import Chemin & NomFormulaire2 & ".bas"
End If
End With
WdDoc.Save
WdApp.Run MacroName:="AffBienvenue"
WdDoc.Save
End Sub

------------------------------------------------------------------------------------------------------------------------
Modification:
- ajout d'un formulaire
- test presence des modules puis remplacement ou importation
- lancement d'une macro Word

Il rest 2 soucis :
1 - Si j'utilise plusieur fois de suite le fichier excel, en ouvrant le
form sur lequel se trouve le code, j'ai le message suivant:
=> Erreur d'entrée/sortie de périphérique (l'aide n'est pas
disponible)
cela n'empeche pas de l'utiliser, mais dans la liste
des projet VBA,
je retrouve autant de projet portant le nom de mon
fichier que de tentative utilisée

2 - La fenetre Word souvre derriere Excel


Encore merci Manu

Cordialement
Laurent
Avatar
tissot.emmanuel
Bonsoir,

J'ignore si cela résoudra ton premier souci mais tu peux éviter de créer de
multiples instances de Word en procédant comme ceci:

On Error Resume Next
Set WdApp = GetObject(, "Word.application")
If WdApp Is Nothing Then
Set WdApp = CreateObject("Word.application")
End If
On Error GoTo 0
'Suite du code

Pour le deuxieme il te suffit de modifier la ligne

WdApp.Visible = True
En
WdApp.Visible = False

Cordialement,
Manu/

"totox24" a écrit dans le message de
news:
Bonjour,

un grand merci à Manu

ça marche nickel, j'ai modifié un peu le code que tu m'as donné et tous
marche:

mon code:
------------------------------------------------------------------------------------------------------------------------
Private Sub ListModele_Click()
Dim NomModule, NomFormulaire, NomFormulaire2, Chemin As String
Dim WdApp As Object, WdDoc As Object, VbComp As VBComponent

Range("J1").Value = ListModele.Value
NomModule = "NewMacros"
NomFormulaire = "InsertChamp"
NomFormulaire2 = "Bienvenue"
Chemin = "C:CourrierOutils"

Set WdApp = CreateObject("Word.application")
WdApp.Visible = True
Set WdDoc > WdApp.Documents.Open(Filename:=Sheets("Creation_Courrier").Range("G1").Value
& Sheets("Creation_Courrier").Range("J1").Value)

vmonmoduleOK = 0
vmonFormulaireOK = 0
vmonFormulaire2OK = 0
On Error Resume Next
With WdDoc.VBProject
vnbmodule = .vbcomponents.Count
For i = 1 To vnbmodule
If .vbcomponents(i).Name = NomModule Then
vmonmoduleOK = 1
End If
If .vbcomponents(i).Name = NomFormulaire Then
vmonFormulaireOK = 1
End If
If .vbcomponents(i).Name = NomFormulaire2 Then
vmonFormulaire2OK = 1
End If
Next i
If vmonmoduleOK = 0 Then
.vbcomponents.Import Chemin & NomModule & ".bas"
Else
.vbcomponents.Remove (NomModule)
.vbcomponents.Import Chemin & NomModule & ".bas"
End If
If vmonFormulaireOK = 0 Then
.vbcomponents.Import Chemin & NomFormulaire & ".frm"
Else
.vbcomponents.Remove (NomFormulaire)
.vbcomponents.Import Chemin & NomFormulaire & ".bas"
End If
If vmonFormulaire2OK = 0 Then
.vbcomponents.Import Chemin & NomFormulaire2 & ".frm"
Else
.vbcomponents.Remove (NomFormulaire2)
.vbcomponents.Import Chemin & NomFormulaire2 & ".bas"
End If
End With
WdDoc.Save
WdApp.Run MacroName:="AffBienvenue"
WdDoc.Save
End Sub

------------------------------------------------------------------------------------------------------------------------
Modification:
- ajout d'un formulaire
- test presence des modules puis remplacement ou importation
- lancement d'une macro Word

Il rest 2 soucis :
1 - Si j'utilise plusieur fois de suite le fichier excel, en ouvrant le
form sur lequel se trouve le code, j'ai le message suivant:
=> Erreur d'entrée/sortie de périphérique (l'aide n'est pas
disponible)
cela n'empeche pas de l'utiliser, mais dans la liste
des projet VBA,
je retrouve autant de projet portant le nom de mon
fichier que de tentative utilisée

2 - La fenetre Word souvre derriere Excel


Encore merci Manu

Cordialement
Laurent