[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
Fred.M.
Le #4756421
Bonjour HD,
Dans ton module VBA tu es tout de même obligé dans tous les cas d'ouvrir ton
classeur Excel pour accéder à ta cellule. Tu peux en revanche éviter de
l'afficher pour que cela soit parfaitement transparent pour l'utilisateur.
Avant toute chose n'oublie pas dans ton éditeur VBA de référencer Excel en
allant dans Outils - Références - et de cocher la DLL Microsoft Excel 10.0
Object Library. C'est là que sont stockées les classes d'objet XL.
On peut alors imaginer qlqchose de la sorte :

Dim MaValeur -- à typer selon le besoin en string, integer ou autre
Dim XL as Excel.Application


' Instanciation d'un objet Excel (invisible)
Set XL = new Excel.Application
' Ouverture du classeur
XL.WorkBooks.Open("D:MonClasseur.XLS")
' Selection de la feuille si besoin
XL.Sheets("Feuil1").Select
' Récupération de la valeur de la cellule A1 par exemple
MaValeur = XL.Range("A1").Value
' Fermeture d'Excel
XL.Quit
Set XL = Nothing

Fred.M.


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





isabelle
Le #4756411
bonjour HD,

tu pourrais utiliser l'assitant "fusion et publipostage"

isabelle

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




HD
Le #4756381
tu pourrais utiliser l'assitant "fusion et publipostage"


Pour récupérer dans Word une valeur d'une cellule ? Mais je ne cherche pas à
faire un publipostage. Il faudrait en fait que l'utilisateur ouvre le
document Word et qu'à l'ouverture qu'une donnée soit récupérée dans un
classeur Excel dont l'emplacement est définit par une macro.

Je cherche plutôt à avoir une fonction VBA du style RecupValeur (MonFic,
MaFeuille, Colonne, Ligne)

HD
Le #4756371
C'est bon... Géo m'a fournit ce code :

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


Merci à toi Isabelle pour t'être penchée sur mon problème :-)
Fred.M.
Le #4756351
C'est parce que je n'ai pas un nom féminin que je me suis pris un vent ?? lol



C'est bon... Géo m'a fournit ce code :

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


Merci à toi Isabelle pour t'être penchée sur mon problème :-)





isabelle
Le #4756341
re bonjour HD,

je viens de faire un test avec Insertion d'un objet, et ça fonctionne.
il suffit de faire un click droit sur l'objet et d'actualiser.

isabelle


tu pourrais utiliser l'assitant "fusion et publipostage"



Pour récupérer dans Word une valeur d'une cellule ? Mais je ne cherche pas à
faire un publipostage. Il faudrait en fait que l'utilisateur ouvre le
document Word et qu'à l'ouverture qu'une donnée soit récupérée dans un
classeur Excel dont l'emplacement est définit par une macro.

Je cherche plutôt à avoir une fonction VBA du style RecupValeur (MonFic,
MaFeuille, Colonne, Ligne)





isabelle
Le #4756331
bonjour HD,

est ce qu'il faut mettre une référence ? j'obtiens une erreur "Type non défini"

isabelle ( ps/ merci Géo, et bien le bonjour chez vous)


C'est bon... Géo m'a fournit ce code :

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


Merci à toi Isabelle pour t'être penchée sur mon problème :-)




HD
Le #4755831
Voici mon code pour lequel je n'ai pas d'erreur :

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, , 1)
Set F = Cl.Worksheets(Feuille)
Set Cel = F.Cells(Ligne, Col)

R = Cel.Text
Cl.Close False
RECUP = R
End Function


As tu déclarés la référence à "Microsoft Excel 12.0 Object Library" ? (moi
c'est 12.0 mais ça doit dépendre des versions d'Excel installées)
isabelle
Le #4755691
c'est tout bon, merci HD,

isabelle

Voici mon code pour lequel je n'ai pas d'erreur :

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, , 1)
Set F = Cl.Worksheets(Feuille)
Set Cel = F.Cells(Ligne, Col)

R = Cel.Text
Cl.Close False
RECUP = R
End Function


As tu déclarés la référence à "Microsoft Excel 12.0 Object Library" ? (moi
c'est 12.0 mais ça doit dépendre des versions d'Excel installées)




Publicité
Poster une réponse
Anonyme