Macro, désigner la feuille active.

Résolu
Dobynette -  
 Dobynette -
Bonjour à tous

Je cherche depuis plusieurs jours comment adapter une macro pour mon fichier mais je ne trouve pas la solution.
J'ai crée un fichier planning avec d'une part plusieurs onglet pour chaque mois, et ensuite des onglets résumant la présence de chaque personnes à chaque poste pour permettre un suivi.
Sur chaque onglet de mois, j'ai un tableau avec le nombre de jours de présence à chaque poste par personne et un bouton avec une macro me permet d'aller ajouter ces colonnes dans le tableau récapitulatif par poste.

Ce que je cherche à faire c'est à avoir une seule et même macro quelque soit l'onglet de mois depuis lequel je la lance. Mais actuellement je n'ai rien trouvé qui fonctionne pour remplacer les " Sheets("Janvier").Select" dans ma macro.

Quelqu'un aurait une solution pour désigner la feuille depuis laquelle on a cliqué sur le bouton de lancement de macro ?

Merci d'avance :)

2 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    peut être tout simplement (et sous toutes réserves selon votre macro), remplacer:

    Sheets("Janvier").select

    par

    ActiveSheet.select

    crdlmnt

    0
    1. Dobynette
       
      Bonjour

      Merci pour votre réponse
      J'avais essayé cette commande mais la macro ne faisait absolument plus rien.

      Voici la macro. Il manque peut-être quelque chose.

      Sub Suivi()
      '
      ' Suivi Macro
      '


      Sheets("URG").Select
      Columns("D").Select
      Range("D2").Activate
      Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
      ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
      Sheets("Janvier").Select
      Range("B50:B67").Select
      Selection.Copy
      Sheets("URG").Select
      Range("D1").Select
      Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
      , SkipBlanks:=False, Transpose:=False
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Columns("D:D").ColumnWidth = 5
      End Sub


      Ce code se répète à l'identique pour 4 copier/coller dans des onglets différents.
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Je ne vole pas très haut en macro, mais je pense que si vous commencez par sélectionner la feuille URG, Activesheet.select va ensuite forcément s'adresser à cette feuille!

      voyez si vous pouvez commencer votre macro avec:

      ActiveSheet.Select
      Range("B50:B67").Select
      Selection.Copy

      sélectionner ensuite la feuille URG et supprimer plus bas les lignes qui s'adressent à la copie de Janvier?

      il me semble que les actions que vous faites avant de copier janvier peuvent se faire après, non?

      sinon, il faudra attendre quelqu'un de meilleurs en VBA et ça, ce n'est surement pas rare ici :-))

      crdlmnt
      0
    3. Dobynette
       
      Re !

      J'avais monté la macro ainsi car je n'arrivais pas à insérer les cellules en gardant la mise en forme en une fois mais ça y est j'ai réussi et ça fonctionne bien ! En revanche il me manque une ligne permettant de retourner sur la feuille initiale après le premier copier/coller, toujours sans la désigner par son nom. Je vais essayer de trouver cette nouvelle solution :) Merci !!

      Sub Suivi2()
      '
      ' Suivi2 Macro
      '

      '
      ActiveSheet.Select
      Range("B50:B66").Select
      Selection.Copy
      Sheets("URG").Select
      Columns("D").Select
      Range("D2").Activate
      Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
      Range("D1").Select
      Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
      , SkipBlanks:=False, Transpose:=False
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False

      ActiveSheet.Select
      Range("C50:C66").Select
      Selection.Copy
      Sheets("LCT").Select
      Columns("D").Select
      Range("D2").Activate
      Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
      Range("D1").Select
      Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
      , SkipBlanks:=False, Transpose:=False
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      End Sub
      0
    4. Dobynette
       
      J'ai réussi en définissant tout simplement un nom arbitraire à ActiveSheet et en uitlisant après les commande nom.Activate et nom.select
      0