Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Gérer Active.document de Word depuis Excel

n.excel

XLDnaute Nouveau
Bonjour,

Cela fait seulement un mois que je créé des macros et j'avoue ne pas m'y connaitre mes grâce au forums j'arrive à exploiter des macros déjà créé pour faire ce que je veux.

Aujourd'hui je rencontre un problème dans la création de ma macro et je ne trouve pas la réponse sur internet. Lorsque que je suis sur Word toute mes macros fonctionne cependant je veux les exécuter depuis Excel.
Pour vous expliquer un peux la macro j'importe dans Excel un dossier avec des Word et j'y extrait des donnés pour établir un tableau.

L'ensemble de mes macros fonctionnent en séparé sur Word.

J'ai réussi à régler beaucoup de problème pour faire fonctionner mes macros Word sur Excel grâce au précédente discussion sur ce forums ou sur d'autres forums. Cependant je n'arrive pas depuis Excel à remplacer Active.document pour que la macro s'exécute.

Je vous met les variables et un extrait d'une des macros avec active.document

'Initialisation des variables
'Fonction pour choisir le répertoire contenant les fichier Word
Chemin_du_dossier = Choisir_répertoire & "\"

'Ouvrir tous les fichiers .doc* : 1er fichier
Nom_du_Word = Dir(Chemin_du_dossier & "*.doc*")

'Créer un objet Word
Set Word = CreateObject("Word.Application")
Word.Visible = True 'Ne pas afficher Word pendant l'exécution de la macro

'Ne pas mettre à jour l'écran
Application.ScreenUpdating = False

Set VISA_Word = Word.Documents.Open(Chemin_du_dossier & Nom_du_Word) 'Ouvre le document Word

'Vérification que les lots sont identiques sur les deux emplacements dédiés
Lot = VISA_Word.Tables(3).Cell(1, 2).Range.Copy 'Copier la valeur dans le presse papier

'Sélectionner la cellule de départ de ma plage
Word.Selection.Tables(3).Cell(3, 2).Select

'Étendre la sélection à un nombre de pas
Word.Selection.MoveEnd Unit:=wdLine, Count:=3

'Copier la plage de sélection
Word.Selection.Copy

'Créé un nouveau document Word pour copier les textes avec le style recherché
Word.Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0

'Coller dans le document le texte
Word.Selection.PasteSpecial (xlPasteValues)

'Sélectionner l'ensemble du document
Word.Selection.WholeStory

'Convertir le tableau en texte en remplaçant par du vide pour concaténer les textes
*ActiveDocument.Tables(1).ConvertToText Separator:=""

'Sélectionner l'ensemble du document
Word.Selection.WholeStory

'Copier la sélection
Lot 1 = Word.Selection.Copy

'Fermer ce document
*ActiveDocument.Close False

If Lot = Lot1 Then
'Continuer
Else
'Sortie de la procédure
Exit sub
End if

En vous remerciant par avance de m'aider dans ma macro

n.excel
 
Solution
Désolé je n'avais pas vu que l'on pouvait faire comme ça sur le forum, j'essayerai d'y penser pour la prochaine fois

J'ai réussi à trouver mon problème je devais mettre Word.ActiveDocument pour éviter l'erreur et qu'il ferme seulement de Word actif et nom tous les Word ouverts

Maintenant ça marche à merveille

n.excel

XLDnaute Nouveau
Je n'ai pas pu mettre de fichier car c'est un fichier confidentiel et que le problème est seulement Active.document que je dois juste le remplacer n'étant pas sur Word mais Excel
 

Staple1600

XLDnaute Barbatruc
Bonsoir

En attendant un fichier exemple (allégé, anonymisé et créé spécialement pour illustrer ta problématique)
Je te conseille d'utiliser la balise
[CODE=vb]
Le texte de ta macro
[/CODE]

Ce qui rendra ton message plus agréable à lire
VB:
'Initialisation des variables
'Fonction pour choisir le répertoire contenant les fichier Word
Chemin_du_dossier = Choisir_répertoire & "\"

'Ouvrir tous les fichiers .doc* : 1er fichier
Nom_du_Word = Dir(Chemin_du_dossier & "*.doc*")

'Créer un objet Word
Set Word = CreateObject("Word.Application")
Word.Visible = True 'Ne pas afficher Word pendant l'exécution de la macro

'Ne pas mettre à jour l'écran
Application.ScreenUpdating = False

Set VISA_Word = Word.Documents.Open(Chemin_du_dossier & Nom_du_Word) 'Ouvre le document Word

'Vérification que les lots sont identiques sur les deux emplacements dédiés
Lot = VISA_Word.Tables(3).Cell(1, 2).Range.Copy 'Copier la valeur dans le presse papier

'Sélectionner la cellule de départ de ma plage
Word.Selection.Tables(3).Cell(3, 2).Select

'Étendre la sélection à un nombre de pas
Word.Selection.MoveEnd Unit:=wdLine, Count:=3

'Copier la plage de sélection
Word.Selection.Copy

'Créé un nouveau document Word pour copier les textes avec le style recherché
Word.Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0

'Coller dans le document le texte
Word.Selection.PasteSpecial (xlPasteValues)

'Sélectionner l'ensemble du document
Word.Selection.WholeStory

'Convertir le tableau en texte en remplaçant par du vide pour concaténer les textes
*ActiveDocument.Tables(1).ConvertToText Separator:=""

'Sélectionner l'ensemble du document
Word.Selection.WholeStory

'Copier la sélection
Lot 1 = Word.Selection.Copy

'Fermer ce document
*ActiveDocument.Close False

If Lot = Lot1 Then
'Continuer
Else
'Sortie de la procédure
Exit sub
End if
 

n.excel

XLDnaute Nouveau
Désolé je n'avais pas vu que l'on pouvait faire comme ça sur le forum, j'essayerai d'y penser pour la prochaine fois

J'ai réussi à trouver mon problème je devais mettre Word.ActiveDocument pour éviter l'erreur et qu'il ferme seulement de Word actif et nom tous les Word ouverts

Maintenant ça marche à merveille
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…