Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Instance existe

5 réponses
Avatar
Jacques
Bonjour,

Débutant avec le VBA de Word, j'aimerai savoir si une instance de word est
déjà ouverte. J'ouvre un document avec un UserForm et j'aimerai gérer la
fermeture de Word.

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.

Je suppose qu'il me faut savoir si Word est déjà ouvert ou pas et agir en
conséquence.

Une petite aide pour détecter si une instance est déjà ouverte serait la
bienvenue.à


Merci de vos réponses


Jacques

5 réponses

Avatar
Dav
Bonsoir/jour Jacques

Voici ma proposition.

Sub instance()
Dim WordApp As Word.Application
Dim WordFonctionnePas As Boolean

WordFonctionnePas = False
On Error Resume Next
Set WordApp = GetObject(, "Word.Application") 'recherche d'erreur lors de la
prise en main de l'applicaiton Word
If Err.Number <> 0 Then 'Si erreur il y à...
WordFonctionnePas = True 'Alors Word ne fonctionnait pas
Set WordApp = CreateObject("Word.Application") 'et une instance est donc
créée
End If

With WordApp
.Documents.Add
.Selection.TypeText "Blabalbalblalal"
.ActiveDocument.SaveAs "C:MonDocWord.doc"
.ActiveDocument.Close
If .Documents.Count = 0 Then WordApp.Quit 'si il n'y a pas d'autre
document ouvert alors l'application est fermée sinon elle est laissée
ouverte.
End With
Set WordApp = Nothing

End Sub

A voir maintenant si cela te convient.
Je n'ai pas réutilisé la variable "WordFonctionnePas" car je trouve que
c'est un peu dangeureux. Au départ peut-être que l'utilisateur ne travaille
sur Word mais par la suite il peut ouvrir d'autres documents. Donc "IF
Documents.count = O alors quit sinon quit pas"

Dis nous si cela te convient.

Dav

"Jacques" a écrit dans le message de groupe de
discussion :
Bonjour,

Débutant avec le VBA de Word, j'aimerai savoir si une instance de word est
déjà ouverte. J'ouvre un document avec un UserForm et j'aimerai gérer la
fermeture de Word.

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.

Je suppose qu'il me faut savoir si Word est déjà ouvert ou pas et agir en
conséquence.

Une petite aide pour détecter si une instance est déjà ouverte serait la
bienvenue.à


Merci de vos réponses


Jacques






Avatar
Geo

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.


dans tous les cas vous fermez votre document.
Ensuite fermez Word s'il n'y a plus de document.
ActiveDocument.Close
If Documents.Count = 0 Then
Application.Quit
End If

--
A+

Avatar
Dav
Re...

En voyant la réponse de Geo je dois préciser que je suis tout de suite parti
dans l'idée que tu devais créer une instance de Word depuis une autre
application (Excel par exemple)
Ce qui n'est peut-être pas forcément le cas.
Comme j'ai dû récemment créer une instance de Word depuis Excel j'ai tout de
suite pensé à ça.

Dav


"Dav" a écrit dans le message de groupe de discussion :

Bonsoir/jour Jacques

Voici ma proposition.

Sub instance()
Dim WordApp As Word.Application
Dim WordFonctionnePas As Boolean

WordFonctionnePas = False
On Error Resume Next
Set WordApp = GetObject(, "Word.Application") 'recherche d'erreur lors de
la prise en main de l'applicaiton Word
If Err.Number <> 0 Then 'Si erreur il y à...
WordFonctionnePas = True 'Alors Word ne fonctionnait pas
Set WordApp = CreateObject("Word.Application") 'et une instance est
donc créée
End If

With WordApp
.Documents.Add
.Selection.TypeText "Blabalbalblalal"
.ActiveDocument.SaveAs "C:MonDocWord.doc"
.ActiveDocument.Close
If .Documents.Count = 0 Then WordApp.Quit 'si il n'y a pas d'autre
document ouvert alors l'application est fermée sinon elle est laissée
ouverte.
End With
Set WordApp = Nothing

End Sub

A voir maintenant si cela te convient.
Je n'ai pas réutilisé la variable "WordFonctionnePas" car je trouve que
c'est un peu dangeureux. Au départ peut-être que l'utilisateur ne
travaille sur Word mais par la suite il peut ouvrir d'autres documents.
Donc "IF Documents.count = O alors quit sinon quit pas"

Dis nous si cela te convient.

Dav

"Jacques" a écrit dans le message de groupe de
discussion :
Bonjour,

Débutant avec le VBA de Word, j'aimerai savoir si une instance de word
est
déjà ouverte. J'ouvre un document avec un UserForm et j'aimerai gérer la
fermeture de Word.

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.

Je suppose qu'il me faut savoir si Word est déjà ouvert ou pas et agir en
conséquence.

Une petite aide pour détecter si une instance est déjà ouverte serait la
bienvenue.à


Merci de vos réponses


Jacques








Avatar
Geo

Re...

En voyant la réponse de Geo je dois préciser que je suis tout de suite parti dans
l'idée que tu devais créer une instance de Word depuis une autre application (Excel par
exemple)
Ce qui n'est peut-être pas forcément le cas.


C'est peut être vous qui avez raison, on ne comprend pas toujours la
même chose en lisant une question.
C'est l'avantage des forums, chacun y apporte ce qu'il sait.

--
A+

Avatar
Jacques
Merci à vous deux !

Grâce à vos commentaires, j'ai pu régler mon problème. Effectivement c'est en
ouvrant le document que je voulais vérifier s'il y avait déjà une instance...!
Il y aura toujours une instance puisque j'ouvre un fichier doc !! Donc pour
savoir si un utilisateur a déjà ouvert un document, je compte le nombre de
documents ouverts. S'il n'y en a qu'un ...c'est le mien et donc je peux fermer
Word, s'il y en a au moins deux, cela veut dire que l'utilisateur a déjà ouvert
Word pour y travailler et donc je ne ferme que mon document !

Jacques


"Geo" a écrit dans le message de
news:

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.


dans tous les cas vous fermez votre document.
Ensuite fermez Word s'il n'y a plus de document.
ActiveDocument.Close
If Documents.Count = 0 Then
Application.Quit
End If

--
A+