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

ouverture excel en vba depuis une autre application

11 réponses
Avatar
Michel
Bonjour a tout le monde,

Je ne sais pas si c'est HS ou pas...

depuis access j'essais d'ouvrir un fichier excel via le code :

Dim objSheet As Object
Dim strBook As String
Dim strPath As String

'init à modifier
strPath = "W:\REPORTING\Pricing"
strBook = "Extract_Prix_D-2_MF.xls"
strSheet = "Query_Px_Avant_Veille_1"

Set objApp = CreateObject("excel.application")
Set objBook = objApp.Workbooks.Open(strPath & "\" & strBook)
Set objSheet = objBook.Worksheets(strSheet)
objApp.Visible = True 'si on veut visualiser

With objSheet
.Range("A1").Value = "Valoren Number"
End With

en passant par cette methode, la session excel ne load pas toutes les memes
fonctionnalites ou barre outils qu'un simple :
ChDir "J:\"
Workbooks.Open FileName:="C:.....xls"

Sauriez vous me dire pourquoi ?

Merci d'avance...

Un pauvre utilisateur perdu dans les Add-ins.....

@+

Michel.

10 réponses

1 2
Avatar
MichDenis
Bonjour Michel,

Sur ce sujet, Frédéric Sigonneau a publié ce qui suit :

***************************************************************************

le comportement que tu décris semble faire partie des "charmes"
cachés de l'utilisation d'Excel avec Automation.
Il semble en effet que les macros complémentaires qui utilisent/créent un bouton
de barre d'outils pour leur fonctionnement ne soient pas lancées lorsqu'Excel
est créé par Automation. Alors que celles qui utilisent des entrées de menu le
sont...

Pour résoudre ce problème, ce genre de code fonctionne pour moi (Excel 2002) :

Sub TestAddinExcel()
Dim xl As Object

Set xl = CreateObject("Excel.Application")
xl.Workbooks.Add
xl.AddIns("Titre de la macro").Installed = False
xl.AddIns("Titre de la macro").Installed = True
xl.Visible = True

End Sub

"Titre de la macro" est le nom de la macro complémentaire tel qu'il apparaît
dans la liste ouverte par OutilsMacros complémentaires.

***************************************************************************




"Michel" a écrit dans le message de groupe de
discussion :
Bonjour a tout le monde,

Je ne sais pas si c'est HS ou pas...

depuis access j'essais d'ouvrir un fichier excel via le code :

Dim objSheet As Object
Dim strBook As String
Dim strPath As String

'init à modifier
strPath = "W:REPORTINGPricing"
strBook = "Extract_Prix_D-2_MF.xls"
strSheet = "Query_Px_Avant_Veille_1"

Set objApp = CreateObject("excel.application")
Set objBook = objApp.Workbooks.Open(strPath & "" & strBook)
Set objSheet = objBook.Worksheets(strSheet)
objApp.Visible = True 'si on veut visualiser

With objSheet
.Range("A1").Value = "Valoren Number"
End With

en passant par cette methode, la session excel ne load pas toutes les memes
fonctionnalites ou barre outils qu'un simple :
ChDir "J:"
Workbooks.Open FileName:="C:.....xls"

Sauriez vous me dire pourquoi ?

Merci d'avance...

Un pauvre utilisateur perdu dans les Add-ins.....

@+

Michel.
Avatar
Michel
encore un tres grand merci.... Que ferais-je sans toi... :o)

Je test demain et te dirais si ca a marche...

Bonne fin de we.

@+

Michel.

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

Bonjour Michel,

Sur ce sujet, Frédéric Sigonneau a publié ce qui suit :

***************************************************************************

le comportement que tu décris semble faire partie des "charmes"
cachés de l'utilisation d'Excel avec Automation.
Il semble en effet que les macros complémentaires qui utilisent/créent un
bouton
de barre d'outils pour leur fonctionnement ne soient pas lancées
lorsqu'Excel
est créé par Automation. Alors que celles qui utilisent des entrées de
menu le
sont...

Pour résoudre ce problème, ce genre de code fonctionne pour moi (Excel
2002) :

Sub TestAddinExcel()
Dim xl As Object

Set xl = CreateObject("Excel.Application")
xl.Workbooks.Add
xl.AddIns("Titre de la macro").Installed = False
xl.AddIns("Titre de la macro").Installed = True
xl.Visible = True

End Sub

"Titre de la macro" est le nom de la macro complémentaire tel qu'il
apparaît
dans la liste ouverte par OutilsMacros complémentaires.

***************************************************************************




"Michel" a écrit dans le message de
groupe de
discussion :
Bonjour a tout le monde,

Je ne sais pas si c'est HS ou pas...

depuis access j'essais d'ouvrir un fichier excel via le code :

Dim objSheet As Object
Dim strBook As String
Dim strPath As String

'init à modifier
strPath = "W:REPORTINGPricing"
strBook = "Extract_Prix_D-2_MF.xls"
strSheet = "Query_Px_Avant_Veille_1"

Set objApp = CreateObject("excel.application")
Set objBook = objApp.Workbooks.Open(strPath & "" & strBook)
Set objSheet = objBook.Worksheets(strSheet)
objApp.Visible = True 'si on veut visualiser

With objSheet
.Range("A1").Value = "Valoren Number"
End With

en passant par cette methode, la session excel ne load pas toutes les
memes
fonctionnalites ou barre outils qu'un simple :
ChDir "J:"
Workbooks.Open FileName:="C:.....xls"

Sauriez vous me dire pourquoi ?

Merci d'avance...

Un pauvre utilisateur perdu dans les Add-ins.....

@+

Michel.




Avatar
Michel
Bonjour,

super ca marche !!!!

Petite question j'essaie de faire un copier special valeur, mais ca ne
marche pas.
Aurais tu peut etre une idee ?
ObjApp.Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
:úlse, Transpose:úlse

ou

Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
'''' :úlse, Transpose:úlse

ne marche pas :o(

Merci encore,

@+

Michel.



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

Bonjour Michel,

Sur ce sujet, Frédéric Sigonneau a publié ce qui suit :

***************************************************************************

le comportement que tu décris semble faire partie des "charmes"
cachés de l'utilisation d'Excel avec Automation.
Il semble en effet que les macros complémentaires qui utilisent/créent un
bouton
de barre d'outils pour leur fonctionnement ne soient pas lancées
lorsqu'Excel
est créé par Automation. Alors que celles qui utilisent des entrées de
menu le
sont...

Pour résoudre ce problème, ce genre de code fonctionne pour moi (Excel
2002) :

Sub TestAddinExcel()
Dim xl As Object

Set xl = CreateObject("Excel.Application")
xl.Workbooks.Add
xl.AddIns("Titre de la macro").Installed = False
xl.AddIns("Titre de la macro").Installed = True
xl.Visible = True

End Sub

"Titre de la macro" est le nom de la macro complémentaire tel qu'il
apparaît
dans la liste ouverte par OutilsMacros complémentaires.

***************************************************************************




"Michel" a écrit dans le message de
groupe de
discussion :
Bonjour a tout le monde,

Je ne sais pas si c'est HS ou pas...

depuis access j'essais d'ouvrir un fichier excel via le code :

Dim objSheet As Object
Dim strBook As String
Dim strPath As String

'init à modifier
strPath = "W:REPORTINGPricing"
strBook = "Extract_Prix_D-2_MF.xls"
strSheet = "Query_Px_Avant_Veille_1"

Set objApp = CreateObject("excel.application")
Set objBook = objApp.Workbooks.Open(strPath & "" & strBook)
Set objSheet = objBook.Worksheets(strSheet)
objApp.Visible = True 'si on veut visualiser

With objSheet
.Range("A1").Value = "Valoren Number"
End With

en passant par cette methode, la session excel ne load pas toutes les
memes
fonctionnalites ou barre outils qu'un simple :
ChDir "J:"
Workbooks.Open FileName:="C:.....xls"

Sauriez vous me dire pourquoi ?

Merci d'avance...

Un pauvre utilisateur perdu dans les Add-ins.....

@+

Michel.




Avatar
MichDenis
Pour faire ta copie, si tu utilises la variable Objet Excel que tu as créée,

dim Xl as object
dim Wk As object

Set xl = CreateObject("Excel.Application")
Set Wk = Xl.Workbooks(Chemin & Fichier.xls) 'à ouvrir

Maintenant
Wk.Worksheets("NomDelaFeuille").Range("A1:A25").Copy
Wk.Worksheets("AutreFeuille").range(le reste de la commande...pour coller)

Ferme le classeur en sauvegardant
Wk.Close true
Ferme l'instance d'excel
xl.quit





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

super ca marche !!!!

Petite question j'essaie de faire un copier special valeur, mais ca ne
marche pas.
Aurais tu peut etre une idee ?
ObjApp.Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
:úlse, Transpose:úlse

ou

Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
'''' :úlse, Transpose:úlse

ne marche pas :o(

Merci encore,

@+

Michel.



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

Bonjour Michel,

Sur ce sujet, Frédéric Sigonneau a publié ce qui suit :

***************************************************************************

le comportement que tu décris semble faire partie des "charmes"
cachés de l'utilisation d'Excel avec Automation.
Il semble en effet que les macros complémentaires qui utilisent/créent un
bouton
de barre d'outils pour leur fonctionnement ne soient pas lancées
lorsqu'Excel
est créé par Automation. Alors que celles qui utilisent des entrées de
menu le
sont...

Pour résoudre ce problème, ce genre de code fonctionne pour moi (Excel
2002) :

Sub TestAddinExcel()
Dim xl As Object

Set xl = CreateObject("Excel.Application")
xl.Workbooks.Add
xl.AddIns("Titre de la macro").Installed = False
xl.AddIns("Titre de la macro").Installed = True
xl.Visible = True

End Sub

"Titre de la macro" est le nom de la macro complémentaire tel qu'il
apparaît
dans la liste ouverte par OutilsMacros complémentaires.

***************************************************************************




"Michel" a écrit dans le message de
groupe de
discussion :
Bonjour a tout le monde,

Je ne sais pas si c'est HS ou pas...

depuis access j'essais d'ouvrir un fichier excel via le code :

Dim objSheet As Object
Dim strBook As String
Dim strPath As String

'init à modifier
strPath = "W:REPORTINGPricing"
strBook = "Extract_Prix_D-2_MF.xls"
strSheet = "Query_Px_Avant_Veille_1"

Set objApp = CreateObject("excel.application")
Set objBook = objApp.Workbooks.Open(strPath & "" & strBook)
Set objSheet = objBook.Worksheets(strSheet)
objApp.Visible = True 'si on veut visualiser

With objSheet
.Range("A1").Value = "Valoren Number"
End With

en passant par cette methode, la session excel ne load pas toutes les
memes
fonctionnalites ou barre outils qu'un simple :
ChDir "J:"
Workbooks.Open FileName:="C:.....xls"

Sauriez vous me dire pourquoi ?

Merci d'avance...

Un pauvre utilisateur perdu dans les Add-ins.....

@+

Michel.




Avatar
Michel
Vais faire ce demain, un tres, tres, tres grand merci de ton aide et de ton
temps.
Je trouve ces commandes bien compliquees. Dommage qu'on ne puisse pas
utilise les memes commandes que dans VBA de Excel :o)

@+

Micel.


"MichDenis" a écrit dans le message de news:
Ob%
Pour faire ta copie, si tu utilises la variable Objet Excel que tu as
créée,

dim Xl as object
dim Wk As object

Set xl = CreateObject("Excel.Application")
Set Wk = Xl.Workbooks(Chemin & Fichier.xls) 'à ouvrir

Maintenant
Wk.Worksheets("NomDelaFeuille").Range("A1:A25").Copy
Wk.Worksheets("AutreFeuille").range(le reste de la commande...pour coller)

Ferme le classeur en sauvegardant
Wk.Close true
Ferme l'instance d'excel
xl.quit





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

super ca marche !!!!

Petite question j'essaie de faire un copier special valeur, mais ca ne
marche pas.
Aurais tu peut etre une idee ?
ObjApp.Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
:úlse, Transpose:úlse

ou

Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
'''' :úlse, Transpose:úlse

ne marche pas :o(

Merci encore,

@+

Michel.



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

Bonjour Michel,

Sur ce sujet, Frédéric Sigonneau a publié ce qui suit :

***************************************************************************

le comportement que tu décris semble faire partie des "charmes"
cachés de l'utilisation d'Excel avec Automation.
Il semble en effet que les macros complémentaires qui utilisent/créent un
bouton
de barre d'outils pour leur fonctionnement ne soient pas lancées
lorsqu'Excel
est créé par Automation. Alors que celles qui utilisent des entrées de
menu le
sont...

Pour résoudre ce problème, ce genre de code fonctionne pour moi (Excel
2002) :

Sub TestAddinExcel()
Dim xl As Object

Set xl = CreateObject("Excel.Application")
xl.Workbooks.Add
xl.AddIns("Titre de la macro").Installed = False
xl.AddIns("Titre de la macro").Installed = True
xl.Visible = True

End Sub

"Titre de la macro" est le nom de la macro complémentaire tel qu'il
apparaît
dans la liste ouverte par OutilsMacros complémentaires.

***************************************************************************




"Michel" a écrit dans le message
de
groupe de
discussion :
Bonjour a tout le monde,

Je ne sais pas si c'est HS ou pas...

depuis access j'essais d'ouvrir un fichier excel via le code :

Dim objSheet As Object
Dim strBook As String
Dim strPath As String

'init à modifier
strPath = "W:REPORTINGPricing"
strBook = "Extract_Prix_D-2_MF.xls"
strSheet = "Query_Px_Avant_Veille_1"

Set objApp = CreateObject("excel.application")
Set objBook = objApp.Workbooks.Open(strPath & "" & strBook)
Set objSheet = objBook.Worksheets(strSheet)
objApp.Visible = True 'si on veut visualiser

With objSheet
.Range("A1").Value = "Valoren Number"
End With

en passant par cette methode, la session excel ne load pas toutes les
memes
fonctionnalites ou barre outils qu'un simple :
ChDir "J:"
Workbooks.Open FileName:="C:.....xls"

Sauriez vous me dire pourquoi ?

Merci d'avance...

Un pauvre utilisateur perdu dans les Add-ins.....

@+

Michel.








Avatar
Michel
Bonjour,

j'ai essaye mais ca ne marche pas le copier coller :o(
selectionner une feuille et la renommer ca c'est ok.

Aurais tu une idee pourquoi ?

Merci d'avance.

Michel.


"MichDenis" a écrit dans le message de news:
Ob%
Pour faire ta copie, si tu utilises la variable Objet Excel que tu as
créée,

dim Xl as object
dim Wk As object

Set xl = CreateObject("Excel.Application")
Set Wk = Xl.Workbooks(Chemin & Fichier.xls) 'à ouvrir

Maintenant
Wk.Worksheets("NomDelaFeuille").Range("A1:A25").Copy
Wk.Worksheets("AutreFeuille").range(le reste de la commande...pour coller)

Ferme le classeur en sauvegardant
Wk.Close true
Ferme l'instance d'excel
xl.quit





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

super ca marche !!!!

Petite question j'essaie de faire un copier special valeur, mais ca ne
marche pas.
Aurais tu peut etre une idee ?
ObjApp.Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
:úlse, Transpose:úlse

ou

Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
'''' :úlse, Transpose:úlse

ne marche pas :o(

Merci encore,

@+

Michel.



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

Bonjour Michel,

Sur ce sujet, Frédéric Sigonneau a publié ce qui suit :

***************************************************************************

le comportement que tu décris semble faire partie des "charmes"
cachés de l'utilisation d'Excel avec Automation.
Il semble en effet que les macros complémentaires qui utilisent/créent un
bouton
de barre d'outils pour leur fonctionnement ne soient pas lancées
lorsqu'Excel
est créé par Automation. Alors que celles qui utilisent des entrées de
menu le
sont...

Pour résoudre ce problème, ce genre de code fonctionne pour moi (Excel
2002) :

Sub TestAddinExcel()
Dim xl As Object

Set xl = CreateObject("Excel.Application")
xl.Workbooks.Add
xl.AddIns("Titre de la macro").Installed = False
xl.AddIns("Titre de la macro").Installed = True
xl.Visible = True

End Sub

"Titre de la macro" est le nom de la macro complémentaire tel qu'il
apparaît
dans la liste ouverte par OutilsMacros complémentaires.

***************************************************************************




"Michel" a écrit dans le message
de
groupe de
discussion :
Bonjour a tout le monde,

Je ne sais pas si c'est HS ou pas...

depuis access j'essais d'ouvrir un fichier excel via le code :

Dim objSheet As Object
Dim strBook As String
Dim strPath As String

'init à modifier
strPath = "W:REPORTINGPricing"
strBook = "Extract_Prix_D-2_MF.xls"
strSheet = "Query_Px_Avant_Veille_1"

Set objApp = CreateObject("excel.application")
Set objBook = objApp.Workbooks.Open(strPath & "" & strBook)
Set objSheet = objBook.Worksheets(strSheet)
objApp.Visible = True 'si on veut visualiser

With objSheet
.Range("A1").Value = "Valoren Number"
End With

en passant par cette methode, la session excel ne load pas toutes les
memes
fonctionnalites ou barre outils qu'un simple :
ChDir "J:"
Workbooks.Open FileName:="C:.....xls"

Sauriez vous me dire pourquoi ?

Merci d'avance...

Un pauvre utilisateur perdu dans les Add-ins.....

@+

Michel.








Avatar
MichDenis
Au lieu de te contenter de dire que cela ne fonctionne pas,
publie ici la procédure (non le fichier) que tu utilises, et,
spécifie le message d'erreur que tu obtiens et / ou la
ligne de code qui refuse de s'exécuter.
Avatar
Michel
:o(

A y est je t'ai enerve.... Sorry....

Publié le 06/04/2009 a 19:11 (je n'ai pas les secondes, sorry...)

copié coller de ce message du meme fil :

Petite question j'essaie de faire un copier special valeur, mais ca ne
marche pas.
Aurais tu peut etre une idee ?
ObjApp.Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
:úlse, Transpose:úlse

ou

Selection.PasteSpecial Paste:=ObjApp.xlPasteValues,
Operation:=ObjApp.xlNone, SkipBlanks _
'''' :úlse, Transpose:úlse

ne marche pas :o(




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

Au lieu de te contenter de dire que cela ne fonctionne pas,
publie ici la procédure (non le fichier) que tu utilises, et,
spécifie le message d'erreur que tu obtiens et / ou la
ligne de code qui refuse de s'exécuter.








Avatar
Michel
j'ai omis de dire que je passe par la commande getobject de JAN au lieu de
CreateObject

ce qui change beaucoup de chose, mais comme tu le penses je suis super nul a
ce sujet, et je n'ai pas trouve grand chose pour m'aider....

voila le code :

Public Sub OpenExcel()

Dim XL As Object

' Test Excel ouvert
On Error Resume Next '
Set XL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
ExcelWasNotRunning = True
Set XL = CreateObject("Excel.Application")
End If
Err.Clear
'DetectExcel

Set XL = GetObject("C:excelnomfichier.xls")

XL.Application.Visible = True
XL.Parent.Windows(1).Visible = True
XL.Range("a1").Select

End Sub



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

Au lieu de te contenter de dire que cela ne fonctionne pas,
publie ici la procédure (non le fichier) que tu utilises, et,
spécifie le message d'erreur que tu obtiens et / ou la
ligne de code qui refuse de s'exécuter.








Avatar
Michel
bonjour,
desole mais je me suis peut etre mal exprime sur les derniers points.
Tout ce que tu m'as explique je l'ai vu sur internet et tu me l'avais
confirme avant aussi.
Je n'ai pas de probleme a selectionner une feuille a selectionner une
cellule quand :
* Je creer un nopuveau fichier excel
* J'ouvre un fichier excel (qui exister avant, mais est ferme) <<Set Wk =
Xl.Workbooks. Open("C:excelnomfichier.xls")






Mon probleme est lorsque ce fichier excel est deja ouvert. Fonction
<<GetObject(, "Excel.Application")>>

Voila le code que j'utilise :

Public Sub OpenExcel()

Dim XL As Object

' Test Excel ouvert
On Error Resume Next '
Set XL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
ExcelWasNotRunning = True
Set XL = CreateObject("Excel.Application")
End If
Err.Clear
'DetectExcel

Set XL = GetObject("Z:BOULOTExtract_Prix_D-2_MF.xls")

XL.Application.Visible = True
XL.Parent.Windows(1).Visible = True


XL.Sheets.Add
XL.ActiveSheet.Name = "Liste_Finale"
'sa ne marche pas
XL.Range("a1").Select
XL.Cells.Select
XL.Cells.EntireColumn.AutoFit
XL.Range("A1").Select

'ca marche
XL.Sheets("Query_Px_Avant_Veille_1").Select

' les deux solutions ne marchent pas
Wk.Worksheets("Query_Px_Avant_Veille_1").Cells.Select
XL.Cells.Select
XL.Selection.Copy
XL.Range("A1").Select
XL.Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
XL.Range("A1").Select

End Sub

Aurais-tu une idee ?

Merci d'avance, de ton temps, qui je le sais est precieux.
Apres cela je pourrais cloturer mon projet :o)

@+

Michel.


"MichDenis" a écrit dans le message de news:
%
L'utilisation de cette ligne de code s'applique
lorsqu'excel est ouvert
Set XL = CreateObject("Excel.Application")

Si Excel n'est pas ouvert, une erreur est générée et
la procédure utilise
Set XL = CreateObject("Excel.Application")
Pour rendre l'application excel :
Xl.Vsible = True

Maintenant, si tu veux ouvrir un fichier en utilisant la
variable Xl, tu dois procéder ainsi

Set Wk = Xl.Workbooks. Open("C:excelnomfichier.xls")

La variable Xl est un substitut pour Application
La variable Wk est un substitut pour un Workbook

Ton code devrait ressembler a ceci :

'-------------------------------------------------------
Sub OpenExcel()

Dim XL As Object, Wk As object

' Test Excel ouvert
On Error Resume Next '
Set XL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Err.Clear
Set XL = CreateObject("Excel.Application")
ExcelWasNotRunning = False
else
ExcelWasNotRunning = True
End If

'Rend visible application
XL.Application.Visible = True

'Ici ouverture de ton fichier
Set Wk = Xl.Workbooks.Open("C:excelnomfichier.xls")

'Pour sélectionner une cellule ou plage de cellules d'une feuille
with Wk.Worksheets("NomDeLaFeuille") 'Nom de la feuille a adapter
.Select
.Range("A5:G10").Select
End With
' le reste de ton code

'Pour fermer le classeur que tu viens d'ouvrir
Wk.Close True ' or false selon que tu veux sauvegarder les modifications

'pour fermer l'instance d'excel
xl.quit

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




1 2