Code pour savoir si un fichier word contient un fichier excel?

Résolu
Serval311 Messages postés 5 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 18 juillet 2016 - 6 juil. 2016 à 15:45
Serval311 Messages postés 5 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 18 juillet 2016 - 18 juil. 2016 à 14:44
Bonjour à toute la communauté.

Je dois faire une analyse des fichiers fichiers word dans un dossier. ceux qui contiennent une macro VB, ça c'est fait et ceux qui contiennent un fichier excel.
En effet dans certains fichiers j'ai tableau sur lequel si je clique il ouvre excel et je peux modifier alors des valeurs dans certaines cellules.
Mais je n'arrive pas à trouver dans les composantes du document Word ce qui correspond à ce tableau excel.

Merci d'avance pour votre aide

6 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
6 juil. 2016 à 16:19
Bonjour

tu dois faire ça en VB.NET ou en VBA?
0
Serval311 Messages postés 5 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 18 juillet 2016
6 juil. 2016 à 16:24
En vb.net. Pour être plus clair dans le fichier word j'ai un tableau si je clique dessus ça devient un tableau excel. Dans le fichier le tableau a été insérer avec Insertion - Tableau - Feuille de calcul Excel. Et j'ai besoin de pouvoir retrouver cette information.

merci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 7/07/2016 à 07:39
Bonjour,
Comment le ferais-tu depuis Word, directement, (donc sans piloter depuis VB.Net) ?
Si tu ne le sais pas, c'est par là, qu'il faudra que tu commences, car on ne saurait "piloter" sans connaître ce que l'on souhaite "piloter".
Si tu souhaites connaître la solution depuis Word (solution qu'il te faudra alors appliquer depuis VB.Net aux objets Word créés depuis VB.Net), dis-le et je répondrai alors après avoir déplacé cette discussion là où elle le doit (VBA, puisque application d'instructions VBA)

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Serval311 Messages postés 5 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 18 juillet 2016
8 juil. 2016 à 09:44
Bonjour,

Pour te répondre. Nous connaissons ce tableau qui permet de faire des calculs "dynamiques" (Vieille méthode qui n'est plus appliquée maintenant). Nous positionnons dessus et en double cliquant nous ouvrons le tableau Excel. Nous modifions alors des données et reportons les résultats dans un autre tableau de ce même document Word.
Mon souci c'est que j'ai environ 12 000 documents Word et une cinquantaine de documents Word avec ce type tableau Excel que je dois identifier.
Je sens bien qu'une solution est d'essayer d'ouvrir le tableau avec Excel et traiter le résultats de l'ouverture, mais ce n'est pas la meilleur solution.
Si tu as la solution depuis Word cela m'intéresse et effectivement j'essaierai de l'appliquer en VB.NET. C'est ce que j'ai fait pour pouvoir identifier si un fichier Word avait une macro VBA et récupérer le nom de la macro.

par contre pourquoi transférer cette discussion dans VBA car d'autres que moi peuvent-être intéressés par cette solution en VB.NET et je mettrai le code VB.NET dans cette discussion.

Merci d'avoir pris le temps de me répondre.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 8/07/2016 à 11:10
Je propose de déplacer vers VBA pour une raison évidente : le problème est un problème d e VBA/Word et de connaissances en VBA/Word et non de pilotage qui, lui, est un autre aspect (donner depuis VB.Net des instructions VBA)
Laisser cette discussion dans le forum VB.Net n'a alors pour moi aucun sens et cela voudrait dire que cette solution serait perdue pour ceux qui piloteraient VBA/Word depuis une application autre que VB.Net (VB6, VBA/Excel, VBS, et n'importe quelle autre pouvant créer des objets Word !). La logique est que l'on cherche la solution VBA/Word, puis qu'on l'applique depuis l'appli de pilotage (quelle qu'elle soit) selon les règles de création d'objets de l'application de pilotage.
Comprends-tu cela ?
Alors : si tu en es d'accord : je bascule cette discussion vers le forum logique (VBA) et t'indique la solution VBA.
Dans le cas contraire : désolé, mais je ne serai pas un co-acteur de ce qui serait pour moi un "égarement".
Tu dis ...

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Serval311 Messages postés 5 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 18 juillet 2016
8 juil. 2016 à 11:13
Je comprends et pas de problème pour moi.

Je suis d'accord.

Merci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 8/07/2016 à 11:24
Bien.
Je déplace donc vers le sous-forum VBA.
Voici ce qui, depuis VBA/Word, permet de savoir si le document ouvert contient un tableau Excel (va même plus loin ==>> en compte le nombre éventuel) :
Dim toto As InlineShape
For Each toto In ActiveDocument.InlineShapes
If toto.OLEFormat.ClassType Like "*Excel*" Then nb = nb + 1
Next
MsgBox nb & " "" tableau(x) "" excel trouvé(s) dans ce document word"

le msgbox n'est là que pour que tu voies ce que c'est. Dans ton appli de pilotage, seule t'intéresse la variable nb.


________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Serval311 Messages postés 5 Date d'inscription mercredi 6 juillet 2016 Statut Membre Dernière intervention 18 juillet 2016
18 juil. 2016 à 14:44
Désolé pour le retard de ma réponse, mais merci beaucoup.

Voici le code pour du VBNet:

If (wrddoc.InlineShapes.Count > 0) Then
Dim Shap As Word.InlineShape
For Each Shap In wrddoc.InlineShapes
If (InStr(Shap.OLEFormat.ClassType, "Excel", CompareMethod.Binary) <> 0) Then
MsgBox("Tableau Excel dans " & fich)
End If
Next
End If
0
Rejoignez-nous