Liaison d'une cellule texte dans le code VBA

Bonjour,

Ma question est assez simple :

Je voudrais faire une action à partir d'un doc Excel 1 vers un doc Excel 2. Jusqu'ici pas de problème.

Par contre le nom du doc Excel 2 est amené à changer (Excel 3, puis Excel 4, ...). Je voudrait donc savoir s'il est possible de changer le nom de ce fichier dans le code, MAIS en passant par une cellule du doc Excel 1.

Voici mon "essai"

Workbooks("Range ("A1")").Sheets("Feuil1").Range("A2") = "Bonjour"

Sachant que dans A1, il y a marqué : "nom de mon fichier.xlsx"

J'éspère avoir été assez claire

Merci de votre aide !

Bonjour,

Pour commencer, si tu cherches à utiliser le contenu de A1, tu as des guillemets en trop :

Workbooks("Range ("A1")") '<-- tu cherches un classeur nommé Range("A1")
Workbooks(Range ("A1")) '<-- tu cherches un classeur dont le nom est contenu en A1

Excel n'interprète pas le contenu entre guillemets, et le considère comme du texte.

Aussi, pour que ce code fonctionne, le classeur doit déjà être ouvert. Sinon il faut préciser en plus le chemin d'accès complet (répertoire).

Je viens de remanier mon texte, et le code ne fonctionne toujours pas.

Workbooks(Range("A1")).Sheets("Feuil1").Range("A2") = "bonjour"

Le message d'erreur est le suivant : Erreur d'exécution « 13 »: Incompatibilité de type

Est ce normal ?

Bonjour,

Une autre possibilité pour appeler un classeur dont le nom est variable est de le "renommer" dans la macro

Exemple :

monclasseur = ActiveWorkbook.Name

Ensuite, pour t'y référer : Workbooks(monclasseur).Range.....

Cela évite d'inscrire le nom du fichier dans une cellule quand ce n'est pas nécessaire

Merci de vos réponses !

Mais je ne sais pas pourquoi un message d'erreur s'affiche dans tous les cas.

Le code ne fonctionne pas

Sub propriete()

Workbooks(Range("A1")).Sheets("Feuil1").Range("A2") = "bonjour"

End Sub

Je veux marquer bonjour en A2 dans la feuille 1 du doc qui s'appelle "doc Excel 2".

J'ai donc écrit : doc Excel 2 en A1 de mon premier doc.

Mais ça ne marche toujours pas ...

Mais je ne sais pas pourquoi un message d'erreur s'affiche dans tous les cas.

Le code ne fonctionne pas

Sub propriete()

Workbooks(Range("A1")).Sheets("Feuil1").Range("A2") = "bonjour"

End Sub

Essaye en utilisant Value, ça devrait marcher :

Workbooks(Range("A1").Value).Sheets("Feuil1").Range("A2") = "bonjour"
Rechercher des sujets similaires à "liaison texte code vba"