Comment faire pour vider la mémoire ?? [VBA WORD] - VB/VBA/VBS - Programmation
Marsh Posté le 20-03-2007 à 12:55:39
Scuba69 a écrit : Bonjour. |
Peux tu compléter ta question tout de suite derrière impression de quoi ?
les signets tu les remplie comment et avec quoi ?
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 !
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.
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 !
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'
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.
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 ??
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