Renommer feuilles - Indices des macro

TotoJP Messages postés 5 Statut Membre -  
 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

8 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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. TotoJP Messages postés 5 Statut Membre
       
      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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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. 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
    1. TotoJP Messages postés 5 Statut Membre
       
      Bonjour,

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

      Merci d'avance
      0
  3. Maurice
     
    Bonjour
    donne un model de ton fichier avec une macro qui fait appel a des onglets
    A+
    Maurice
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. 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
  6. 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
  7. TotoJP Messages postés 5 Statut Membre
     
    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
  8. 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