Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1445 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1530916
Scuba69
Posté le 20-03-2007 à 10:11:56  profilanswer
 

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

mood
Publicité
Posté le 20-03-2007 à 10:11:56  profilanswer
 

n°1531027
jpcheck
Pioupiou
Posté le 20-03-2007 à 12:55:39  profilanswer
 

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 ?

n°1531060
Scuba69
Posté le 20-03-2007 à 14:07:38  profilanswer
 

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 !

n°1531417
tegu
Posté le 21-03-2007 à 09:34:28  profilanswer
 

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.

n°1535786
Scuba69
Posté le 29-03-2007 à 14:00:54  profilanswer
 

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 !

n°1537457
Scuba69
Posté le 02-04-2007 à 17:11:18  profilanswer
 

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'

n°1537617
tegu
Posté le 03-04-2007 à 09:31:21  profilanswer
 

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.

n°1542791
Scuba69
Posté le 13-04-2007 à 20:47:15  profilanswer
 

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 ??


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
problème de déallocation de mémoire[VBA]importer textes (.lvm) sous forme BD pour access
VBA access execution de macro [résolu][VBA WORD] template multiple
[VBA/Excel]Moduler un Tableau Excel[VBA] insérer une ligne horizontale le commandbar
[VBA] Quitter une procédure[VBA WORD] ouverture d'un fichier selon un template
Plus de sujets relatifs à : [VBA WORD] Comment faire pour vider la mémoire ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR