Copies de feuilles d'un classeur VBA

Résolu
vba_debutant Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
vba_debutant Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjourà toutes et tous,
le but de ma macro est :
à la fermeture d'un fichier type fichier_test.xls, demander si l'utilisateur veut enregistrer, si oui alors :
enregistrer les feuilles "Recap_test", "Test1", "Test2" et "Test3" dans un fichier qui s'appellera "fichier_test_date.xls" (le créé s'il n'existe pas), si les feuilles existent alors il copie le contenu, sinon il les créé et copie le contenu.
j'ai en fait un problème de formalisme.
la gestion de la fermeture se fait bien, le test/création du fichier "fichier_test_date.xls" fonctionne.
j'essaye de tester si la feuille existe dans le nouveau fichier et là ça bloque :
j'utilise une fonction de gestion d'erreur type:
Function FeuilleExiste(wk As Workbook, stFeuille) As Boolean
On Error Resume Next
FeuilleExiste = Not (wk.Sheets(stFeuille) Is Nothing)
End Function
quand j'appelle ma fonction, j'ai une erreur d'execution "9", l'indice n'appartient pas à la selection :
Dim wb As Workbook
If FeuilleExiste(wb, "Test1") Then ...
j'ai essayé en donnant à wb le chemin + nom +.xls, chemin + nom, nom + .xls, nom et toujours la même erreur :s

autres questions :
- est-ce qu'un workbooks(wb).sheets("Test1").add fonctionnerait pour créer une feuille dans le nouveau classeur ?
- pour ce qui est de la copie des feuilles est-ce que la déclaration suivante suffit ?:
target = "c:\....fichier_test_date.xls"
source = ActiveWorkbook
Workbooks.Open target, 0, ReadOnly:=False
Workbooks(source).Sheets("Test1").Copy Workbooks(target).Sheets("Test1")

Merci d'avance de vos réponses

2 réponses

melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
Bonjour,

a chaque test de si ta feuille existe :

Dim xlSheet As Worksheet
dim a as variant
For Each xlSheet In ThisWorkbook.Worksheets ' à chaque feuille du classeur ouvert
if activesheets.name = ("nomdetafeuillecherchée") then

a=1
end if
Next xlSheet

if a=0 then
copie ton code si la feuille n'existepas
else
copie ton code si la feuille existe
end if



- est-ce qu'un workbooks(wb).sheets("Test1").add fonctionnerait pour créer une feuille dans le nouveau classeur ? oui ca marche
- pour ce qui est de la copie des feuilles est-ce que la déclaration suivante suffit ?:
target = "c:\....fichier_test_date.xls"
source = ActiveWorkbook
Workbooks.Open target, 0, ReadOnly:=False
Workbooks(source).Sheets("Test1").Copy Workbooks(target).Sheets("Test1")

C'est possible que cela marche mais j'ai plutot l'habitude de faire ainsi :
workbooks(source).activate
sheest("test1").select
cells.copy
workbooks(target).activate
sheets("test1").select
activesheet.paste
0
vba_debutant Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de votre réponse, je l'essayerais dès que possible.

J'ai opté pour un solution que je considère moins satisfaisante, mais utile dans le cas que je traite.
0