trier des feuilles

  • Initiateur de la discussion Jean-Yves
  • Date de début
J

Jean-Yves

Guest
Bonsoir,

J'ai créé un classeur comportant 36 feuilles. Ces feuilles sont nommées uniquement par des nombres (pas de 'feuil1'!!!, juste '1').

Je voudrais bien faire une macro qui les trie dans un ordre croissant mais jusqu'à présent ce que j'ai trouvé ne fonctionne pas (après le tri, j'ai un truc du style '1 10 11 12...2 20 21...3 30 31' alors que je voudrais '1 2 3 4 5...').

Si vous avez compris mon explication et que vous avez une solution, faites moi signe.

Merci.
 

pierrejean

XLDnaute Barbatruc
bonsoir jean-yves

salut Gerard

teste cette macro

Sub rangement()
dim n as Integer
For n = 35 To 1 Step -1
Sheets(CStr(n)).Move Before:=Sheets(CStr(n + 1))
Next n
End Sub

je ne l'ais testée qu'avec 3 feuilles

Message édité par: pierrejean, à: 04/05/2006 19:01
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Cher Gérard, Bonsoir PierreJean, Bonsoir Jean-Yves.

Pour trier les Feuilles il y a plusieurs méthodes, en voici une...
Offerte par Michel Pierron (MPFE)

'cette procédure respecte le tri des indices par défaut des feuilles
'(feuil1,feuil2,.....,feuil11 et non feuil1,feuil11,feuil2)

Et par conséquent règlera aussi ton problème.

Option Explicit

Sub SheetsSort()
'Michel Pierron, mpfe
Dim id As Byte, no As Byte, ValNom(1) As Byte
Dim StrNom(1) As String

no = 1
Application.ScreenUpdating =
False
Do While no no
       
If IsAlphaNum(Sheets(id).Name) And IsAlphaNum(Sheets(id - 1).Name) Then
            StrNom(0) = Left(Sheets(id).Name, Len(Sheets(id).Name) - iPos(Sheets(id).Name))
            ValNom(0) = Mid(Sheets(id).Name, Len(StrNom(0)) + 1)
            StrNom(1) = Left(Sheets(id - 1).Name, Len(Sheets(id - 1).Name) - iPos(Sheets(id - 1).Name))
            ValNom(1) = Mid(Sheets(id - 1).Name, Len(StrNom(1)) + 1)
       
           
Select Case StrComp(StrNom(0), StrNom(1), 1)
             
Case -1
                  Sheets(id).Move Before:=Sheets(id - 1)
             
Case 0
               
If ValNom(0) < ValNom(1) Then Sheets(id).Move Before:=Sheets(id - 1)
           
End Select
       
Else
           
If StrComp(Sheets(id).Name, Sheets(id - 1).Name, 1) = -1 Then
            Sheets(id).Move Before:=Sheets(id - 1)
           
End If
       
End If
   
    id = id - 1
   
Loop
no = no + 1
Loop
Sheets(1).Activate
Application.ScreenUpdating =
True
End Sub

Private Function IsAlphaNum(NameSheet As String) As Boolean
    IsAlphaNum =
Not IsNumeric(NameSheet) And IsNumeric(Right(NameSheet, 1))
End Function

Private Function iPos(NameSheet As String) As Byte
    iPos = 0
           
Do While IsNumeric(Right(NameSheet, iPos + 1))
                iPos = iPos + 1
           
Loop
End Function

Aves mes félicitations/remerciements à Michel car ce code fonctionne très bien
Bon après midi

Bonne Soirée
[ol]@+Thierry[/ol]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Jean-Yves, le fil, le forum


Impressionant lol j'ai pas compris comment la mise enpage PHP arrive à faire un truc pareil lol

Le code :
Do While no < Sheets.Count


Sorry

Pourtant le code de Michel m'est connu depuis longtemps :

Lien supprimé

Si jamais ça refait un code foireux, y a pas bon le script...

Bonne nuit

[ol]@+Thierry[/ol]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir David, re le Fil

Non à ma connaissance, non. Pour t'abonner à un Fil il faut en faire partie ;)

Sinon tu peux en prendre l' URL

Lien supprimé

Mais tu devras venir consulter quand même.

Bonne Nuit
[ol]@+Thierry[/ol]
 

Tibo

XLDnaute Barbatruc
Salut David, le Forum,

David, si tu veux suivre ce fil en particulier, tu cliques sur 'Suivre Fil' tout en bas du fil à gauche.

De cette façon, tu seras informé par mail de tout nouveau post sur ce fil.

J'espère avoir compris ta question et que ma réponse te satisfait.

Bonne journée à tous.

@+
 
A

AV

Guest
Salut à tous,

En matière de tri de feuilles, regardez ces deux alternatives de Daniel MAHER qui me semblent être le must du genre.

AV [aaa] [file name=TriFeuille.zip size=36062]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TriFeuille.zip[/file]
 

Pièces jointes

  • TriFeuille.zip
    35.2 KB · Affichages: 49
  • TriFeuille.zip
    35.2 KB · Affichages: 47
  • TriFeuille.zip
    35.2 KB · Affichages: 42

Discussions similaires

Réponses
12
Affichages
284

Statistiques des forums

Discussions
312 493
Messages
2 088 958
Membres
103 990
dernier inscrit
lamiadebz