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

  • Votes
  • Date
  • Date décroissante
  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
    1. Bonjour via55,
      Merci de me venir à nouveau en aide.
      J'ai remplacé tous les Worksheets par ActiveSheet
      j'ai "Erreur 438"
      Amicalement
      1. Re,

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

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

      Cdlmnt
      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
        1. Pour info

          Après sub

          cordialement
      2. bonjour

        Essaye

        Dim laFeuil As String
        laFeuil = ActiveSheet.Name


        Et remplacer "Calque" par laFeuil dans la macro

        cordialement