Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Changer N° / Noms de feuilles ?

4 réponses
Avatar
LANIMAL
Bonjour
J'ai un classeur qui comporte 60 feuilles.
Exemple simplifié :
Feuil1 (a)
Feuil2 (r)
Feuil3 (g)
Feuil4 (m)
Feuil5 (Toto)
Feuil6 (s)
Ces feuilles sont numérotées dans l'ordre de leur création
c'est à dire "s" a été crée en dernier.
Je veux traiter toutes les feuilles SAUF Toto, dans une boucle
For Feuille = 1 To 5
------
Next
Mais pour cela,il faut que je change l'ordre des noms, comme ci-après :
Feuil1 (a)
Feuil2 (r)
Feuil3 (g)
Feuil4 (m)
Feuil5 (s)
Feuil6 (Toto)
Y a-t-il un moyen simple de permuter "Toto" et "s"
entre les feuilles n° 5 et 6.

J'ai pensé Copier-Coller "Toto" dans Feuil6 et "s" dans Feuil5
mais faire ça 10 ou 15 fois sera long,
d'autant qu'il faut reconfigurer la présentation à chaque fois.
Enfin, si nécessaire, je le ferai,
mais c'est vrai que si une autre solution existe,
j'aimerais la connaître... ne serait-ce que pour apprendre !
Merci d'avance.

4 réponses

Avatar
Daniel.j
Bonjour,
comme cela par exemple
Dim mafeuille As Object
Set monTab = Worksheets(Array(1,2,3,4,6))
For Each mafeuille In monTab
.............
Next

ou bien
For I = Sheets.Count To 1 Step -1
If Sheets(I).Name = "toto" Then
Else
.......................
End If
Next

http://dj.joss.free.fr/feuil.htm
Daniel
--
FAQ MPFE
http://dj.joss.free.fr/faq.htm

"LANIMAL" a écrit dans le message de news:
%
Bonjour
J'ai un classeur qui comporte 60 feuilles.
Exemple simplifié :
Feuil1 (a)
Feuil2 (r)
Feuil3 (g)
Feuil4 (m)
Feuil5 (Toto)
Feuil6 (s)
Ces feuilles sont numérotées dans l'ordre de leur création
c'est à dire "s" a été crée en dernier.
Je veux traiter toutes les feuilles SAUF Toto, dans une boucle
For Feuille = 1 To 5
------
Next
Mais pour cela,il faut que je change l'ordre des noms, comme ci-après :
Feuil1 (a)
Feuil2 (r)
Feuil3 (g)
Feuil4 (m)
Feuil5 (s)
Feuil6 (Toto)
Y a-t-il un moyen simple de permuter "Toto" et "s"
entre les feuilles n° 5 et 6.

J'ai pensé Copier-Coller "Toto" dans Feuil6 et "s" dans Feuil5
mais faire ça 10 ou 15 fois sera long,
d'autant qu'il faut reconfigurer la présentation à chaque fois.
Enfin, si nécessaire, je le ferai,
mais c'est vrai que si une autre solution existe,
j'aimerais la connaître... ne serait-ce que pour apprendre !
Merci d'avance.


Avatar
LargoWinch
LANIMAL a écrit :
Bonjour
J'ai un classeur qui comporte 60 feuilles.
Exemple simplifié :
Feuil1 (a)
Feuil2 (r)
Feuil3 (g)
Feuil4 (m)
Feuil5 (Toto)
Feuil6 (s)
Ces feuilles sont numérotées dans l'ordre de leur création
c'est à dire "s" a été crée en dernier.
Je veux traiter toutes les feuilles SAUF Toto, dans une boucle
For Feuille = 1 To 5
------
Next
Mais pour cela,il faut que je change l'ordre des noms, comme ci-après :
Feuil1 (a)
Feuil2 (r)
Feuil3 (g)
Feuil4 (m)
Feuil5 (s)
Feuil6 (Toto)
Y a-t-il un moyen simple de permuter "Toto" et "s"
entre les feuilles n° 5 et 6.

J'ai pensé Copier-Coller "Toto" dans Feuil6 et "s" dans Feuil5
mais faire ça 10 ou 15 fois sera long,
d'autant qu'il faut reconfigurer la présentation à chaque fois.
Enfin, si nécessaire, je le ferai,
mais c'est vrai que si une autre solution existe,
j'aimerais la connaître... ne serait-ce que pour apprendre !
Merci d'avance.



Pourquoi ne pas by-passer toto dans la boucle ?

Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Sheets

'MsgBox ("Feuillet : " & Sh.Name)
if sh.name <> "toto" then
<traitement>
end if
Next


A noter, un simple glisser-lacher de l'onglet permet de les traiter dans
l'ordre où ils apparaissent dans le classeur (j'ai inversé Feuil2 et
Feuil3, les msgbox affichées me donnent bien Feuil1 - Feuil*3* - Feuil*2*)
Avatar
LANIMAL
Grand merci à Daniel.j et LargoWinch
J'ai appris des choses.
Finalement, plutôt que de sauter Toto (! ! ! !), je vais utiliser le
Glisser-Lacher suggéré par LargoWinch.
J'y avais pensé, mais voyant que rien ne changeait dans l'explorateur
d'objets, je n'avais pas été plus loin.
Encore merci à tous deux.


LargoWinch a écrit :
LANIMAL a écrit :
Bonjour
J'ai un classeur qui comporte 60 feuilles.
Exemple simplifié :
Feuil1 (a)
Feuil2 (r)
Feuil3 (g)
Feuil4 (m)
Feuil5 (Toto)
Feuil6 (s)
Ces feuilles sont numérotées dans l'ordre de leur création
c'est à dire "s" a été crée en dernier.
Je veux traiter toutes les feuilles SAUF Toto, dans une boucle
For Feuille = 1 To 5
------
Next
Mais pour cela,il faut que je change l'ordre des noms, comme ci-après :
Feuil1 (a)
Feuil2 (r)
Feuil3 (g)
Feuil4 (m)
Feuil5 (s)
Feuil6 (Toto)
Y a-t-il un moyen simple de permuter "Toto" et "s"
entre les feuilles n° 5 et 6.

J'ai pensé Copier-Coller "Toto" dans Feuil6 et "s" dans Feuil5
mais faire ça 10 ou 15 fois sera long,
d'autant qu'il faut reconfigurer la présentation à chaque fois.
Enfin, si nécessaire, je le ferai,
mais c'est vrai que si une autre solution existe,
j'aimerais la connaître... ne serait-ce que pour apprendre !
Merci d'avance.



Pourquoi ne pas by-passer toto dans la boucle ?

Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Sheets

'MsgBox ("Feuillet : " & Sh.Name)
if sh.name <> "toto" then
<traitement>
end if
Next


A noter, un simple glisser-lacher de l'onglet permet de les traiter dans
l'ordre où ils apparaissent dans le classeur (j'ai inversé Feuil2 et
Feuil3, les msgbox affichées me donnent bien Feuil1 - Feuil*3* - Feuil*2*)


Avatar
LargoWinch
Dans son message précédent, LANIMAL a écrit :
Grand merci à Daniel.j et LargoWinch
J'ai appris des choses.
Finalement, plutôt que de sauter Toto (! ! ! !), je vais utiliser le
Glisser-Lacher suggéré par LargoWinch.
J'y avais pensé, mais voyant que rien ne changeait dans l'explorateur
d'objets, je n'avais pas été plus loin.
Encore merci à tous deux.




Utiliser une boucle serait pourtant plus souple à l'usage ;)

--
Largo
"C'est pas parce qu'il sont nombreux a avoir tort qu'il ont forcément
raison" - Coluche