Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [VBA Word] Ouverture et modification de classeur Excel sous Word [ Langages dérivés / VBA ] (fguihot)

mercredi 28 mars 2007 à 10:01:01 | [VBA Word] Ouverture et modification de classeur Excel sous Word

fguihot

Bonjour à tous !!!
Petite mise au point : J'ai découvert le VBA il y a peu, et il est possible que je passe à côté de grosses erreurs conceptuelles... Merci d'avance de m'éclairer...
Voila mon PB : En gros, j'ai un modèle de document sous word, et je voudrait créer une macro qui enregistre des renseignements pris de ce documents dans un classeur excel de résumé (Par exemple : Nom de fichier, emplacment, auteur, titre, sujet, version, etc... Bref, de quoi faire une base de donnée pour retrouver tous ses documents quand on est bordélique...)
Débutant en VBA, j'ai mis au point la macro sous excel en VBA, pour me faire la main.
Ensuite, je l'ai copiée sous word, en créant l'application Excel, et l'objet WorkBook.
Et le code qui marche très bien sous Excel ne fonctionne pas sous Word...

Voici le code simplifié en question :

Public Sub InscriptionDB()

DimMyFileName As String
Dim Selection As Range
Dim NLigne As Integer

MyFileName = "c:\MyXls.xls" 'Nom du fichier Excel qui stocke tout. Il contient une feuille appellée "Documents"
Dim MonExcel As Object 'Référence à l'application Excel qui va être instanciée
Dim MonWorkBook As Object'Référence au classeurqui va être ouvert

Set MonExcel = CreateObject("Excel.Application") 'On lance l'application
Set MonWorkBook = MonExcel.Workbooks.Open(MyFileName, , False) 'On ouvre le classeur depuis l'application
MonExcel.Application.Visible = False'On laisse l'application invisible

' DEBUT partie de code fonctionnant sous VBA Excel, mais générant une erreur sous VBA Word
'Selectionne l 'ensemble de la colonne jusque la première case vide
Set Selection = MonWorkBook.Sheets("Documents").Range("A2",MonWorkBook.Sheets("Documents").Range("A2").End(xlDown))

'Recherche si le document est déja enregistré.
..
For Each Cellule In Selection.Cells
    If Cellule.Value = ActiveDocument.CustomDocumentProperty("Numéro de document DB") Then
        MsgBox "Erreur : Document déja enregistré ligne : " & Cellule.Item() & " !!!"
    End If
Next

'FIN partie de code fonctionnant sous VBA Excel

MonExcel.Workbooks.Close
MonExcel.Quit
End Sub

En fait, ç'est la selection qui ne fonctionne pas... Il y a un message d'erreur très explicite :
Erreur d'execution '1004'
Erreur définie par l'application ou l'objet

Lorsque j'écrit la partie de code sous Excel en remplaçant  MonExcel.MonWorkBook par ThisWorkBook, cela fonctionne très bien
Je suis passé à coté de quoi ???? Peut on lancer ce type de code depuis une macro word, ou est-ce interdit ???
D'avence, merci !!!

mercredi 28 mars 2007 à 10:26:39 | Re : [VBA Word] Ouverture et modification de classeur Excel sous Word

fguihot

Réponse acceptée !
Houla !!!
J'ai trouvé ma boulette....

Je déclare un objet Range sous Word, qui semble à priori totalement différent de l'objet Range sous Excel....
Et bien sur, je charge ce Word.Application.Range par Excel.Application.Range

D'ou l'erreur de cast...
En déclarant
Dim Selection as Object
Cela fonctionne très bien....

Grrr Pourquoi avoir donné le même nom.... C'est vraiment un piège à con. Et je suis tombé dedans...
La prochaine fois, je chercherai un poil plus avant de crier à l'aide....
A plus.

mercredi 28 mars 2007 à 10:43:09 | Re : [VBA Word] Ouverture et modification de classeur Excel sous Word

fguihot

Bon, ce truc m'a fait prendre conscience des grosses différences entre VBA word et VBA Excel, et je viens de m'apercevoir que toutes les constantes de VBA Excel (ex : xldown, xlup) sont inconnues sous VBA word...
D'ou le meme message d'erreur pour
Set Selection = MonWorkBook.Sheets("Documents").Range("A2",MonWorkBook.Sheets("Documents").Range("A2").End(xlDown))

Est ce que quelqu'un connais un moyen de faire un include, ou est ce que je dois taper à chaque fois la valeur exacte des constantes ????
D'avance merci....

mercredi 28 mars 2007 à 11:27:36 | Re : [VBA Word] Ouverture et modification de classeur Excel sous Word

Drikce06

Membre Club
Salut, j'arrive pas te suivre tu veux faire ça dans excel ou dans word! En tout cas si j'ai bien compris tu veux faire des manip excel avec vba word?

Set
Selection = MonWorkBook.Sheets("Documents").Range("A2",MonWorkBook.Sheets("Documents").Range("A2").End(xlDown))

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:

mercredi 28 mars 2007 à 12:00:31 | Re : [VBA Word] Ouverture et modification de classeur Excel sous Word

MPi

Réponse acceptée !
Plutôt que de déclarer tes variables As Object, crée une référence à Excel et utilise des variables comme ceci
Dim xlApp As Excel.Application
Dim xlBook as Excel.Workbook
Dim xlSheet As Excel.Worksheet

....
Comme ça tu pourras utiliser ces objets comme si tu étais sous Excel

Recherche ces mots sur le site et tu trouveras plein de choses dans les forums et sources.

MPi

mercredi 28 mars 2007 à 12:43:20 | Re : [VBA Word] Ouverture et modification de classeur Excel sous Word

fguihot

Merci pour les réponses, je vais essayer...

...Et oui, je veux à partir d'une macro sous word, ouvrir un classeur excel et mettre à jours des cellules de ce classeur, à partir de variables prises dans le document word....
Le pépin, c'est que pour faire des manips sur ce classeur, j'utilise des objets et des constantes spécifiques à excel, et donc inconnus sous word.  Je vais essayer la manip de MPi...




Cette discussion est classé dans : vba, application, code, excel, word


Répondre à ce message

Sujets en rapport avec ce message

[VBA] VBA et Excel [ par aurelien2723 ] Bonjour!J'ai fait une petite application en VBA sur excel 2002 sous XP avec des forms toussa.La première chose que fait dans l'application estApplicat code VBA pour deactiver l'alerte macros (sous Excel ou Word) [ par boubou79 ] Boubou79[font=Times New Roman]Bonjour,je souhaiterais avoir quelques solutions afin de déactiver l'alerte macros sous Excel (et/ou) Word dès l'ouvertu [VBA]Barre des taches [ par aurelien2723 ] Salut!Je fais un petite application sous Excel 2002SP2 en VBA.La première chose que je fais est de cacher Excel avec un "Application.Visible = False" Distribution application Excel VBA avec OCX VB6 [ par Nulll ] Je suis dans la M... Un miracle serait appréciéJ'ai rendu service en développant (longuement) une application sur Excel donc en VBA. Je présente mon t Inclure un code exterieur dans une macro vba [ par larsene67 ] Bonjour, J'espere ne pas être trop redondant avec ma question, mais je n'ai pas réussi à y trouver de réponses juque là...Voila, j'ai actuellement plu code source VB_Excel [ par crapu ] Bonjour,Je suis de la Roumanie et donc je m'excuse pour les eventuelles erreurs de grammaire. VBA récupérer une valeur dans un fichier Excel à partir de Word [ par GuyRev ] Bonjour,Je souhaite, en VBA, récuperer une ou plusieurs valeurs dans un fichier Excel, ouvert ou non, à partir de Word .MerciGuyRev migration application VBA et macro excel Office 97 to 2003 [ par Benyohan ] Bonjour, j'ai pour mission de migrer des applications en VBA excel et access version 9è vers du2003aparement lors de mon arrivé office 2003 sera deja [VBA] enregistrer une feuille excel dans une feuille Word [ par pedrold75 ] Bonjour,J'ai une feuille excel avec des tableaux et des graphiques et je souhaiterais que cette feuille s'enregistre sous Word lorsque l'on click sur VBA AUTOCAD EXCEL [ par PYROMAR ] Bonjour,Je developpe des application en VBA sous AUTOCAD en liaison avec des classeur excel, le probleme c'est que quand je lance l'application EXCEL


Nos sponsors

Sondage...

CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.