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. bonjour

    Essaye

    Dim laFeuil As String
    laFeuil = ActiveSheet.Name


    Et remplacer "Calque" par laFeuil dans la macro

    cordialement
    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

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

      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. 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