[VBA] Récupérer la valeur d'une cellule d'un classeur Excel dans Word

Le
HD
Bonjour,

En VBA, Je voudrais récupérer dans Word la valeur d'une cellule d'un
classeur Excel et de préférence sans ouvrir le classeur.

Merci d'avance pour votre aide

@+
HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo
Le #1684898

Bonjour,

En VBA, Je voudrais récupérer dans Word la valeur d'une cellule d'un classeur Excel et
de préférence sans ouvrir le classeur.


http://www.excelabo.net/excel/fichierlire.php

--
A+

HD
Le #1684896
Le problème est que celà ne fonctionne pas...

J'ai une erreur d'exécution '438': Propriété ou méthode non gérée par cet
objet...

voici mon code:

Function RECUP(Fichier As String, Feuille As String, Ligne As Long, Col As
Integer)

With CreateObject("Excel.Application").Workbooks
.Open (Fichier)
MsgBox .Worksheets(Feuille).Cells(Ligne, Col)
.Close False
End With
End Function

Sub test()
ret = RECUP("C:ListeDoss.xls", "Feuil2", 2, 1)
End Sub
HD
Le #1684895
Le problème est que celà ne fonctionne pas...
J'ai une erreur d'exécution '438': Propriété ou méthode non gérée par cet
objet...


J'ai pourtant bien ajoutée la référence "Microsoft Excel 12.0 Object
Library"...
Le classeur en question n'est pas protégé... et j'ai mis la sécu des macros
à son minimum sur Word (pour voir si celà venait de celà)... Mais rien y
fait.

Le message d'erreur ne concerne que la ligne:
.Worksheets(Feuille).Cells(Ligne, Col)

Geo
Le #1684717

J'ai pourtant bien ajoutée la référence "Microsoft Excel 12.0 Object Library"...


OK

Le classeur en question n'est pas protégé... et j'ai mis la sécu des macros à son
minimum sur Word (pour voir si celà venait de celà)...


Inutile votre macro s'exécute, la preuve :

Le message d'erreur ne concerne que la ligne:
.Worksheets(Feuille).Cells(Ligne, Col)


Msgbox ne peut afficher qu'une chaîne de caractère, ce que vous avez là
est une Range Excel, il ne sait pas quoi en faire.
Et vous avez modifié le code, le Open n'était pas là.
Je vous propose le code suivant où :
- Toutes les variables sont déclarées, c'est tellement mieux
- les différentes opérations sont décomposées
Function RECUP(Fichier As String, Feuille As String, _
Ligne As Long, Col As Integer) As String
Dim R As String
Dim Cls As Workbooks
Dim Cl As Workbook
Dim F As Worksheet
Dim Cel As Excel.Range
Set Cls = CreateObject("Excel.Application").Workbooks
Set Cl = Cls.Open(Fichier)
Set F = Cl.Worksheets(Feuille)
Set Cel = F.Cells(Ligne, Col)
R = Cel.Text
Cl.Close False
RECUP = R
End Function

Sub test()
MsgBox RECUP("xxxxxxx", "Feuil1", 2, 1)
End Sub

--
A+

HD
Le #1684716
Un grand MERCI à toi Géo !!! ça fonctionne !!! :-)
HD
Le #1705786
Aïe... Problème...

Le classeur Excel qui est ouvert comporte une macro en démarrage... Peut on
ouvrir ce classeur sans exécuter la macro située en Workbooks_Open ?
Geo
Le #1705784

Aïe... Problème...

Le classeur Excel qui est ouvert comporte une macro en démarrage... Peut on ouvrir ce
classeur sans exécuter la macro située en Workbooks_Open ?


Il y a une instruction spécifique à Excel, mais ça m'échappe.
Regardez sur le site que je vous ai indiqué ou posez la question sur le
forum Excel.
A moins qu'un Excellien passe par ici.

--
A+

Geo
Le #1705781

ça y'est j'ai trouvé...

Set Cls = CreateObject("Excel.Application").Workbooks
Cls.Application.EnableEvents = False
Set Cl = Cls.Open(Fichier)
Set F = Cl.Worksheets(Feuille)
Set Cel = F.Cells(Ligne, Col)
R = Cel.Text
Cls.Application.EnableEvents = True
Cl.Close False


Merci pour le retour

--
A+

Publicité
Poster une réponse
Anonyme