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 -
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
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
A voir également:
- Copies de feuilles d'un classeur VBA
- Comment faire un livret avec des feuilles a4 - Guide
- Bruler des feuilles de laurier - Guide
- Ou trouver les liens copiés sur android - Guide
- Imprimer un classeur excel sur mac - Guide
- Fusionner feuilles excel - Guide
2 réponses
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
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