[VBA WORD] Comment faire pour vider la mémoire ??

Comment faire pour vider la mémoire ?? [VBA WORD] - VB/VBA/VBS - Programmation

Marsh Posté le 20-03-2007 à 10:11:56    

Bonjour.
 
J'ai créer pour ma boite un petit logiciel sous access qui créer des dossiers de fin de chantier.
 
J'utilise des fichier word au format DOT et je fait remplir automatiquement les signets dedans.
 
J'ai trouvé dans ce forum toute les réponses que j'ai eu besoin sauf une :
 
Lorsque j'ai cliqué sur le bouton imprimer, que les docs se remplissent (en arrière plan visible = false), que l'impression s'est lancée (ActiveDocument.PrintOut) et que je ferme word (Word.Application.Quit savechanges:=False), si je relance une impression tout de suite derrière, les signets ne se remplisse plus et ca me sort mes fichiers DOT vierge...
 
La seule solution actuelle consiste à fermer ACCESS et à le relancer.
 
Y'a t'il une solution ???
 
Merci d'avance

Reply

Marsh Posté le 20-03-2007 à 10:11:56   

Reply

Marsh Posté le 20-03-2007 à 12:55:39    

Scuba69 a écrit :

Bonjour.
 
J'ai créer pour ma boite un petit logiciel sous access qui créer des dossiers de fin de chantier.
 
J'utilise des fichier word au format DOT et je fait remplir automatiquement les signets dedans.
 
J'ai trouvé dans ce forum toute les réponses que j'ai eu besoin sauf une :
 
Lorsque j'ai cliqué sur le bouton imprimer, que les docs se remplissent (en arrière plan visible = false), que l'impression s'est lancée (ActiveDocument.PrintOut) et que je ferme word (Word.Application.Quit savechanges:=False), si je relance une impression tout de suite derrière, les signets ne se remplisse plus et ca me sort mes fichiers DOT vierge...
 
La seule solution actuelle consiste à fermer ACCESS et à le relancer.
 
Y'a t'il une solution ???
 
Merci d'avance


Peux tu compléter ta question tout de suite derrière impression de quoi ?
les signets tu les remplie comment et avec quoi ?

Reply

Marsh Posté le 20-03-2007 à 14:07:38    

Voici comment je procède pour remplir les signets :
 
Dim w As Word.Application
Dim strFichier As String
Dim nouveau As Boolean
Dim d As Word.Document
On Error Resume Next
Set w = GetObject(, "word.application" )     'Test si il y a un objet Word
If Err.Number = 429 Then                            'Word n'est pas lancé
Set w = CreateObject("word.application" ) 'Lance Word
End If
 
With w
    .Documents.Add "C:\Modèles\chantier.dot"
    nouveau = True
    .ActiveDocument.Active
    .ActiveDocument.ShowSpellingErrors = False
    remplissage_avec_chantier w
    .Visible = False
    .ActiveDocument.PrintOut
End With
 
Word.Application.Quit savechanges:=False
 
 
Puis :
 
Private Sub remplissage_avec_chantier(wsub As Word.Application)
With wsub
If Not IsNull(Me!NomChantier) Then
    If ActiveDocument.Bookmarks.Exists("NomChantier" ) = True Then
      .Selection.GoTo wdGoToBookmark, Name:="NomChantier"
      .Selection.TypeText (Me!NomChantier)
    End If
End If
End With
End Sub
 
Avec cet exemple, je remplis le signet "Nom de Chantier" dans le fichier "chantier.dot".
 
Tout cela marche très bien. Je clique sur mon bouton "imprimer" dans mon log access, la page sort avec les signet rempli. Si je reclic sur imprimer, une nouvelle pasge sort de l'imrpimante, mais tous les signets sont vides. Je doit relancer access pour obtenir un résultat correct....
 
Pas pratique !

Reply

Marsh Posté le 21-03-2007 à 09:34:28    

Dans le code que tu nous soumets, un truc me gêne.
Dans ta fonction remplissage_avec_chantier(), tu utilises un With sur l'objet wsub  passé en paramètre, mais ton test sur ActiveDocument n'est pas précédé par un point.
Est-ce une erreur de retranscription dans ton message ?
Je me demande comment Access interprète ce bout de code.

Reply

Marsh Posté le 29-03-2007 à 14:00:54    

Salut tegu
 
J'ai essayer de mettre le fameu point absent qui te gênait. Rien a signaler, ormis que ca n'a absolument rien changé...
 
Ca marche toujours impec à la première impression, mais signets vide à la deuxième...  
 
Help !

Reply

Marsh Posté le 02-04-2007 à 17:11:18    

Alors, personne ne peut m'aider ?
 
Pourquoi les signets restent ils vides à partir de la deuxième impression ? Est-ce un problème de Word, Acces, Windows...
 
C'est bizarre comme erreur
 
Scub'

Reply

Marsh Posté le 03-04-2007 à 09:31:21    

Désolé, personnellement je n'ai que rarement joué avec MS Word et les signets et je n'ai pas de solution à ton problème.

Reply

Marsh Posté le 13-04-2007 à 20:47:15    

Salut à tous.
 
En fait j'ai un peu mieux compris le problème qui me rends dingue :
 
A partir de la deuxième impression, l'execution du programme s'arrete après la ligne :
 
If ActiveDocument.Bookmarks.Exists("NomChantier" ) = True Then
 
Pourquoi ne trouve t'il pas le signet ? Et pourquoi le programme s'arrete en plein milieu ??

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed