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

Objets Excel dans Word

7 réponses
Avatar
JLuc
Bonjour les lecteurs,
J'ai un petit soucis, j'espère que l'un de vous aura la solution :oÞ
Je voudrais tester la présence d'un objet Excel dans un document Word,
seulement je ne vois pas comment faire. J'ai essayé çà :
*If oApp.ActiveDocument.InlineShapes(1).Activate = True Then*
Mais ca me met une erreur !
Que faut il faire pour tester sa présense ? (il ne peut y en avoir
qu'un)
Merci pour vos reponses

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-\O

7 réponses

Avatar
Oliv'
Bonjour les lecteurs,
J'ai un petit soucis, j'espère que l'un de vous aura la solution :oÞ
Je voudrais tester la présence d'un objet Excel dans un document Word,
seulement je ne vois pas comment faire. J'ai essayé çà :
*If oApp.ActiveDocument.InlineShapes(1).Activate = True Then*
Mais ca me met une erreur !
Que faut il faire pour tester sa présense ? (il ne peut y en avoir
qu'un)
Merci pour vos reponses


Essaye avec cela
Sub test()
Set oApp = Application
On Error Resume Next
toto = oApp.ActiveDocument.InlineShapes(1).OLEFormat.ClassType
On Error GoTo 0
If toto = "Excel.Sheet.8" Then
MsgBox "objet ExCel trouvé"
End if
End Sub


au fait Word c'est plutot microsoft.public.fr.Word
--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook :http://faq.outlook.free.fr/
Sql :http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Avatar
JLuc
*Bonjour Oliv'*,
Merci pour la réponse, je vais essayer çà.
Je gère les documents Word contenant des objets Excel à partir de ...
Escel :-?

Bonjour les lecteurs,
J'ai un petit soucis, j'espère que l'un de vous aura la solution :oÞ
Je voudrais tester la présence d'un objet Excel dans un document Word,
seulement je ne vois pas comment faire. J'ai essayé çà :
*If oApp.ActiveDocument.InlineShapes(1).Activate = True Then*
Mais ca me met une erreur !
Que faut il faire pour tester sa présense ? (il ne peut y en avoir
qu'un)
Merci pour vos reponses


Essaye avec cela
Sub test()
Set oApp = Application
On Error Resume Next
toto = oApp.ActiveDocument.InlineShapes(1).OLEFormat.ClassType
On Error GoTo 0
If toto = "Excel.Sheet.8" Then
MsgBox "objet ExCel trouvé"
End if
End Sub


au fait Word c'est plutot microsoft.public.fr.Word
--



--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O


Avatar
JLuc
*Bonjour Oliv'*,
Raté !
Lorsque j'éxécute le code, j'ai l'erreur :
Erreur 5941
Le membre de la collection requis n'existe pas.
C'est pour éviter cette erreur que je voudrais pouvoir tester son
existance ou pas


Bonjour les lecteurs,
J'ai un petit soucis, j'espère que l'un de vous aura la solution :oÞ
Je voudrais tester la présence d'un objet Excel dans un document Word,
seulement je ne vois pas comment faire. J'ai essayé çà :
*If oApp.ActiveDocument.InlineShapes(1).Activate = True Then*
Mais ca me met une erreur !
Que faut il faire pour tester sa présense ? (il ne peut y en avoir
qu'un)
Merci pour vos reponses


Essaye avec cela
Sub test()
Set oApp = Application
On Error Resume Next
toto = oApp.ActiveDocument.InlineShapes(1).OLEFormat.ClassType
On Error GoTo 0
If toto = "Excel.Sheet.8" Then
MsgBox "objet ExCel trouvé"
End if
End Sub


au fait Word c'est plutot microsoft.public.fr.Word
--



--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O


Avatar
Clément Marcotte
Bonjour,

Pas testé.

Essaie de voir si tu ne pourrais pas retrouver le nombre de "shapes" avant
de sélectionner.

Cela devrait donner quelque chose de ce genre-là:
nombre = oApp.ActiveDocument.InlineShapes.count
if nombre = 1 then
oApp.ActiveDocument.InlineShapes(1).Activate = True
elseif nombre = 0
msgbox "Shape non disponible"
else
msgbox "trop de shapes"
end if


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

Bonjour les lecteurs,
J'ai un petit soucis, j'espère que l'un de vous aura la solution :oÞ
Je voudrais tester la présence d'un objet Excel dans un document Word,
seulement je ne vois pas comment faire. J'ai essayé çà :
*If oApp.ActiveDocument.InlineShapes(1).Activate = True Then*
Mais ca me met une erreur !
Que faut il faire pour tester sa présense ? (il ne peut y en avoir qu'un)
Merci pour vos reponses

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O




Avatar
JLuc
*Bonjour Clément Marcotte*,
Fantastique, comment n'avais-je pas penser à les compter !
Tu m'a enlever une grosse épine du pied :')
Un grand merci à toi ainsi qu'a Oliv'

Bonjour,

Pas testé.

Essaie de voir si tu ne pourrais pas retrouver le nombre de "shapes" avant de
sélectionner.

Cela devrait donner quelque chose de ce genre-là:
nombre = oApp.ActiveDocument.InlineShapes.count
if nombre = 1 then
oApp.ActiveDocument.InlineShapes(1).Activate = True
elseif nombre = 0
msgbox "Shape non disponible"
else
msgbox "trop de shapes"
end if


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

Bonjour les lecteurs,
J'ai un petit soucis, j'espère que l'un de vous aura la solution :oÞ
Je voudrais tester la présence d'un objet Excel dans un document Word,
seulement je ne vois pas comment faire. J'ai essayé çà :
*If oApp.ActiveDocument.InlineShapes(1).Activate = True Then*
Mais ca me met une erreur !
Que faut il faire pour tester sa présense ? (il ne peut y en avoir qu'un)
Merci pour vos reponses

-- ____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O






--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O


Avatar
Oliv'
*Bonjour Oliv'*,
Raté !
Lorsque j'éxécute le code, j'ai l'erreur :
Erreur 5941
Le membre de la collection requis n'existe pas.
C'est pour éviter cette erreur que je voudrais pouvoir tester son
existance ou pas


oui mais avec la gestion d'erreur tu ne devrais justement pas avoir ce
problème.
si tu executes à partir de excel. tu dois avoir un truc du type
dim oApp as object
oApp=createObject("Word.application")

Oliv'





Bonjour les lecteurs,
J'ai un petit soucis, j'espère que l'un de vous aura la solution :oÞ
Je voudrais tester la présence d'un objet Excel dans un document
Word, seulement je ne vois pas comment faire. J'ai essayé çà :
*If oApp.ActiveDocument.InlineShapes(1).Activate = True Then*
Mais ca me met une erreur !
Que faut il faire pour tester sa présense ? (il ne peut y en avoir
qu'un)
Merci pour vos reponses


Essaye avec cela
Sub test()
Set oApp = Application
On Error Resume Next
toto = oApp.ActiveDocument.InlineShapes(1).OLEFormat.ClassType
On Error GoTo 0
If toto = "Excel.Sheet.8" Then
MsgBox "objet ExCel trouvé"
End if
End Sub


au fait Word c'est plutot microsoft.public.fr.Word
--





Avatar
JLuc
Oliv' avait soumis l'idée :
*Bonjour Oliv'*,
Raté !
Lorsque j'éxécute le code, j'ai l'erreur :
Erreur 5941
Le membre de la collection requis n'existe pas.
C'est pour éviter cette erreur que je voudrais pouvoir tester son
existance ou pas


oui mais avec la gestion d'erreur tu ne devrais justement pas avoir ce
problème.
si tu executes à partir de excel. tu dois avoir un truc du type
dim oApp as object
oApp=createObject("Word.application")

Oliv'
En fait, voila ma procedure complete. Comme je l'ai signaler à Clement,

son codage marche. il suffisait que je compte le nombre d'objet dans le
document : si au moins un, verifier que c'est un objet Excel (grace a
ton code). Du coup, tout va bien :oÞ
Merci encore pour tes reponses

Procedure :
Dim oApp As Word.Application, doc As Word.Document
Dim MyXL As Excel.Workbook
Dim Fournisseur As String
Dim ObjetFax As String
Dim DateFax As Date
Dim NumFax As Long

On Error Resume Next
Application.ScreenUpdating = False
chemin = "E:FichiersJeanlucWordFax"
nf = Dir(chemin & "*.doc")
Set oApp = CreateObject("Word.Application")
oApp.Visible = False
Do While nf <> ""
NumFax = Val(Mid(nf, 4, 6))
Flag = False
For x = 1 To Range("A65536").End(xlUp).Row
If NumFax = Cells(x, 1) Then Flag = True
Next x
If Not Flag Then
Set mondoc = oApp.documents.Open(chemin & nf)
If Err <> 0 Then
MsgBox "Problème d'ouverture !!"
Exit Sub
End If
On Error GoTo 0 ' Annule la gestion d'erreur
oApp.Selection.Goto What:=wdGoToBookmark, Name:="societe"
oApp.Selection.EndKey unit:=wdLine, Extend:=wdExtend
oApp.Selection.MoveLeft unit:=wdCharacter, Count:=1,
Extend:=wdExtend
Fournisseur = oApp.Selection
oApp.Selection.Goto What:=wdGoToBookmark, Name:="date"
oApp.Selection.EndKey unit:=wdLine, Extend:=wdExtend
oApp.Selection.MoveLeft unit:=wdCharacter, Count:=1,
Extend:=wdExtend
DateFax = oApp.Selection
oApp.Selection.Goto What:=wdGoToBookmark, Name:="objet"
oApp.Selection.MoveRight unit:=wdWord, Extend:=wdExtend
ObjetFax = oApp.Selection
'************************************************
If ObjetFax = "Commande " Then
derlig = Worksheets("Recap").Range("A65536").End(xlUp).Row
On Error GoTo 0
If oApp.ActiveDocument.InlineShapes.Count > 0 Then
If oApp.ActiveDocument.InlineShapes(1).OLEFormat.ClassType =
"Excel.Sheet.8" Then
oApp.ActiveDocument.InlineShapes(1).Activate
Set MyXL =
oApp.ActiveDocument.InlineShapes(1).OLEFormat.Object
With MyXL.ActiveSheet
tblo = .Range("A2:E" & .Range("A20").End(xlUp).Row) '.Value
End With
For x = 1 To UBound(tblo)
For y = 1 To 5
With ThisWorkbook.Worksheets("Recap")
.Cells(derlig + x, 1) = NumFax
.Cells(derlig + x, 2) = DateFax
.Cells(derlig + x, 3) = Fournisseur
.Cells(derlig + x, y + 3) = tblo(x, y)
End With
Next y
Next x
Set MyXL = Nothing
End If
End If
End If
oApp.ActiveDocument.Close False
End If
nf = Dir
Loop
oApp.Quit
Set oApp = Nothing
Application.ScreenUpdating = True
End Sub

--
JLuc