Autres CODE VBA pour TRIER toutes les feuilles d'un classeur EXCEL par ordre ALPHABETIQUE

claivier_58

XLDnaute Nouveau
Bonjour, je souhaiterais les codes VBA permettant de trier à partir du fichier joint les divers fournisseurs de Fournisseur 1 -> Fournisseur 10 et dans cet ordre :

1 - Sous EXCEL, à l'ouverture du fichier, lancer automatiquement une macro permettant de créer une feuille intitulée ' RECAPITULATIF '. Cette feuille 'RECAPITULATIF' devra rester toujours en 1ère position des onglets. Ne sachant pas comment faire sous VBA, j'ai opté pour mettre un espace devant le nom RECAPITULATIF de l'onglet mais c'est une solution bidouillée et si par inadvertance, on vient à le changer voire le supprimer ça ne fonctionnerait plus.

2 - Qaud je clique sur le bouton 'CREER LISTE' je souhaiterais avoir le code pour Supprimer les feuilles dont le contenu est vide (voir contenu du module 1 dans VBA .... morceau de code que j'ai repris sur internet ) ..... ça semble fonctionner si des feuilles ont été crées et qu'elles sont vides et toujours avec la même opération, je souhaiterais avoir le code pour Créer en colonne la liste des onglets à partir de A5 sur la feuille ' RECAPITULATIF ' avec autant de lignes dans la colonne A qu'il y a de fournisseurs rentrés (Fournisseur 1 puis, Fournisseur 2 puis, ... , Fournisseur 19 et Fournisseur 20). Sauf si des fichiers vides ont été préalablement supprimés. J'arrive à le faire jusqu'à 9 mais après arrivé à 10 ca me fait un décalage (Ex : Fournisseur 1- Fournisseur 10 - Fournisseur 2 - ....)

3 - Je souhaiterais connaitre le code VBA permettant le tri des onglets (non vides) en fonction du nom (classement par ordre alpha-nulérique ou alphabétique s'il n'y a que des lettres) .Merci de me dire comment utiliser le code VBA du module 5 car je ne comprends pas. Par contre je veux rester sur l'onglet 'RECAPITULATIF' après avoir fait le tri des onglets avec un bouton (voir fichier les 2 boutons)

Merci pour votre aide. En fichier joint le classeur xlsm de ce que j'ai pu récupérer.
pouvez vous me renvoyer les modules associés ?

Merci par avance.

Cyril
 

Pièces jointes

  • Classeur_4.xlsm
    31.2 KB · Affichages: 30
Solution
Bonjour,

la façon la plus simple est de renommer tes fournisseurs fournisseur 01, fournisseur 02, ... fournisseur 10 comme ça le code de Staple reste valide et simple.
Et pour la feuille il suffit de la remettre à sa place après la boucle (et du coup plus besoin de la mettre .visible=True, 2 lignes à éliminer)
Ajouter à la fin :
VB:
Sheets("RECAPITULATIF"j).Move Before:=Sheets(1)
eric

Staple1600

XLDnaute Barbatruc
Bonsoir

Essaies ceci
VB:
Sub TriOnglets()
Application.ScreenUpdating = False
Dim ShCount As Integer, i As Integer, j As Integer
ShCount = Sheets.Count
For i = 1 To ShCount - 1
    For j = i + 1 To ShCount
        If UCase(Sheets(j).Name) < UCase(Sheets(i).Name) Then
            Sheets(j).Move before:=Sheets(i)
        End If
    Next j
Next i
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Avec cette version, la feuille RECAPITULATIF reste en 1ière position.
VB:
Sub TriOnglets_BIS()
Application.ScreenUpdating = False
Dim ShCount As Integer, i As Integer, j As Integer
ShCount = Sheets.Count
Sheets("RECAPITULATIF").Visible = False
For i = 1 To ShCount - 1
If Sheets(i).Visible Then
    For j = i + 1 To ShCount
        If UCase(Sheets(j).Name) < UCase(Sheets(i).Name) Then
            Sheets(j).Move Before:=Sheets(i)
        End If
    Next j
    End If
Next i
Sheets("RECAPITULATIF").Visible = True
End Sub
 

claivier_58

XLDnaute Nouveau
Bonjour à tous,
Merci pour vos réponses ...... JM et Eric
Par contre comment gère-t-on fournisseur 10 <-> fournisseur 2 ? car je souhaiterais si c'est possible que fournisseur 10 soit placé automatiquement derrière fournisseur 9 ... Ce qui semble quand même plus logique ? Lol j'avais trouvé un code pour le classement qui est dans le module 5 du fichier joint Classeur_4.xlsm ... mais je ne sais pas pourquoi ça ne fonctionne pas.
Merci pour vos retours
 

claivier_58

XLDnaute Nouveau
Re-bonjour par contre si je bouge l'onglet RECAPITULATIF par rapport aux autres onglets il ne se remet à la 1ère place .... peut-on le faire en VBA de sorte que cet onglet se repositionne toujours à la 1ère place avant Fournisseur 1 donc ?
Merci.
 

eriiic

XLDnaute Barbatruc
Bonjour,

la façon la plus simple est de renommer tes fournisseurs fournisseur 01, fournisseur 02, ... fournisseur 10 comme ça le code de Staple reste valide et simple.
Et pour la feuille il suffit de la remettre à sa place après la boucle (et du coup plus besoin de la mettre .visible=True, 2 lignes à éliminer)
Ajouter à la fin :
VB:
Sheets("RECAPITULATIF"j).Move Before:=Sheets(1)
eric
 

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh