Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Excel (sommaire + tri des feuilles ) erreur dans mon VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Cattleya97

XLDnaute Nouveau
Bonjour

je suis en quête de réponse, j'ai cherchée un peu partout sur internet mais je n'arrive pas à obtenir la totalité de ce que je recherche.
J'ai un classeur qui contient plusieurs onglets nommée par agent , je souhaite mettre une macro qui me permettrait de :
- mettre mes différentes feuilles sur un onglet nom (1-sommaire) avec une liaison sur chacune d'elles
-trier par ordre alphabétique sachant que j'ai des agents qui peuvent avoir le même nom (A savoir que mon fichier est évolutif je peux être amener à ajouter d'autres feuilles )

J'ai du coup mis 2 modules mais lorsque je vais sur certains liens ils ne fonctionnent pas ( je pense que c'est par rapport au tiret ou espace dans le nom des feuilles mais comment faire pour différencier 2 personnes aux mêmes noms? Est ce un problème de macro qui pourrait comporter une ligne avec cette informtion?

en vous remerciant pour votre aide.😇


La première (sommaire)
Sub sommaire()
Dim feuille(500)
a = 0
For Each sh In Sheets
feuille(a) = sh.Name
a = a + 1
Next
Sheets("1-sommaire").Cells(1, 1).Value = "SOMMAIRE DU CLASSEUR"
For i = 1 To a - 1
Sheets("1-sommaire").Hyperlinks.Add Anchor:=Sheets("1-sommaire").Cells(i + 2, 1), Address:="", SubAddress:= _
feuille(i) & "!A1", TextToDisplay:=feuille(i)
Next i

Sheets("1-sommaire").Activate

End Sub

La deuxième (tri)
Public Sub TrierFeuilles()


On Error GoTo TriageErreur
Dim j As Integer
Dim i As Integer
Dim PremiereFeuille As Integer
Dim DerniereFeuille As Integer

PremiereFeuille = 1
DerniereFeuille = ActiveWorkbook.Worksheets.Count

For i = PremiereFeuille To DerniereFeuille
For j = i To DerniereFeuille
If UCase(SupprimerDiacritique(Worksheets(j).Name)) < UCase(SupprimerDiacritique(Worksheets(i).Name)) Then
Worksheets(j).Move Before:=Worksheets(i)
End If
Next j
Next i

Exit Sub
TriageErreur:
'Erreur

End Sub

Function SupprimerDiacritique(Texte As String)

Dim LettreD As String
Dim LettreN As String
Dim TexteTemporaire As String
Dim i As Long

Const LettresDiacritique = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸàáâãäåçèéêëìíîïñòóôõöùúûüýÿ"
Const LettresNormales = "AAAAAACEEEEIIIINOOOOOUUUUYYaaaaaaceeeeiiiinooooouuuuyy"

TexteTemporaire = Texte
For i = 1 To Len(LettresDiacritique)
LettreD = Mid(LettresDiacritique, i, 1)
LettreN = Mid(LettresNormales, i, 1)
TexteTemporaire = Replace(TexteTemporaire, LettreD, LettreN)
Next
SupprimerDiacritique = TexteTemporaire

End Function
 
J'ai trouvée la solution à mon problème de tiret il s'agit de mettre un "_" au lieu de "-" lorsqu'il y a des agents aux même noms exemple ( dupont_c ou dupont_d) ;

par contre je voudrais savoir si la macro du sommaire pourrait être automatique svp, a chaque ajout de nouvelles feuilles que j'aurais trier avec la macro ou doit-je à chaque fois exécuter celle-ci ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
177
Réponses
5
Affichages
235
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
144
Réponses
5
Affichages
182
Réponses
2
Affichages
511
Réponses
3
Affichages
672
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…