Déplacer des feuilles par macro

Guy_L

XLDnaute Occasionnel
Bonjour,
Dans le topic suivant, j'avais évoqué un problème persistant concernant le déplacement des feuilles d'ans un fichier:
https://www.excel-downloads.com/threads/boucle-if-qui-bugge-resolu.202545/

Voici l'objet du problème:- dans le fichier concerné, je réalise par macro la copie de deux feuilles parmi 17 que comprend le classeur. La première est toujours visible et s'appelle "Accueil" (c'est la feuille "centrale" qui sert à la saisie d'infos par l'utilisateur).

- prenons comme base l'ordre suivant:
Feuilles: Accueil - E1 - E2 - E3 - E4 - E5 - E6 - E7 -E8 - FI1 - FI2 - FI3 - FI4 - FI5 -FI6 -FI7 - FI8
(toutes ces feuilles sont masquées sauf Accueil)

- dans l'exemple ci-dessus, mettons que l'utilisateur créé trois entrées par la feuille Accueil, au final il réalise (c'est un exemple) les copies de la feuille E3 et de la Feuille FI3 lesquelles sont renommées respectivement E et FI.
- dans un deuxième temps chacune de ses "créations" crée une copie de FI qui est renommée avec un nom de "client". Cela donnera donc (dans l'ordre)
Feuilles: Accueil - E1 - E2 - E- E3 - E4 - E5 - E6 - E7 -E8 - FI1 - FI2 - FI - Nom3 - Nom2 - Nom1 - FI3 - FI4 - FI5 -FI6 -FI7 - FI8

Seules sont visibles les feuilles Acceuil, E, FI et Nom1, Nom2, Nom3, les autres ont été rendues invisibles après leur copie par ma macro. Notez que les feuilles noms sont inversées car leur copie se place "After" la feuille FI
Code:
Sheets("FI").Copy After:=Sheets("FI")
    ActiveSheet.Name = Range("A3").Value

- l'utilisateur peut créer autant de feuilles "Nom" qu'il veut.

- A ce stade, j'ai créé la macro de listage des feuilles "Nom" suivante:
Code:
Dim i As Integer
    For i = 2 To Worksheets.Count
        Cells(12 + i, 10) = Worksheets(i).Name
    Next i
End Sub
Mais comme les feuilles ne sont pas classées dans l'ordre souhaité, j'ai rajouté les lignes suivantes dans le script:
Code:
    Sheets("E").Move After:=Sheets("FI (8)")
    Sheets("FI").Move After:=Sheets("E")
Cela a pour effet de reclasser les feuilles comme ceci (avant la création des feuilles "Nom"):
Accueil - E1 - E2 - E3 - E4 - E5 - E6 - E7 -E8 - FI1 - FI2 - FI3 - FI4 - FI5 -FI6 -FI7 - FI8 - E - FILe résultat attendu est de retrouver les feuilles "Nom" à la file, comme ceci:
Accueil - E1 - E2 - E3 - E4 - E5 - E6 - E7 -E8 - FI1 - FI2 - FI3 - FI4 - FI5 -FI6 -FI7 - FI8 - E - FI - Nom3 - Nom2 - Nom1pour que le "listage" se fasse dans l'ordre.

Et c'est là que ça "pêche".
En effet, si les feuilles sont visibles, l'ordre est respecté et le script "move" efficace. Par contre, comme les feuilles sont masquées, l'ordre reste celui-ci:
Feuilles: Accueil - E1 - E2 - E- E3 - E4 - E5 - E6 - E7 -E8 - FI1 - FI2 - FI - Nom3 - Nom2 - Nom1 - FI3 - FI4 - FI5 -FI6 -FI7 - FI8
et le listage au lieu de donner
Nom3
Nom2
Nom1

donne en réalité:
FI6
FI7
FI8

Comment faire pour déplacer "de force" E et FI à la fin et que chaque copie se place ensuite à la file de FI ? (attention aux feuilles masquées, car c'est apparemment là le problème).
Merci
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 627
Messages
2 111 303
Membres
111 094
dernier inscrit
MFrequence