Bonjour à tous,
J'aurai besoin une nouvelle fois de votre aide. Je dispose d'un classeur (type xlsm) contenant 6 feuilles (tableurs et graphiques). Je cherche à exporter plusieurs de ces feuilles vers un nouveau classeur. Le problème est que je n'arrive pas à procéder à la copie de ces feuilles.
Le code suivant (le plus basique du monde) permet de copier les différentes feuilles, mais :
- chaque feuille copiée est dans un classeur différent
- le classeur n'est pas enregistré et le format par défaut est .xls (ce qui pose un problème lors de l'enregistrement)
Afin de forcer la copie dans un même classeur, j'ai apporté les modifications suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Dim Ws As Worksheet For Each Ws In ThisWorkbook.Worksheets Ws.Copy Next Ws
Lorsque j'arrive sur la ligne de commande pour copier-coller la feuille, Excel me donne le magnifique message d'erreur suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim Cible As Workbook Dim Ws As Worksheet Set Cible = Application.Workbooks.Add For Each Ws In ThisWorkbook.Worksheets Ws.Copy Before:=Cible.Worksheets("Feuil1") Next Ws
"Excel ne parvient pas à insérer les feuilles dans le classeur de destination car il contient moins de lignes et de colonnes que le classeur source. Pour déplacer ou copier les données vers le classeur de destination, vous pouvez les sélectionner, puis utiliser les fonctions Copier-Coller pour les insérer dans les feuilles d'un autre classeur".
Après quelques recherches sur internet, il semble qu'il y ait un problème de compatibilité dans le format des feuilles (le nouveau classeur étant par défaut au format XL-97-2003 avec un nombre de lignes et de colonnes différents de celui de XL 2007).
J'ai donc fait la modification suivante pour enregistrer le nouveau classeur au format xlsx :
Et ça ne marche toujours pas ! J'ai le même message d'erreur que précédemment et au même endroit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim Cible As Workbook Dim Ws As Worksheet Dim Chemin As String Set Cible = Application.Workbooks.Add Chemin = CurDir & "\Copie.xlsx" Cible.SaveAs Chemin For Each Ws In ThisWorkbook.Worksheets Ws.Copy Before:=Cible.Worksheets("Feuil1") Next Ws
Est-ce qu'il s'agit d'un problème de compatibilité xlsm et xlsx ou est-ce autre chose ?
Quelqu'un a-t-il un avis ?
Merci d'avance
Partager