Collection par variable [Résolu]

Signaler
Messages postés
3
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
12 avril 2006
-
Teoftene
Messages postés
3
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
12 avril 2006
-
Bonjour

Je cherche depuis plusieurs à faire passer une variable dans une collection.

Mon projet va chercher dans une BDD le type de document à ouvrir. Workbooks pour Excel et Documents sir c'est Word.
Je souhaite que ce projet évolutif par lui même et que donc, si un nouveau type est utilisé, il soit simplement ajouté à la BDD sans que personne ne soit obligé de rentrer dans le code.

Dim fctapp as Object
Dim fctfichier as Object

Set fctapp = CreateObject(strapplication) 'strapplication renvoi Excel.Application ou Word.Application

Set fctfichier = fctapp.workbooks.Open(strvierge & strtype & " Vierge" & strextension)

'strvierge --> renvoi une partie du chemin d'adresse
'strtype --> renvoi une autre partie du chemin d'adresse
'strextension --> renvoi .xls ou .doc

Je souhaiterais trouver un moyen pour que Workbooks ici en rouge, soit remplacer par une variable qui irait chercher dans la BDD soit, Workbooks, soit Documents.

J'ai essayé pas mal de chose, la création d'une nouvelle collection, passer par un objet mais rien y fait ...

Quelqu'un aurait il une idée et/ou une solution ????

Merci

5 réponses

Messages postés
794
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut 742589 Teoftene, salut =941 Willi, salut 9517 JMO,

Teoftene, ce qu'il te manque, c'est la fonction CallByName (méconnue, mais VB quand même).

Cela donnera, dans ton cas :

Dim fctApp As Object' notes: la casse Chameau, c'est plus lisible
Dim objConteneur as Object
Dim fctFichier as Object

Set fctApp = CreateObject(strApplication) 'strApplication renvoi Excel.Application
' ou Word.Application
'récupère la collection et affecte sa référence dans objConteneur
Set objConteneur = CallByName (fctApp, _
strNomObjetConteneur, _
VbGet)'strNomObjetConteneur contient soit
' "Documents" soit "WorkBooks"
'et ensuite on appelle la méthode que l'on veut
'soit comme ça (bôf)
Set fctFichier = objConteneur.Open(strVierge & strType & " Vierge" & strExtension)
'soit comme ça (ah, yes!)
Set fctFichier = CallByName(objConteneur, _
"Open", _
VbMethod, _
strVierge & strType & " Vierge" & strExtension)

PS : n'oublies pas d'accepter la réponse, si c'est celle que tu attendais depuis longtemps, et surtout, si tu l'as testée et validée!

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Messages postés
2376
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
17
Bonsoir,
Je n'ai pas trop compris.
Avant l'appel de l'instruction: Set fctfichier = fctapp.workbooks.Open(strvierge & strtype & " Vierge" & strextension)
Quelles sont les valeurs de strvierge, strtype et strextension ?
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
24
Bonsoir,

var = "workbooks"
msgbox "Set fctfichier = fctapp." & var & ".Open
Messages postés
3
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
12 avril 2006

Sur mon projet, j'ai plusieurs type de fichier. Pour plus de clarté, disons qu'il y aura un type A, un B, un C et un D.

strvierge = "c:\monprojet"
strtype = "B"
strextension = ".xls"

Donc cela ouvre le fichier "B Vierge.xls" se trouvant dans le dossier "c:\monprojet"

JMO j'ai essayé, ca m'affiche bien ce que je recherche, mais impossible de d'assigner une variable dans l'objet fctfichier.
L'erreur qu'il ressort : "Objet requis"

Je cherche à ce que cela donne :

var ="Workbooks"
Set fichier = fctapp.var.Open(strvierge & strtype & " Vierge" & strextension)

Mais ca veut po
Messages postés
3
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
12 avril 2006

Où se trouve le temple dans lequel je dois t'aduler ???

=)

Grand merci