Tri onglet spécial
Résolu/Fermé
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
-
3 mars 2017 à 10:53
nihcoc Messages postés 192 Date d'inscription dimanche 9 mars 2014 Statut Membre Dernière intervention 28 février 2023 - 3 mars 2017 à 17:27
nihcoc Messages postés 192 Date d'inscription dimanche 9 mars 2014 Statut Membre Dernière intervention 28 février 2023 - 3 mars 2017 à 17:27
A voir également:
- Tri onglet spécial
- Caractere special - Guide
- Rouvrir onglet fermé - Guide
- Tri excel - Guide
- Onglet privé - Guide
- Ecriture special facebook - Guide
3 réponses
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
Modifié par f894009 le 3/03/2017 à 12:02
Modifié par f894009 le 3/03/2017 à 12:02
Bonjour,
Oui, parce que dans le code que vous avez, le tri doit se faire sur l'index feuille et non sur le nom de la feuille
Ou c'est normal car pour un classement "correct", il faut feuil01 pour feuil1 etc
Mais si vous ne voulez pas changer le nom des feuilles il faut modifier le code
Oui, parce que dans le code que vous avez, le tri doit se faire sur l'index feuille et non sur le nom de la feuille
Ou c'est normal car pour un classement "correct", il faut feuil01 pour feuil1 etc
Mais si vous ne voulez pas changer le nom des feuilles il faut modifier le code
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
3 mars 2017 à 14:30
3 mars 2017 à 14:30
Merci pour la réponse mais pourriez vous me renvoyer le code modifié
End Sub
Sub TriNomsOnglets()
Dim I As Integer, J As Integer
For I = 1 To Sheets.Count
For J = 1 To I - 1
If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
Sheets(I).Move Before:=Sheets(J)
Exit For
End If
Next J
Next I
End Sub
merci pour tout.
End Sub
Sub TriNomsOnglets()
Dim I As Integer, J As Integer
For I = 1 To Sheets.Count
For J = 1 To I - 1
If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
Sheets(I).Move Before:=Sheets(J)
Exit For
End If
Next J
Next I
End Sub
merci pour tout.
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
3 mars 2017 à 14:33
3 mars 2017 à 14:33
Re,
Nous sommes bien d'accord, les onglets auront pour nom Feuil1 etc ...d'origine quand vous ajoutez une ou plusieurs des feuillles
Nous sommes bien d'accord, les onglets auront pour nom Feuil1 etc ...d'origine quand vous ajoutez une ou plusieurs des feuillles
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
3 mars 2017 à 14:47
3 mars 2017 à 14:47
oui ou 1,2,3,4,5, ect.
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
3 mars 2017 à 15:58
3 mars 2017 à 15:58
Re,
Oui, mais pas de melange. Fait pour les deux types de nom: Feuil1 ou 1
Oui, mais pas de melange. Fait pour les deux types de nom: Feuil1 ou 1
Sub Tri_onglet_croissant() Dim Liste_N() As Long, NbO As Long, N As Long Dim Flg_F As Boolean, NmF As String NbO = Worksheets.Count ReDim Liste_N(1 To NbO) 'Feuil ou pas dans le nom d'onglet If InStr(Worksheets(1).Name, "Feuil") > 0 Then Flg_F = True NmF = "Feuil" Else Flg_F = False NmF = "" End If 'mise en tableau des noms d'onglet For N = 1 To NbO If Flg_F Then Liste_N(N) = CLng(Split(Worksheets(N).Name, "Feuil")(1)) Else Liste_N(N) = CLng(Worksheets(N).Name) End If Next N Call ShellSort(Liste_N(), LBound(Liste_N), UBound(Liste_N)) 'Proc récursive tri croissant 'tristribution des onglets par nom numero croissant For N = 1 To NbO Worksheets(NmF & Liste_N(N)).Move After:=Sheets(Sheets.Count) Next N End Sub '-------------------------------- ' Tri de Shell - Shell Sort '-------------------------------- Public Sub ShellSort(t() As Long, Optional ByVal loBound As Long = -1, Optional ByVal upBound As Long = -1) Dim i As Long, j As Long, h As Long, v As Long If loBound = -1 Then loBound = LBound(t()) If upBound = -1 Then upBound = UBound(t()) h = loBound Do: h = 3 * h + 1: Loop Until h > upBound Do h = h / 3 For i = h + 1 To upBound v = t(i): j = i Do While t(j - h) > v t(j) = t(j - h): j = j - h If j <= h Then Exit Do Loop t(j) = v Next i Loop Until h = loBound End Sub
nihcoc
Messages postés
192
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
28 février 2023
5
>
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
3 mars 2017 à 17:27
3 mars 2017 à 17:27
Merci beaucoup
ça marche très bien
ça marche très bien