Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

9 réponses
Avatar
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

9 réponses

Avatar
Fred.M.
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





Avatar
isabelle
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




Avatar
HD
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)

Avatar
HD
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 :-)
Avatar
Fred.M.
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 :-)





Avatar
isabelle
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)





Avatar
isabelle
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 :-)




Avatar
HD
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)
Avatar
isabelle
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)