Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/06/2011, 11h21   #1
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
Par défaut Ouverture et fermeture d'objet Word, ERREUR

Bonjour à tous,

J'ai un programme (sur le vba d'Access) qui ouvre des documents Word (dotx et docx), travaille dessus, effectue une sauvegarde de la tramme en .docx et ferme les tous les documents sans sauvegarder. Ca marche parfaitement bien, mais lorsque je la relance, j'ai un bug sur :


Code :
1
2
3
ParaTrame.Paragraphs(NumObj).Range.Copy
TrameRap.Bookmarks("Sgn_Form" & NumSgn).Select
Selection.Paste
Le débugueur est sur " Selection paste", et VBA me dit " ERREUR 462 , le serveur distant n'existe pas ou n'est pas disponible". Je pense que c'est parceque je ne ferme pas bien mes documents. Mes lignes d'ouverture et de fermeture sont les suivantes :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private wordObj As Word.Application
Private TablTrame, ParaTrame As Word.Document
Private TrameRap As Word.Document
 
Set wordObj = CreateObject("Word.Application")
Set TrameRap = wordObj.Documents.Open(AdrsTram)
Set TablTrame = wordObj.Documents.Open(AdrsBasTrm & "\Tables_trame_RE.docx")
Set ParaTrame = wordObj.Documents.Open(AdrsBasTrm & "\Paragraphes_trame_RE.docx")
 
' PROCEDURE SUR LES DOCUMENTS
 
TrameRap.SaveAs FileName:=AdrsDest & "\" & NameRap & ".docx", FileFormat:=wdFormatDocumentDefault
wordObj.Quit savechanges:=False 
 
Set wordObj = Nothing
Set TablTrame = Nothing
Set ParaTrame = Nothing
Set TrameRap = Nothing
Si quelqu'un remarque une erreur dans ce code, je le remerci d'avance

cordialement

hadrien
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 11h37   #2
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
Sans la sauvegarde du document, le code ferme bien les objets, mais si la ligne sauvegarde est active, la fermeture ne fonctionne pas. Pour preuve, si j'ouvre un document word, et si je vais dans "Boutton Office" puis "Quitter Word", je vois tous les Documents ouverts qui se ferme au fur et à mesure.
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 11h44   #3
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
En fait, ce que je viens de dire se passe certaines fois mais pas d'autres.
C'est à ni rien comprendre.
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 11h49   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 323
Points : 29 225
Points : 29 225
Salut,

Premiere réflexe, on libère les objets dans l'ordre inverse de l'affectation.

Code :
1
2
3
4
5
6
7
8
9
10
Set wordObj = CreateObject("Word.Application")
Set TrameRap = wordObj.Documents.Open(AdrsTram)
Set TablTrame = wordObj.Documents.Open(AdrsBasTrm & "\Tables_trame_RE.docx")
Set ParaTrame = wordObj.Documents.Open(AdrsBasTrm & "\Paragraphes_trame_RE.docx")
 
 
Set ParaTrame = Nothing
Set TablTrame = Nothing
Set TrameRap = Nothing
Set wordObj = Nothing
Comment libérer un Objet document si le programme n'existe plus.

Je suppose que les lignes que tu nous donnes se trouvent dans une procédure.

Dans ce cas, pourquoi les déclarer en Private ?

Dans ta ligne
Code :
Private TablTrame, ParaTrame As Word.Document
, tu as un document et un variant.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 12h07   #5
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
Pourquoi un Variant ???
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h48   #6
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
Bonjour,

Cette déclaration te donne TablTrame comme variant et ParaTrame comme document
Code :
Private TablTrame, ParaTrame As Word.Document
Pour avoir deux documents, il faut faire :
Code :
Private TablTrame As Word.Document , ParaTrame As Word.Document
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 14h15   #7
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
Merci, c'est dingue que je code depuis 3 mois sans même savoir ça !!!!
Oh le nul que je suis.
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 14h19   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 323
Points : 29 225
Points : 29 225
Salut,

Et ton problème est disparu en changeant le type de la variable ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h57.


 
 
 
 
Partenaires

Hébergement Web