Collection par variable [Résolu]

Messages postés
3
Date d'inscription
samedi 8 avril 2006
Dernière intervention
12 avril 2006
- - Dernière réponse : Teoftene
Messages postés
3
Date d'inscription
samedi 8 avril 2006
Dernière intervention
12 avril 2006
- 12 avril 2006 à 15:43
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
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
794
Date d'inscription
vendredi 4 mars 2005
Dernière intervention
12 juin 2012
3
Merci
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>

Merci rvblog 3

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

Codes Sources a aidé 105 internautes ce mois-ci

Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
0
Merci
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
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
0
Merci
Bonsoir,

var = "workbooks"
msgbox "Set fctfichier = fctapp." & var & ".Open
Messages postés
3
Date d'inscription
samedi 8 avril 2006
Dernière intervention
12 avril 2006
0
Merci
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
Dernière intervention
12 avril 2006
0
Merci
Où se trouve le temple dans lequel je dois t'aduler ???

=)

Grand merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.