OVH Cloud OVH Cloud

Macro fusion ne fonctionne pas bien

7 réponses
Avatar
lemg
Bonjour,
J'ai un macro qui ouvre un fichier word et exécute une fusion. Le problème c'est qu'elle fonctionne une fois sur deux.

Quelqu'un peut m'aider?

Merci!

7 réponses

Avatar
MichD
Bonjour,

Tu devrais publier la macro que tu exécutes.
Il ne faut pas oublier d'expliquer en mots ce que la
macro doit faire et de mentionner quelles sont ses
attentes sur ce que la macro devrait réaliser.
Avatar
lemg
Le jeudi 13 Septembre 2012 à 19:03 par MichD :
Bonjour,

Tu devrais publier la macro que tu exécutes.
Il ne faut pas oublier d'expliquer en mots ce que la
macro doit faire et de mentionner quelles sont ses
attentes sur ce que la macro devrait réaliser.


Bonjour,

Merci de votre réponse, malheureusement, je peux difficilement mettre le texte puisqu'il a plusieurs dixaines de pages. Mon problème est plutôt qu'elle fonctionne très bien si je fais le pas à pas, mais ne fonctionne pas si je l'exécute simplement.

Merci!
Avatar
MichD
Je ne parlais pas de publier ton classeur, mais simplement
le code de la macro avec quelques explications sur ce que
la macro devrait accomplir.

Est-ce que le texte de la macro a plusieurs dizaines de pages???
Avatar
lemg
Le jeudi 13 Septembre 2012 à 22:53 par MichD :
Je ne parlais pas de publier ton classeur, mais simplement
le code de la macro avec quelques explications sur ce que
la macro devrait accomplir.

Est-ce que le texte de la macro a plusieurs dizaines de pages???


Bonjour,

Oui, le texte de macro a plusieurs pages. Voici un exemple, j'ai une cellule code de 5 chiffres, voici un exemple:

Sub FusionChoix_Visualiser()

Dim CodeFusion As String

Sheets("Instructions").Select
CodeFusion = Range("CodeChoix") 'Code de 5 chiffres

Select Case CodeFusion
Case 11000
Fusion1_Visualiser

.....pour environ 50 possibilités...
End sud

En supposant que le code de 5 chiffres est 11000, une autre macro est appelée, soit la macro nommée Fusion1_Visualiser

Sub Fusion1_Visualiser()
Dim appword As Object
Dim source As String
Dim sourcefusion As String
Dim nomfichier As String

Set appword = CreateObject("Word.Application")
Set WdDoc = appword.documents.Open("D:chemin et nom du fichier word à ouvrirRelevé1.1.0.0.0.docx")
source = ActiveWorkbook.Name 'Fichier excel qui exécute la macro

'Fusion du document
Sheets("Fusion").Visible = True ' Feuille dans laquelle se trouve les valeurs des champs à fusionner
Sheets("Fusion").Select
sourcefusion = ActiveWorkbook.Path & "" & ActiveWorkbook.Name

With WdDoc
'AfficheWord
' Créé la liaison à la base de données
.MailMerge.OpenDataSource Name:=sourcefusion, ConfirmConversions:=True, ReadOnly:úlse, LinkToSource:=True, SQLStatement:="SELECT * FROM `Fusion$`"

' Affiche Word
.Application.Visible = True

' Lancer la fusion
With .MailMerge
.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:úlse
End With

.Application.Visible = True

' Ferme le doc ayant servi de modèle sans l'enregistrer
.Close (False)

End With

' Libère la mémoire
Set WdDoc = Nothing

Windows(source).Activate
End Sub

La macro lorsque exécuté au pas à pas fonctionne très bien mais si je l'exécute avec Exécuter Sud, parfois elle fonctionne et parfois elle ne fonctionne pas.

Merci !
Avatar
MichD
Regarder rapidement...

As-tu essayé d'ajouter la référence de "Word" dans le projetVBA du classeur
Excel?

Fenêtre de l'éditeur de code / outils / références / et tu coches :
"Microsoft Word xx objects library"

Et les deux variables dans ta procédure, tu les définis comme suit :

Dim appword As Word.Application
Dim WdDoc As Word.Document
Avatar
lemg
Le vendredi 14 Septembre 2012 à 17:25 par MichD :
Regarder rapidement...

As-tu essayé d'ajouter la référence de "Word"
dans le projetVBA du classeur
Excel?

Fenêtre de l'éditeur de code / outils / références /
et tu coches :
"Microsoft Word xx objects library"

Et les deux variables dans ta procédure, tu les définis comme
suit :

Dim appword As Word.Application
Dim WdDoc As Word.Document


Je vais essayer merci!
Avatar
lemg
Le jeudi 13 Septembre 2012 à 18:05 par lemg :
Bonjour,
J'ai un macro qui ouvre un fichier word et exécute une fusion. Le
problème c'est qu'elle fonctionne une fois sur deux.

Quelqu'un peut m'aider?

Merci!


Bonjour,

J'ai fait ce que vous m'aviez mentionné, mais ça n'a pas réglé mon problème. En fait la macro fonctionne très bien, mais une fois sur deux le résultat du document fusionné est le précédent. Je m'explique, j'ai dans un onglet, une liste de nom. Dans un autre onglet, je peux sélectionner un nom et les informations sur cette personnes se retrouve alors dans l'onglet Fusion, onglet dans lequel se trouve toutes les informations pour la fusion. Ensuite, lorsque je lance la macro, les informations qui se trouvent dans le document qui est produit ne sont pas celle de la personne sélectionnée, pourtant, les informations dans l'onglet Fusion sont les bonnes. J'ai l'impression que c'est une question de vider la mémoire après chaque exécution.

Merci !