Macro, désigner la feuille active.

Résolu/Fermé
Dobynette - 18 mars 2018 à 10:16
 Dobynette - 18 mars 2018 à 13:29
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

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
18 mars 2018 à 10:41
Bonjour
peut être tout simplement (et sous toutes réserves selon votre macro), remplacer:

Sheets("Janvier").select

par

ActiveSheet.select

crdlmnt

0
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
18 mars 2018 à 11:42
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
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
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