J'ai un document excel à partir duquel j'ouvre différebt document word en cliquant sur les cellules, seulement à chaque fois, j'ai une nouvelle instance de word qui apparait dans la barre des taches. Je voudrai n'en avoir qu'une et que le nouveau document remplace l'existant.
J'ai bien fait un système de variable globale (wdApp ) pour savoir sir une instance de l'application word avait été créée mais ce n'est pas très propre.
Y a t-il une meilleur solution ?
Merci.
Dim i As Integer
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Sub RecupereValeurCellule(ByVal Sh As Object, ByVal Target As Range)
'MsgBox ("Appel a RecupereValeurCellule2")
If Target.Column = 3 Then
' recupere la valeur de la cellule cliquée
valeurDeLaCelluleCourante = Range(ActiveCell.Address)
'recupere la valeur de la cellule en colonne B de la ligne courante
adr = "$B$" & Target.Row
valeurB = Range(adr)
'recupere la valeur de la cellule en colonne A de la ligne courante
adr = "$A$" & Target.Row
valeurA = Range(adr)
'Récupération de la feuille active
'MsgBox (Application.ActiveWorkbook.ActiveSheet.Name)
nomFeuilleActive = Application.ActiveWorkbook.ActiveSheet.Name
'Nom du documlent word a ouvrir en fonction de la cellule active
'MsgBox (nomFeuilleActive)
If nomFeuilleActive = "Test COCPIT" Then
'MsgBox ("cas Test COCPIT")
planEssai = "D:\PUBLIC\Pleiades-HR\LienExcelWord\PRS-PE-CPIT-230-CG_02_04_1.doc"
End If
If nomFeuilleActive = "Test PHR" Then
'MsgBox ("cas Test PHR")
planEssai = "D:\PUBLIC\Pleiades-HR\LienExcelWord\PHR-PE-642-2307-CG_01_03.doc"
End If
nomDuTest = valeurA & "-" & valeurB & "-" & valeurDeLaCelluleCourante & " £N"
'ouverture du document word et appel de la macro de recherche du test
'Dim wdApp As Word.Application
'Dim wdDoc As Word.Document
'MsgBox (i)
If i = 0 Then
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(planEssai)
i = 1
End If
wdApp.Visible = True
wdApp.Run "Macro2", nomDuTest
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
RecupereValeurCellule Sh, Target
End Sub
J'ai bien fait un système de variable globale (wdApp ) pour savoir sir une instance de l'application word avait été créée mais ce n'est pas très propre.
Y a t-il une meilleur solution ?
Merci.
Dim i As Integer
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Sub RecupereValeurCellule(ByVal Sh As Object, ByVal Target As Range)
'MsgBox ("Appel a RecupereValeurCellule2")
If Target.Column = 3 Then
' recupere la valeur de la cellule cliquée
valeurDeLaCelluleCourante = Range(ActiveCell.Address)
'recupere la valeur de la cellule en colonne B de la ligne courante
adr = "$B$" & Target.Row
valeurB = Range(adr)
'recupere la valeur de la cellule en colonne A de la ligne courante
adr = "$A$" & Target.Row
valeurA = Range(adr)
'Récupération de la feuille active
'MsgBox (Application.ActiveWorkbook.ActiveSheet.Name)
nomFeuilleActive = Application.ActiveWorkbook.ActiveSheet.Name
'Nom du documlent word a ouvrir en fonction de la cellule active
'MsgBox (nomFeuilleActive)
If nomFeuilleActive = "Test COCPIT" Then
'MsgBox ("cas Test COCPIT")
planEssai = "D:\PUBLIC\Pleiades-HR\LienExcelWord\PRS-PE-CPIT-230-CG_02_04_1.doc"
End If
If nomFeuilleActive = "Test PHR" Then
'MsgBox ("cas Test PHR")
planEssai = "D:\PUBLIC\Pleiades-HR\LienExcelWord\PHR-PE-642-2307-CG_01_03.doc"
End If
nomDuTest = valeurA & "-" & valeurB & "-" & valeurDeLaCelluleCourante & " £N"
'ouverture du document word et appel de la macro de recherche du test
'Dim wdApp As Word.Application
'Dim wdDoc As Word.Document
'MsgBox (i)
If i = 0 Then
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(planEssai)
i = 1
End If
wdApp.Visible = True
wdApp.Run "Macro2", nomDuTest
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
RecupereValeurCellule Sh, Target
End Sub