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 06/06/2006, 11h05   #1
Futur Membre du Club
 
Inscription : mai 2006
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 60
Points : 19
Points : 19
Par défaut [VBA-W] Libérer automatiquement la mémoire du presse papier.

Bonjour,

Lors de mon code VBA sous Word, j'ouvre un fichier excel, copie une grande plage de données, la colle sous Word puis ferme le fichier excel.

Alors il me demande si je veux libérer la mémoire :



Cependant, je voudrais que lorsque je le ferme, il libère la mémoire automatiquement (click sur non).

Mon script est le suivant :

Code :
1
2
3
4
5
6
7
8
Sub rapport_esd()
Excel.Workbooks.Open FileName:="C:\DATA\TDA\ESD_IHM_2005.xls", ReadOnly:=True
Excel.Worksheets("rapport").Select
Excel.Range("A2:L52").Select
Excel.Selection.Copy
Selection.PasteSpecial DataType:=wdPasteBitmap
Excel.Workbooks("ESD_IHM_2005.xls").Close SaveChanges:=False
End Sub
Merci d'avance pr l'astuce !
$p00ky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 11h30   #2
Responsable Visual Basic
 
Avatar de ThierryAIM
 
Homme Thierry
Inscription : septembre 2002
Messages : 3 670
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 49
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2002
Messages : 3 670
Points : 5 672
Points : 5 672
VBA ne connait pas l'objet Clipboard
Il faut déclarer une fonction de l'API

Code :
Private Declare Function EmptyClipboard Lib "user32" () As Long
et dans ton code :

Code :
1
2
3
Selection.PasteSpecial DataType:=wdPasteBitmap
EmptyClipboard 
Excel.Workbooks("ESD_IHM_2005.xls").Close SaveChanges:=False
__________________
Vous vous posez une question, la réponse est peut-être ici :
Toutes les FAQs VB
Les Cours et Tutoriels VB6/VBScript
Les Sources VB6


Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...
ThierryAIM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 11h59   #3
Futur Membre du Club
 
Inscription : mai 2006
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 60
Points : 19
Points : 19
Merci pour ta réponse, mais ça me demande toujours si je veux libérer la mémoire...

Voilà mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Declare Function EmptyClipboard Lib "user32" () As Long
 
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
sem = Semaine.Text
an = Annee.Text
an_court = Right(an, 2)
dossier = Gun.Text
fichier = "ESD_Week_" & sem & "_" & an_court & ".xls"
On Error GoTo bug
Excel.Workbooks.Open FileName:="O:\Atse\T3___com\T3\Measures\Tests-Reports\Tests\Verification_Hebdo\ESD\" & dossier & "\" & an & "\" & fichier, ReadOnly:=True
'Excel.Worksheets("rapport").Select
Excel.Range("A2:L52").Select
Excel.Selection.Copy
Selection.PasteSpecial DataType:=wdPasteBitmap, Placement:=wdInLine
EmptyClipboard
Excel.Workbooks(fichier).Close SaveChanges:=False
GoTo fin
bug:
MsgBox ("Erreur d'ouverture du fichier")
fin:
Application.ScreenUpdating = True
End Sub
 
Private Sub UserForm_Initialize()
 MaDate = Date
 Semaine.Text = Format(MaDate, "ww", vbFriday) - 0
 Annee.Text = Format(MaDate, "yyyy")
End Sub
$p00ky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 12h03   #4
Inactif
 
Avatar de jmfmarques
 
Inscription : décembre 2005
Messages : 3 784
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 3 784
Points : 4 125
Points : 4 125
Ne connais pas VBA, mais (mémoire uniquement de ce que j'(ai vu et lu sur ce forum) quelquechose comme Application.DisplayAlert = False...
jmfmarques est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 13h38   #5
Futur Membre du Club
 
Inscription : mai 2006
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 60
Points : 19
Points : 19
Merci bien !!

EN fait c'est Application.DisplayAlerts = wdNone
et wdAll pour ré-activer

merzi !
$p00ky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 14h35   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Application.DisplayAlerts = wdNone
ou
Application.DisplayAlerts = False
C'est pareil
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 14h52   #7
Inactif
 
Avatar de jmfmarques
 
Inscription : décembre 2005
Messages : 3 784
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 3 784
Points : 4 125
Points : 4 125
je vais essayer de mettre ce s en mémoire (faut que je trouve une case libre)
jmfmarques est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 15h38   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
C'est bien, jemefe, tu progresses. Grâce à tes efforts tu pourras bientôt aider les autres...
..............................................
ouskel'n'or 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 19h54.


 
 
 
 
Partenaires

Hébergement Web