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
- 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:
Mais comme les feuilles ne sont pas classées dans l'ordre souhaité, j'ai rajouté les lignes suivantes dans le script:
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
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
Code:
Sheets("E").Move After:=Sheets("FI (8)")
Sheets("FI").Move After:=Sheets("E")
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: