String dans paramètre pour copie fichier

Bonjour à tous,

Je cherche à copier les feuilles de plusieurs classeurs dans un classeur unique. J'ai automatisé la tâche mais je me retrouve face à une difficulté.

J'ai ouvert tous les fichiers sur lesquels je souhaite travailler.

J'ai déclaré une variable String qui contient le nom du fichier cible où copier la feuille :

Dim source As String

cible= """" & Activeworkbook & """"

Je me retrouve donc avec une variable contenant une chaîne du genre : "cible.xlsx"

Maintenant j'aimerais utiliser cette variable pour copier les feuilles vers le fichier "cible.xlsx"

Je fais donc :

Workbooks("source.xlsx").Sheets(1).Copy after:=Workbooks(cible).Sheets(1)

Mais je tombe sur une erreur :

Erreur d'execution '9' :

L'indice n'appartient pas à la sélection.

Auriez vous svp une idée de la raison de cette erreur?

Cordialement.

bonjour/bonsoir,

essaie ceci

Dim source As String

cible= Activeworkbook.name

ou encore

Dim source As object

set cible=Activeworkbook
Workbooks("source.xlsx").Sheets(1).Copy after:=cible.Sheets(1)

Bonjour,

Merci beaucoup la première solution fonctionne. Je n'ai pas besoin de mettre les " " dans la variable. Je ne comprends pas pourquoi quand je mets le paramètre manuellement je dois mettre les guillemets comme ici :

Workbooks("source.xlsx").Sheets(1).Copy After:=Workbooks("cible.xlsm").Sheets(1)

Et quand j'enregistre une variable que j'utilise en paramètre pas besoin des guillemets :

Dim cible As String

cible=Activeworkbook.name
Workbooks("source.xlsx").Sheets(1).Copy After:=Workbooks(cible).Sheets(1)

Parce que ici cible vaut : cible.xlsm

En tout cas merci pour la solution :-)

bonjour,

Je ne comprends pas pourquoi quand je mets le paramètre manuellement je dois mettre les guillemets

les guillemets permettent d'identifier une chaine de caractères. Sans cela, VBA ne pourrait pas faire la distinction entre le nom d'une variable et une chaine de caractères.

essaie ceci

msgbox cible 'affiche le contenu de la variable cible
msgbox "cible" 'affiche la chaine de caractères cible
msgbox """cible""" ' affiche la chaine de caractères "cible"

Super,

Merci pour la solution et les explications.

Bonne journée.

Rechercher des sujets similaires à "string parametre copie fichier"