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 22/08/2007, 09h35   #1
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Par défaut [VBA][Word]Savoir comment word à été démarré

Bonjour,

Voilà mon problème,

Lorsqu'un utilisateur de ma société lance Word depuis le raccouri du menu démarrer Word charge un fichier complément qui contient une Macro AutoExec qui effectue certaines opérations de mise à jour si besoin.

Tout fonctionne bien sauf lorsque l'utilisateur ouvre un fichier word depuis l'explorateur Windows il se passe 2 cas de figure:

1. Pas de mise à jour à faire par le fichier complément donc le document s'ouvre.

2. Le fichier complément doit mettre à jour et là le fichier ne s'ouvre pas.

Après avoir longuement cherché, je n'ai aucune solution !

Je voulais savoir si on avait la possibilité de récupérer le chemin d'accès du fichier que l'utilisateur veut ouvrir afin de pouvoir l'ouvrir une fois la mise à jour effectué.

Ou alors, peut on déterminer via le code la manière dont Word à été démarré ?

Merci pour votre participation
__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 09h39   #2
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
Salut,

Peut être des solutions :
http://access.developpez.com/faq/?pa...tion#close_exe
http://access.developpez.com/faq/?pa...n#tuer_process
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 09h48   #3
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Merci mais le néopjite que je suis ne comprends pas comment utiliser ces fonctions !
__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 10h29   #4
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
Je t'ai orienté vers une piste un peu difficile.
Il y a plus simple.

Je me suis inspiré de cette Q/R de la VB que j'ai modifié comme suit :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function ExecProcess(ByVal ProcessName As String) As Boolean
 
    Dim svc As Object
    Dim sQuery As String
    Dim oproc
    Set svc = GetObject("winmgmts:root\cimv2")
    sQuery = "select * from win32_process where name='" & ProcessName & "'"
    For Each oproc In svc.execquery(sQuery)
        ExecProcess = True
    Next
    Set svc = Nothing
 
End Function
 
Sub test()
 
    If ExecProcess("word.exe") Then
        MsgBox "Excel lancé"
        Else
            MsgBox "Excel pas lancé"
    End If
 
End Sub
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 11h23   #5
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Merci beaucoup mais je vois pas à quoi ça me sert par rapport à mon problème qui est de savoir comment à été lancé Word.
__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 11h28   #6
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
Désolé j'ai vraiment mal compris ce que tu souhaites faire.

je relis calmement.
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 11h32   #7
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Aucun problème

Merci beaucoup pour ton aide en tout les cas
__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 12h04   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
C'est un peu compliqué ce que tu veux faire.

Il faudrait faire une sorte de logbook avec toutes les opération que Word fait.
Ensuite retire ce qui t'intéresse.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 12h16   #9
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Ok mais dans VBA il y a les fonctions suivantes:

VBA.Interaction.Command
VBA.Interaction.Command$

qui sont censés renvoyer les arguments passés à word si je ne me trompes.

Cependant, je ne reçoit que des chaines vides !!!

Si dans le fichier Normal.dot et dans la procédure suivante

Code :
1
2
3
4
Private Sub Document_Open()
 Debug.Print Command$
 Stop
End Sub
et qu'on double click sur un fichier word depuis l'explorateur windows on devrait récupérer le chemin d'accès de ce fichier en argument

mais là rien !
__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 12h33   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Document_Open ne s'exécute que lorsqu'un document est ouvert.

Code :
1
2
3
4
Sub AutoOpen()
MsgBox ActiveDocument.Name
 
End Sub
Essaie pour voir si c'est mieux !
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 13h19   #11
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Idem

Je passe bien dans le code mais VBA.Interaction.Command est égale à ""
__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 13h29   #12
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Je pense que c'est normal, l'interraction n'a pas lieu dans Word, mais dans Windows.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 13h36   #13
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Pourtant l'aide de VBA donne ceci !

Command, fonction


Renvoie la partie argument de la ligne de commande utilisée pour lancer Microsoft Visual Basic ou un programme exécutable développé avec Visual Basic.

chui pas dans la mer...
__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 16h12   #14
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Bon en cherchant un peu dans les Dlls j'ai trouvé cette classe

Faut créer une référence dans le projet VBA sur Microsoft WMI Scripting ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Document_Open()  
   Set MyWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
   Set MyProcesses = MyWMIService.ExecQuery("Select * from Win32_Process " & "Where Name = 'winword.exe'")
   For Each objProcess In MyProcesses
      Dim MyWMIProperties As WbemScripting.SWbemPropertySet
      Dim MyWMIProperty As WbemScripting.SWbemProperty
      Set MyWMIProperties = objProcess.Properties_
      For Each MyWMIProperty In MyWMIProperties
         If MyWMIProperty.Name = "CommandLine" Then
            Debug.Print MyWMIProperty.Value
            Stop
         End If
      Next
   Next
End Sub
donc si on fait un double click sur un fichier word dans l'explorateur Windows on obtient ce résultat:

"C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" /n /dde

Et là ben toujours pas de chemin d'accès !!!

En revanche, si on démarre word à l'aide d'un raccourci ayant le lien comme ceci:

Cible = "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" "G:\EDPs\Modèles\edp.doc"

On obtient:

"C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" "G:\EDPs\Modèles\edp.doc"

Et là, il y a bien le chemin du fichier comme argument.
ça vous parle un peu plus ?
__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 10h35   #15
Membre chevronné
 
Avatar de DotNET74
 
Homme
Watch R&D Engineer & Apprenti .NET
Inscription : août 2003
Messages : 1 124
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Watch R&D Engineer & Apprenti .NET

Informations forums :
Inscription : août 2003
Messages : 1 124
Points : 785
Points : 785
Envoyer un message via MSN à DotNET74
Alors !!!!

Je vous ai posé une colle là hein !!!

__________________
La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

Si vous aimez ma réponse, cliquez sur la main verte Merci
DotNET74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h18.


 
 
 
 
Partenaires

Hébergement Web