Ouvrir Word depuis excel et lui donner le focus

Le
Emile63
Bonjour a tous,
Depuis la suite office 2010, a travers des chemins + noms complet figurant =
sur une feuille Excel que je double-clic je souhaite ouvrir le document en =
question avec Word et lui donner le focus a travers la macros suivante, Wor=
d et la feuille s'ouvrent, mais Excel reste au premier plan, alors que je s=
ouhaiterais que ce soit Word.
Je vous remercie d'avance pour votre aide et solutions.
cordialement,
Emile

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Bo=
olean)
Dim appWD As Word.Application

With Application
.StatusBar = "Exécution de macro en cours."
End With
Cancel = True
MyPos = LCase(Right(Target.Value, 4))
Select Case MyPos
Case "docm"
Set appWD = CreateObject("Word.Application")
appWD.Documents.Open Target.Offset(0, 2).Value
' appWD.Documents.Add Template:=Target.Offset(0, 2).Value, NewT=
emplate:=False, _
DocumentType:=0
appWD.Visible = True
Set appWD = Nothing
Case "docx"
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
appWD.Documents.Open Target.Offset(0, 2).Value
Set wordobj = Nothing

End Select
With Application
.StatusBar = False
.EnableEvents = True
.ScreenUpdating = True
.DisplayAlerts = True

End WithEnd Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #24539931
bonjour Emile,

ajoute
appWD.Activate
juste après
appWD.Visible = True

--
isabelle



Le 2012-06-06 06:46, Emile63 a écrit :
Bonjour a tous,
Depuis la suite office 2010, a travers des chemins + noms complet figurant sur une feuille Excel que je double-clic



je souhaite ouvrir le document en question avec Word et lui donner le focus a travers la macros suivante, Word et la feuille s'ouvrent,

mais Excel reste au premier plan, alors que je souhaiterais que ce soit Word.
Je vous remercie d'avance pour votre aide et solutions.
cordialement,
Emile

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim appWD As Word.Application

With Application
.StatusBar = "Exécution de macro en cours...."
End With
Cancel = True
MyPos = LCase(Right(Target.Value, 4))
Select Case MyPos
Case "docm"
Set appWD = CreateObject("Word.Application")
appWD.Documents.Open Target.Offset(0, 2).Value
' appWD.Documents.Add Template:=Target.Offset(0, 2).Value, NewTemplate:úlse, _
DocumentType:=0
appWD.Visible = True
Set appWD = Nothing
Case "docx"
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
appWD.Documents.Open Target.Offset(0, 2).Value
Set wordobj = Nothing

End Select
With Application
.StatusBar = False
.EnableEvents = True
.ScreenUpdating = True
.DisplayAlerts = True

End WithEnd Sub

MichD
Le #24539921
Bonjour,

Un petit exemple simple :

Déclaration des API dans le haut d'un module standard
'=================================== Declare Function BringWindowToTop Lib "user32" (ByVal _
hwnd As Long) As Long

Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName _
As Any) As Long
'===================================
Un petit exemple comment ouvrir un document Word et
conserver l'application Excel comme application active et visible.

'------------------------------------------------------------
Sub test()
Dim HandleExcel As Long, Y As Long
Dim Wd As Word
Dim Dc As Object

HandleExcel = FindWindow(vbEmpty, Application.Caption)

Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.documents.Open("C:UsersDenisDocumentsdenis.docx")
Y = BringWindowToTop(X)

End Sub
'------------------------------------------------------------
MichD
Le #24540011
Désolé, je suis lunatique ce matin! ;-))

Remplace la procédure "Test" du message précédent
par celle-ci :

'-------------------------------------
Sub test()

Dim HandleWord As Long, Y As Long
Dim Wd As Object
Dim Dc As Object

Set Wd = CreateObject("Word.Application")
Wd.Visible = True

'Nom et chemin du document à adapter
Set Dc = Wd.documents.Open("C:UsersTon profilDocumentstoto.docx")
HandleExcel = FindWindow(vbEmpty, CStr(Wd.Caption))
Y = BringWindowToTop(HandleExcel)

End Sub
'-------------------------------------
MichD
Le #24540001
Désolé, je suis lunatique ce matin! ;-))

Remplace la procédure "Test" du message précédent
par celle-ci :

C'est la bonne! je retourne me coucher à moins qu'Isabelle m'offre le
café...
-;)))

'-------------------------------------
Sub test()

Dim HandleWord As Long, Y As Long
Dim Wd As Object
Dim Dc As Object

Set Wd = CreateObject("Word.Application")
Wd.Visible = True

'Nom et chemin du document à adapter
Set Dc = Wd.documents.Open("C:UsersTon profilDocumentstoto.docx")
HandleWord = FindWindow(vbEmpty, CStr(Wd.Caption))
Y = BringWindowToTop(HandleWord)

End Sub
'-------------------------------------




"MichD" a écrit dans le message de groupe de discussion :
jqnh65$li8$

Désolé, je suis lunatique ce matin! ;-))

Remplace la procédure "Test" du message précédent
par celle-ci :

'-------------------------------------
Sub test()

Dim HandleWord As Long, Y As Long
Dim Wd As Object
Dim Dc As Object

Set Wd = CreateObject("Word.Application")
Wd.Visible = True

'Nom et chemin du document à adapter
Set Dc = Wd.documents.Open("C:UsersTon profilDocumentstoto.docx")
HandleExcel = FindWindow(vbEmpty, CStr(Wd.Caption))
Y = BringWindowToTop(HandleExcel)

End Sub
'-------------------------------------
Emile63
Le #24540221
El miércoles, 6 de junio de 2012 12:46:32 UTC+2, Emile63 escribió:
Bonjour a tous,
Depuis la suite office 2010, a travers des chemins + noms complet figuran t sur une feuille Excel que je double-clic je souhaite ouvrir le document e n question avec Word et lui donner le focus a travers la macros suivante, W ord et la feuille s'ouvrent, mais Excel reste au premier plan, alors que je souhaiterais que ce soit Word.
Je vous remercie d'avance pour votre aide et solutions.
cordialement,
Emile

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim appWD As Word.Application

With Application
.StatusBar = "Exécution de macro en cours...."
End With
Cancel = True
MyPos = LCase(Right(Target.Value, 4))
Select Case MyPos
Case "docm"
Set appWD = CreateObject("Word.Application")
appWD.Documents.Open Target.Offset(0, 2).Value
' appWD.Documents.Add Template:=Target.Offset(0, 2).Value, Ne wTemplate:úlse, _
DocumentType:=0
appWD.Visible = True
Set appWD = Nothing
Case "docx"
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
appWD.Documents.Open Target.Offset(0, 2).Value
Set wordobj = Nothing

End Select
With Application
.StatusBar = False
.EnableEvents = True
.ScreenUpdating = True
.DisplayAlerts = True

End WithEnd Sub




Merci Isabelle,ça fonctionne parfaitement. :-)
isabelle
Le #24540181
Le 2012-06-06 08:09, MichD a écrit :
Désolé, je suis lunatique ce matin! ;-))

C'est la bonne! je retourne me coucher à moins qu'Isabelle m'offre le café...
-;)))



arrive! la cafetière vient de sonner ;-)

--
isabelle
MichD
Le #24540211
| arrive! la cafetière vient de sonner ;-)

Et bien merci!
;-))
MichD
Le #24540371
Maintenant après le bon café d'Isabelle,

Si tu exécutes ce code, l'application "Word" et le fichier que
tu viens d'ouvrir est déjà le document affiché à l'écran.

Pour quoi vouloir ajouté du code pour le rendre actif, il l'est déjà!
Cela explique pourquoi lors de mon premier message, je pensais
(j'avais mal lu) que tu voulais conserver l'application Excel active
après avoir un document Word.

Si tu veux que le Document Word soit actif, nul besoin du code d'Isabelle
ou du mien... Où il y a quelque chose que je ne comprends pas.

'----------------------------------------
Sub test()

Dim Wd As Object
Dim Dc As Object

Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.documents.Open("C:CheminMonDocument.docx")

End Sub
'----------------------------------------
Fredo P.
Le #24540861
"MichD" jqnh65$li8$
Désolé, je suis lunatique ce matin! ;-))


En plus on est toujours en lune de mai et pleine lune, on ne dort pas comme
il faut, ce sont ces jours la que les renards à 2 pattes sortent du bois!
MichD
Le #24540881
Ce qui m'a perturbé, c'est le passage de Vénus entre le soleil
et la lune vers 18:30 heures hier...! ;-))

La prochaine dans 105 ans seulement!
Publicité
Poster une réponse
Anonyme