Donnée variable dans une macro

Résolu
Bonjour,

Excel 2013 - Windows 8.1

Dans un document j''ai un Onglet nommé CALQUE qui comporte la macro suivante :

Sub Tri_Budget()
'
' Tri_Budget Macro
'

'
Range("A4:J400").Select
ActiveWorkbook.Worksheets("Calque").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Calque").Sort.SortFields.Add Key:=Range("J4:J400"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Calque").Sort
.SetRange Range("A4:J400")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Cet Onglet me sert de référence pour créer au fil du temps via la fonction "Déplacé_Copier" 12 nouveaux Onglets Janvier, Février..... Décembre.
Est-ce qu'il est possible de compléter cette macro afin que le nom "Calque" prenne le nom de l'Onglet dans laquelle elle s'exécute.
Je reste bien entendu à votre entière disposition si nécessaire et vous remercie par avance de votre attention.
Cordialement.

5 réponses

  1. Re

    Chez moi cela fonctionne très bien

    As tu bien modifié ainsi ? :

    Sub Tri_Budget()
    '
    ' Tri_Budget Macro
    '

    '
    Range("A4:J400").Select
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("J4:J400"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.ActiveSheet.Sort
    .SetRange Range("A4:J400")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    End Sub

    Cdlmnt
    0
    1. Bonjour via55,
      Merci de me venir à nouveau en aide.
      J'ai remplacé tous les Worksheets par ActiveSheet
      j'ai "Erreur 438"
      Amicalement
      0
      1. Re,

        OK, j'avais simplement oublié d'ôter "CALQUE"
        Je vérifie cela devrait marcher.
        Merci beaucoup
        Amicalement
        0
    2. Bonjour

      Plus simplement tu peux dans la macro remplacer tous les Worksheets("Calque") par ActiveSheet

      Cdlmnt
      0
      1. Bonjour Iama,

        Merci de ta réponse.
        Je ne suis pas un as de la macro !
        Comment et où intégrer ce que tu proposes, avant ou après Subtri ?
        Y-a-t-il des instructions à ajouter ?
        Merci par avance de ta réponse.
        Amicalement
        0
        1. Pour info

          Après sub

          cordialement
          0
      2. bonjour

        Essaye

        Dim laFeuil As String
        laFeuil = ActiveSheet.Name


        Et remplacer "Calque" par laFeuil dans la macro

        cordialement
        0