Renommer feuilles - Indices des macro

TotoJP Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
 Maurice -
Bonjour,

Mes macros utilisent des noms de feuilles comme références.
Est-il possible de renommer les feuilles tout en changeant automatiquement ce nom dans les macros (VBA)
Merci de bien vouloir éclairer ma lanterne
A voir également:

8 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

Le mieux serait de renommer avec le nom de la Feuille correspondante: Feuil1, Feuil2 etc.
comme cela tu n'aurais plus de problème de renommage d'onglet

Pour renommer dans les modules:
Tu vas dans le ruban et tu cliques sur Rechercher (les jumelles)
Tu saisies le nom de l'onglet à renommer.
Tu coches : Projet en cours.
A droite tu cliques sur Remplacer
En haut tu saisies dans Remplacer par: la feuille correspondante à ton onglet Feuil1 par ex
Et tu cliques sur Remplacer tout
Tu fais de même pour tous tes onglets

A l'avenir tu te serviras du nom des Feuilles, cela t'éviteras ce désagrément
0
TotoJP Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Merci pout l'info correcte, mais mon problème est plus délicat: Je souhaite que ce soit l'utilisateur ambda (et pas moi!) qui puisse renommer les feuilles comme il le souhaite. @+
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Tu n'as pas bien lu ma réponse. Si tes feuille sont nommées dans les macros Feuil1, Feuil2 etc., l'utilisateur peut renommer ses onglets comme il le désire!
0
Maurice
 
Bonjour

Il faut dega changer tes macro par le CodeName

apres tu est tranquil tu peux changer comme tu veux tes nom d'onglet

A+
Maurice
0
TotoJP Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Etant novice en VBA, pourrais-tu m'indiquer comment faire

Merci d'avance
0
Maurice
 
Bonjour
donne un model de ton fichier avec une macro qui fait appel a des onglets
A+
Maurice
0
TotoJP Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Re bonjour

Mon fichier est sur:
https://www.cjoint.com/?0BphUts6a9I
Les feuilles à renommer par l'utilisateur sont celles de a à y

Merci et bonne St Valentin
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Maurice
 
Bonjour
Voila un model de tri sur 2 feuille sans les nom de feuille

Sub TriEntreesSorties()
'
' TriEntreesSorties Macro
'
Onglet = Array(Feuil2.Name, Feuil23.Name)
   For X = 0 To 1
      Sheets(Onglet(X)).Select
      Nlig = Range("A" & Rows.Count).End(xlUp).Row
         If Nlig > 4 Then
            Rows("4:" & Nlig).Select
            ActiveWorkbook.Worksheets(Onglet(X)).Sort.SortFields.Clear
            ActiveWorkbook.Worksheets(Onglet(X)).Sort.SortFields.Add Key:=Range("A4"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveWorkbook.Worksheets(Onglet).Sort
                .SetRange Range("A4:AZ" & Nlig)
                .Header = xlNo
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
          End If
       Range("A4").Select
   Next
Sheets(Onglet(0)).Select
End Sub

A tester bien sur avec des donner
A+
Maurice
0
Maurice
 
Re
Hum j'ais fait un Bug voila la modife
Sub TriEntreesSorties()
'
' TriEntreesSorties Macro
'
Onglet = Array(Feuil2.Name, Feuil23.Name)
   For X = 0 To 1
      Sheets(Onglet(X)).Select
      Nlig = Range("A" & Rows.Count).End(xlUp).Row
         If Nlig > 4 Then
            Rows("4:" & Nlig).Select
            ActiveWorkbook.Worksheets(Onglet(X)).Sort.SortFields.Clear
            ActiveWorkbook.Worksheets(Onglet(X)).Sort.SortFields.Add Key:=Range("A4"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveWorkbook.Worksheets(Onglet(X)).Sort
                .SetRange Range("A4:AZ" & Nlig)
                .Header = xlNo
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
          End If
       Range("A4").Select
   Next
Sheets(Onglet(0)).Select
End Sub

A+
Maurice
0
TotoJP Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci, Maurice,

Ton programme fonctionne parfaitement pour x = 0 et 1, mais quand je veux trier plus de feuilles, à partir de x=2, il bug à la ligne 7 ( Sheets(Onglet(X)).Select) avec l'erreur 9: "L'indice n'appartient pas à la sélection"
C'est probablement facile à résoudre, mais pour un débutant comme moi en vba...
@+
0
Maurice
 
Bonjour
tu peux mettre ta macro pour voir ou tu a fait une blaque

voila un autre macro regarde bien
Sub testTri()
Dim Onglet(2) As String
Onglet(0) = Feuil2.Name
Onglet(1) = Feuil1.Name
Onglet(2) = Feuil23.Name
   For X = LBound(Onglet) To UBound(Onglet)
      Sheets(Onglet(X)).Select
      Nlig = Range("A" & Rows.Count).End(xlUp).Row
         If Nlig > 4 Then
            Rows("4:" & Nlig).Select
            ActiveWorkbook.Worksheets(Onglet(X)).Sort.SortFields.Clear
            ActiveWorkbook.Worksheets(Onglet(X)).Sort.SortFields.Add Key:=Range("A4"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveWorkbook.Worksheets(Onglet(X)).Sort
                .SetRange Range("A4:AZ" & Nlig)
                .Header = xlNo
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
          End If
       Range("A4").Select
   Next
Sheets(Feuil2.Name).Select
End Sub

Sub textTriAlpha()
Dim Onglet(24) As String
Onglet(0) = Feuil3.Name
Onglet(1) = Feuil4.Name
Onglet(2) = Feuil5.Name
Onglet(3) = Feuil6.Name
Onglet(4) = Feuil7.Name
Onglet(5) = Feuil8.Name
Onglet(6) = Feuil9.Name
Onglet(7) = Feuil10.Name
Onglet(8) = Feuil11.Name
Onglet(9) = Feuil12.Name
Onglet(10) = Feuil13.Name
Onglet(11) = Feuil14.Name
Onglet(12) = Feuil15.Name
Onglet(13) = Feuil16.Name
Onglet(14) = Feuil17.Name
Onglet(15) = Feuil18.Name
Onglet(16) = Feuil19.Name
Onglet(17) = Feuil20.Name
Onglet(18) = Feuil21.Name
Onglet(19) = Feuil22.Name
Onglet(20) = Feuil24.Name
Onglet(21) = Feuil25.Name
Onglet(22) = Feuil26.Name
Onglet(23) = Feuil27.Name
Onglet(24) = Feuil28.Name
   For X = LBound(Onglet) To UBound(Onglet)
      Sheets(Onglet(X)).Select
      Nlig = Range("A" & Rows.Count).End(xlUp).Row
         If Nlig > 4 Then
            Rows("4:" & Nlig).Select
            ActiveWorkbook.Worksheets(Onglet(X)).Sort.SortFields.Clear
            ActiveWorkbook.Worksheets(Onglet(X)).Sort.SortFields.Add Key:=Range("A4"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveWorkbook.Worksheets(Onglet(X)).Sort
                .SetRange Range("A4:AZ" & Nlig)
                .Header = xlNo
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
          End If
       Range("A4").Select
   Next
Sheets(Feuil2.Name).Select
End Sub


A+
Maurice
0