![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Futur Membre du Club
![]() Date d'inscription: mai 2006
Messages: 30
|
Bonjour,
Mon code permet d'exporter des données d'excel (2003) vers word. Un doc. word est alors crée. Si je réalise une seconde fois l'opération, lorsque le doc. word crée est déjà ouvert, le processus WINWORD.exe apparait dans le gestionnaire des tâches. (si le doc word n'est pas ouvert, je ne rencontre pas de problèmes). Après plusieures tentatives, à l'aide des informations contenues dans le forum, le problème persiste. Voici le code en question: Code :
Private Sub CopieDansWord_Click() '############### '# Liaison avec word # '############### Dim appword As New Word.Application Dim docword As New Word.document On Error GoTo traiter_erreur 'Saisie obligatoire '...... '...... '################# '# Copier/Coller # '################# 'Ajoute un nouveau document With appword .Visible = False Set docword = .Documents.Add Application.ScreenUpdating = False docword.PageSetup.Orientation = wdOrientLandscape 'Mise en page paysage End With 'Insertion d'un pied de page '...... '...... 'Ajoute une ligne de titre et la met en forme '....... '....... 'Copie le tableau excel "Jours ouvrés" dans le presse-papiers Range("B10:H30").copy 'Colle le tableau dans Word avec liaison .EndKey Unit:=wdLine .TypeParagraph .TypeParagraph .PasteSpecial Link:=True, DataType:=wdpastOLEObject, _ Placement:=wdInLine, DisplayAsIcon:=False End With Application.CutCopyMode = False '#################### '# Enregistrer le Doc. Word # '#################### With docword 'Enregistre le document Word dans le même dossier que le classeur excel laDate = Format(Sheets("Jours ouvrés").Range("C8")) .SaveAs ThisWorkbook.Path & "\Jours ouvrés" & " " & laDate & ".doc", _ Allowsubstitutions:=True End With With appword appword.Application.Quit MsgBox "Jours ouvrées " & laDate & " est disponible dans le dossier TB B...." End With 'Réinitialise l'objet Set appword = Nothing traiter_erreur: If Err.Number = 5356 Then MsgBox ("Impression impossible. Le document est déjà ouvert"), _ vbExclamation, "Opération annulée" Application.DisplayAlerts = False End If Application.DisplayAlerts = True End Sub Dernière modification par AlainTech ; 24/05/2006 à 17h03 Motif: Balises [code] |
|
|
|
|
|
#2 (permalink) |
|
Membre émérite
![]() |
slt
Code :
'Utilisé pour la lecture et la suppression de processus Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * 260 End Type 'Déclarations d'API Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long Private Declare Function TerminateProcess Lib "Kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long fonction() Dim Processus As PROCESSENTRY32 Capture = CreateToolhelp32Snapshot(2, 0) 'Capture permete de parcourir la liste des processus du système Processus.dwSize = Len(Processus) courant = Process32First(Capture, Processus) Do While courant If Left$(Processus.szExeFile, IIf(InStr(1, Processus.szExeFile, Chr$(0)) > 0, InStr(1, Processus.szExeFile, Chr$(0)) - 1, 0)) = "Projet1.exe" Then 'Si "Projet1.exe" est trouvé dans les processus du système, le parcours des processus s'arrete là courant = False Else 'Processus suivant courant = Process32Next(Capture, Processus) End If Loop CloseHandle Capture 'Si "Projet1.exe" a été trouvé, courant=False puisqu'on a manuellement définit cette valeur pour arreter la boucle ; dans ce cas, TypeName(courant)="Boolean" 'Si "Projet1.exe" n'a pas été trouvé, la boucle est allée jusqu'au dernier processus du système ; dans ce cas, TypeName(courant)="Long" car courant=0 If TypeName(courant) = "Boolean" Then Identifiant = OpenProcess(1, 0, Processus.th32ProcessID) TerminateProcess Identifiant, 0 CloseHandle Identifiant End If end fonction
|
|
|
|
|
|
#3 (permalink) |
|
Inactif(ve)
Date d'inscription: décembre 2005
Localisation: Plus ici.
Messages: 3 838
|
Fred, je vais probablement te décevoir (compte tenu de ce que je lis dans un sujet ouvert aujourd'hui avec le titre "question perso") !
Mais, si tu regardais dans la FAQ de ce forum, tu trouverais assez facilement comment on peut lister les processus, tuer un processus, etc...de façon encore plus simple que celle exposée ci-dessus, par ce généreux asdorve (salut à lui au passage Veux-tu bien, s'il te plait, commencer par là ? Nous t'en serons tous reconnaissant ! Merci. |
|
|
|
|
|
#4 (permalink) |
|
Futur Membre du Club
![]() Date d'inscription: mai 2006
Messages: 30
|
Désolé
Je me suis un peu précipité pour poser la question. J'ai résolu mon problème. Code :
traiter_erreur:
If Err.Number = 5356 Then
MsgBox ("Impression impossible. Le document est déjà ouvert"), vbExclamation, "Opération annulée"
Application.DisplayAlerts = False
End If
Application.DisplayAlerts = True
appword.Quit False
Dernière modification par AlainTech ; 24/05/2006 à 17h04 Motif: Balises [code] |
|
|
|
|
|
#5 (permalink) |
![]() Date d'inscription: février 2004
Localisation: Rimouski
Messages: 3 066
|
Salut
Bon! Merveilleux! n'oubiles pas de cliquer sur le bouton .Un autre truc, en passant, pour les listings de code, tu les mets entre balises code. Y'a un zouli p'tit bouton # dans la barre d'outis de l'éditeur de message. Bonne prog!
__________________
|
|
|
|
|
![]() |
![]() |
||
[VBA-E] Eliminer un processus
|
||
| Outils de la discussion | |
|
|