Renommer feuilles - Indices des macro

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

8 réponses

  1. Contributeur
    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
    1. 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
    2. Contributeur
      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
  2. 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
    1. Bonjour,

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

      Merci d'avance
      0
  3. Bonjour
    donne un model de ton fichier avec une macro qui fait appel a des onglets
    A+
    Maurice
    0
    1. 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
      1. 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
        1. 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
          1. 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