Trier les onglets selon un ordre

Bonjour,

Je souhaite trier mes onglets selon un ordre précis.

J'ai un tableaux avec un nombre de colonne variable. La première ligne étant le nom de mes onglets

Je veux donc trier mes onglets selon l'ordre de ces nom.

j'ai donc écrit ce code, je ne comprend pas pourquoi mais la boucle s'exécute une seule fois.

En espérant trouver de l'aide !! où peut-être une autre manière de fonctionner.

Je suis nouveau et commence dans l'univers du vba ahah

Private Sub CommandButton4_Click()

Dim k As Integer 'K= numéro de ma première colonne

Dim i As Integer 'i= numéro onglet

Dim a As String

Dim b As String

For k = 2 To ActiveWorkbook.Sheets.Count

For i = 1 To ActiveWorkbook.Sheets.Count

a = Sheets(i).Name

b = Cells.Columns(k).Rows("11:11").Value

If a = b Then

Sheets(a).Move before:=Sheets(i)

End If

Next

Next

end sub

Bonjour

Cordialement

Voici un exemple pour le principe

95test1.xlsm (19.45 Ko)

Coucou Remi, et bienvenue dans le merveilleux monde de la VBA xD

J'avais commencé à travailler sur ta demande avant que tu nous joigne ton fichier exemple

Alors je te joins ce que j'ai fais :3

Sa peut-être difficile à expliqué si tu est vraiment débutant pour la VBA mais en gros tu lance ta macro "Trier_mes_onglets" ce qui va te créé automatiquement une macro "Traitement" que tu dois lancer ensuite

Tes onglets se triront alors dans l'ordre dans lequel ils sont dans la colonne A de la Feuil1

Voilà voilà

Hésite pas si tu a des questions!

Édit : Fichier supp car buger.

Version sans bugs dans mon message suivant!

Ahhhh oui mais ya pas plus simple parceque là ton module traitement je dois t'avouer que je le comprend pas ahah mais merci !

Après plusieurs test de ma macro, je me suis rendu compte qu'il y avait deux trois petit bug

Je remet donc le fichier ici

ton module traitement je dois t'avouer que je le comprend pas

Suis ces étapes pour comprendre :

1 - Dans l'onglet Développeur cliquer sur Macro

2 - Une fenêtre s'ouvre, clique sur la macro Trier_mes_onglets puis sur Exécuter

3 - La macro viens de se lancer

4 - A nouveau, dans l'onglet Développeur cliquer sur Macro

5 - Clique sur Traitement puis sur Exécuter

6 - Tes onglets se trient dans l'ordre indiqué dans ta colonne A de ta Feuil1

Voilà

Après si tu veux que je t'explique la logique de la procédure, ce sera avec joie ^^

113pour-remi.xlsm (26.69 Ko)

Salut Remi,

Salut Juice,

plus simple à comprendre. Code à coller dans le module VBA de 'RECAP'.

Un double-clic dans 'RECAP' démarre la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
Worksheets(CStr(Cells(1, 1))).Move after:=Worksheets("RECAP")
For x = 2 To Cells(1, Columns.Count).End(xlToLeft).Column
    Worksheets(CStr(Cells(1, x))).Move after:=Worksheets(CStr(Cells(1, x - 1)))
Next
'
End Sub

A+

Bonjour

a voir aussi

et a modifier

Sub TriOnglet()
    For L = 2 To 11
        Onglet = Feuil1.Range("A" & L).Text
        Sheets(Onglet).Move , Worksheets(L - 1)
    Next
End Sub

A+

Maurice

Alors tout d'abord merci de toute ces réponses, vous êtes même un peu trop rapide ahaha

Je regarderais à tête reposé ce soir et vous donnerez une réponse demain !!

Merci beacoup !!

bonjour à tous

moi je mets les pieds dans le plat

pourquoi as-tu besoin de trier des onglets ?

si, comme il est probable, tes onglets sont identiques (même structure, il n'y a que les données qui changent), alors il faudrait ne faire qu'un unique onglet en lignes et colonnes simples. Puis des filtres (ou un TCD de filtrage, plus élégant)

si impossible, alors créer un onglet "SOMMAIRE" contenant une ligne par entité (une ligne voiture, une ligne avion... ) et des liens hypertexte pour accéder directement à l'onglet voulu

cet onglet peut se trier d'un clic (les onglets restent en vrac

pas besoin de VBA pour gérer des données dans Excel

Bonjour, effectivement mais le fichier que j'ai envoyé est juste un principe le vrai contient plus de 50 feuilles et 0 identique

( je peux pas vraiment l'envoyé il permet de faire les devis de l'entreprise c'est le truc à partagé ahah )

Bonjour, Salut à tous !

Pour le plaisir de faire un peu différemment...

Sub TriOnglets()
    Dim ong, i%, n%
    ong = Worksheets("RECAP").Range("A1").CurrentRegion.Resize(1).Value
    n = Worksheets.Count
    For i = 1 To UBound(ong, 2)
        Worksheets(ong(1, i)).Move after:=Worksheets(n)
    Next i
    Worksheets("RECAP").Activate
End Sub

Cordialement.

52remi-r-test1.xlsm (24.52 Ko)

re

salut au passage MFerrand

50 ? seulement ?

tu veux les trier, OK, compris.

reste la question : comment interagissent-ils entre eux ou avec un autre onglet ?

ils faut qu'ils changent de place en fonction de leur, dans une feuille recap il y a le nom de tout les onglets, puis le but c'est que l'utilisateur déplace les noms dans la feuille recap ( sur la même ligne).ET que via une petite macro tout les onglets se mettent dans l'ordre en fonction !

Merci Mferrend faut absolument que je regarde toute ces solution ce soir ahah

Salut jmd !

Les interactions demeurent tant que les onglets demeurent !

Re,

Si beaucoup d'onglets, pour que ça aille plus vite :

Sub TriOnglets()
    Dim ong, i%, n%
    ong = Worksheets("RECAP").Range("A1").CurrentRegion.Resize(1).Value
    n = Worksheets.Count
    Application.ScreenUpdating = False
    For i = 1 To UBound(ong, 2)
        Worksheets(ong(1, i)).Move after:=Worksheets(n)
    Next i
    Worksheets("RECAP").Activate
End Sub

Cordialement.

ils faut qu'ils changent de place en fonction de leur, dans une feuille recap il y a le nom de tout les onglets, puis le but c'est que l'utilisateur déplace les noms dans la feuille recap ( sur la même ligne).ET que via une petite macro tout les onglets se mettent dans l'ordre en fonction !

chaque onglet est un descriptif détaillé de chaque ligne de devis ?

Non pas vraiment chaque onglet permet un type de chiffrage, un outil pour réaliser le chiffrage

re

il y a donc 50 manières de chiffrer

l'onglet principal est le devis (il contient les réf, désignations et prix, mais pas les calculs) qui sera envoyé au client.

il suffit face à chaque "ligne" du devis de mettre un lien hypertexte dans une colonne très à droite en zone non imprimable (c'est automatisable sans VBA)

ainsi on peut naviguer dans les onglets du devis lors de son élaboration. Le tri des onglets devient inutile.

la fin de calcul de chaque onglet est-il reporté à la main dans le devis, ou bien est-ce une = dans Excel ?

Merci jmd mais c'est vraiment le trie des onglets qui m'interresse ..

Je vais voir avec la solution de Mferrand qui me parait efficace pour mon problèmes

je vous remercie à vous et a ce forum d'exister !!!

Rechercher des sujets similaires à "trier onglets ordre"