Code pour savoir si un fichier word contient un fichier excel? [Résolu]

Serval311 5 Messages postés mercredi 6 juillet 2016Date d'inscription 18 juillet 2016 Dernière intervention - 6 juil. 2016 à 15:45 - Dernière réponse : Serval311 5 Messages postés mercredi 6 juillet 2016Date d'inscription 18 juillet 2016 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Whismeril 12032 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 septembre 2018 Dernière intervention - 6 juil. 2016 à 16:19
0
Merci
Bonjour

tu dois faire ça en VB.NET ou en VBA?
Serval311 5 Messages postés mercredi 6 juillet 2016Date d'inscription 18 juillet 2016 Dernière intervention - 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.
Commenter la réponse de Whismeril
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 7/07/2016 à 07:39
0
Merci
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.
Commenter la réponse de ucfoutu
Serval311 5 Messages postés mercredi 6 juillet 2016Date d'inscription 18 juillet 2016 Dernière intervention - 8 juil. 2016 à 09:44
0
Merci
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.
Commenter la réponse de Serval311
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 8/07/2016 à 11:10
0
Merci
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.
Commenter la réponse de ucfoutu
Serval311 5 Messages postés mercredi 6 juillet 2016Date d'inscription 18 juillet 2016 Dernière intervention - 8 juil. 2016 à 11:13
0
Merci
Je comprends et pas de problème pour moi.

Je suis d'accord.

Merci.
Commenter la réponse de Serval311
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 8/07/2016 à 11:24
0
Merci
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.
Serval311 5 Messages postés mercredi 6 juillet 2016Date d'inscription 18 juillet 2016 Dernière intervention - 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
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.