Sélection de plusieurs feuille via un array/variant + transfert à un autre classeur.

Charly88

XLDnaute Occasionnel
Bonjour à tous, problème très simple mais incompréhension au final.
J'ai un certain nombre de feuilles, contigües, que je veux transférer du fichier en cours (jjj) vers un fichier cible. J'indique le numéro de la première et de la dernière feuille, fichier cible, etc.

Devant l'échec du transfert (ou alors réussite partielle ou même excel qui au bout d'un moment refuse de transférer mes feuilles même en manuel), j'en reviens à un problème plus basique : sélectionner simplement les feuilles via un variant.
Dans les codes ci-dessous, j'ai une version manuelle et littérale qui se sélectionne (test), puis son équivalent qui plante (macro2) et enfin une version (macro3) avec les numéros de feuilles, qui plante (tout comme le laisser supposer l'essai échoué de la 1ère ligne dans test).
Est-ce normal, y'a-t-il une erreur de syntaxe ?

Bien sûr la sélection n'est pas une fin en soi (j'ai aperçu d'autres codes), c'est le transfert qui m'intéresse.

Les 2 fichiers : http://cjoint.com/?kBjDfkjQlV


Code:
Public Sub test()

'Sheets(Array(Sheets(2), Sheets(3))).Select
 Sheets(Array("Sheet2", "Sheet3")).Select

End Sub


Sub Macro2()
'avec les noms exacts
Dim Liste As Variant, Premier As Integer, Dernier As Integer

Premier = Sheets("Coo").Cells(4, 2).Value
Dernier = Sheets("Coo").Cells(5, 2).Value

Liste = Sheets(Premier).Name
For i = Premier + 1 To Dernier
Liste = Liste & Chr(34) & "," & Chr(34) & Sheets(i).Name
Next i

    Sheets(Array(Liste)).Select
    Sheets(Array(Liste)).Move Before:=Workbooks("hhhh.xls").Sheets(3)
End Sub
Sub Macro3()

Dim Liste As Variant, Premier As Integer, Dernier As Integer
'avec les chiffres

Premier = Sheets("Coo").Cells(4, 2).Value
Dernier = Sheets("Coo").Cells(5, 2).Value

Liste = "Sheets(" & Premier & ")"
For i = Premier + 1 To Dernier
Liste = Liste & "," & "Sheets(" & i & ")"
Next i

    Sheets(Liste).Select
    Sheets(Array(Liste)).Move Before:=Workbooks("hhhh.xls").Sheets(3)
End Sub

Sub Macro1()

    Sheets(Array("Janvier", "Février")).Select
    Sheets("Ianuarie").Activate
    Sheets(Array("Janvier", "Février")).Move Before:=Workbooks("hhhh.xls").Sheets(7)
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Sélection de plusieurs feuille via un array/variant + transfert à un autre class

bonjour Charly88

Une première version (nom du fichier receveur a adapter)

Code:
Sub test()
premier = Sheets("Coo").Range("B4")
dernier = Sheets("Coo").Range("B5")
Dim tablo()
ReDim tablo(dernier - premier)
For n = premier To dernier
  tablo(n - premier) = Sheets(n).Name
Next n
Sheets(tablo).Move Before:=Workbooks("[COLOR=Red]test_trans.xls[/COLOR]").Sheets(3)
End Sub
 

Charly88

XLDnaute Occasionnel
Re : Sélection de plusieurs feuille via un array/variant + transfert à un autre class

Merci beaucoup Pierre-Jean !
C'était donc la formulation de ma variant qui était erronée. J'en arrive à me demander si une précédente que j'avais rédigée sous cette forme (liste = liste & nouvel élément) n'était pas en fait considérée comme une string, j'arrivais à afficher sa valeur alors que cela m'est impossible dans ce cas-là.
 

Discussions similaires

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD