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)

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
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
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
Lorsque j'arrive sur la ligne de commande pour copier-coller la feuille, Excel me donne le magnifique message d'erreur suivant

"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 :

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
Et ça ne marche toujours pas ! J'ai le même message d'erreur que précédemment et au même endroit.

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