Syntaxe wb.ws.Range ?

OursOuzbek

XLDnaute Nouveau
Bonjour !

J'ai un léger soucis auquel je ne trouve pas de solution :

le code suivant ne fonctionne pas :
Code:
Dim WbMF As Workbook
Set WbMF = Workbooks("ModeleFacture-xxx.xlsm")

Dim WsMF As Worksheet
Set WsMF = Sheets("Modèle Facture")

Dim CC As String
CC = Workbooks("ModeleFacture-xxx.xlsm").Worksheets("Modèle Facture").Range("D13").Value
CC = WbMF.WsMF.Range("D13").Value

Le premier "CC" ne me renvoie pas d'erreur, mais le deuxième, oui. (erreur 438 : propriété ou méthode non gérée par cet objet)

Alors qu'ils sont, d'après moi, censés être exactement les mêmes. Je n'arrive pas à cerner d'où vient le problème de syntaxe.

(normalement, je ne suis censé déclarer que le 2ème CC, le 1er est juste un test pour voir si le code "développé" fonctionnait bien. Les noms de fichiers / feuilles seront peut être amené à être changé prochainement, d'où l'idée de vouloir le déclarer en variable)

Une idée ?

Merci d'avance.
 

pierrejean

XLDnaute Barbatruc
bonjour OursOuzbek

A tester:
Code:
Dim WbMF As Workbook
Set WbMF = Workbooks("ModeleFacture-xxx.xlsm")
Dim WsMF As String
WsMF = "Modèle Facture"
Dim CC As String
CC = Workbooks("ModeleFacture-xxx.xlsm").Worksheets("Modèle Facture").Range("D13").Value
CC = WbMF.Sheets(WsMF).Range("D13").Value
 

OursOuzbek

XLDnaute Nouveau
Ok, ça a l'air de bien fonctionner !

Etonnant que "WbMF" marche, mais pas le WsMF, que l'on doit déclarer en string... Les subtilités du VBA m'échappent encore !

Quoiqu'il en soit, merci beaucoup pierrejean !
 

pierrejean

XLDnaute Barbatruc
RE

A tester egalement
Code:
Dim WbMF As Workbook
Set WbMF = Workbooks("ModeleFacture-xxx.xlsm")
Dim WsMF As Sheet
Set WsMF = WbMF.Sheets("Modèle Facture")
Dim CC As String
CC = Workbooks("ModeleFacture-xxx.xlsm").Worksheets("Modèle Facture").Range("D13").Value
CC = WsMF.Range("D13").Value
 

Discussions similaires


Haut Bas