Créer macro qui fonctionne avec différents noms de feuilles

Bonjour à tous,

Je souhaiterais créer une macro qui récupère les données de 2 onglets contenant des listes de tâches.

Je voudrais que la macro colle ensuite ces données en un tableau de synthèse sur la feuille de planning du jour en s'activant à partir d'un bouton.

Mon problème est que le nom des feuilles de planning change chaque jour et plusieurs feuilles de planning peuvent être créées en même temps. Je voudrais donc créer une macro générique qui permette de faire ceci quelque soit le nom de l onglet.

Mon idée est qu'une personne crée un onglet par jour et qu'ensuite les tâches qui apparaitrons dans la liste de synthèse seront réparties entre les personnes.

En pièce jointe un exemple de mon fichier simplifié

49exemple1.xlsm (27.44 Ko)

Je suis bloquée sur le sujet depuis une semaine, j'espère que quelqu'un aura une idée..

D'avance merci

Une piste est d'utiliser le n° de la feuille et pas son nom.

Si tu ajoutes les feuilles en dernier, utilise sheets.count.

Mieux encore, tu peux scruter toutes les feuilles depuis 0 ou 1 je ne sais plus jusque sheets.count et tester leur nom, si tu donnes toujours le même début du nom, alors tu peux détecter celles à prendre en compte.

Merci pour l'idée, je comprends le principe mais je ne vois pas comment l'écrire dans mon code actuel.

Je vais peut etre davantage expliquer mon problème

Mon idée première était de remplacer le nom de la feuille "liste_taches" dans le code ci-dessous par le nom de la feuille active ou du nom de la feuille stocké dans une variable.

Mon problème avec ta proposition est, comment ne créer la liste de tâche uniquement sur la feuille de planning active sans modifier les autres?

Sub copiera2()

Dim source As Range

Dim n As Integer

Dim num As Integer

Dim num1 As Integer ' numéro de la dernière ligne utilisée dans la feuille 1

Application.ScreenUpdating = False

Sheets("liste_taches").Activate

'Selectionne toutes les cellules de la feuille

Range("A4:D600").Select

'Supprime toutes les cellules et les décales vers le haut

Selection.Delete Shift:=xlUp

Worksheets("taches_principales").Activate

Set Sht = Worksheets("liste_taches")

n = Sht.Range("C" & Rows.Count).End(xlUp).Row + 1

num = Sheets("taches_principales").Range("A" & Rows.Count).End(xlUp).Row + 1

ActiveSheet.Range("A5", "D" & num).Select

Selection.Copy

Worksheets("liste_taches").Activate

Range("A" & n).Select

Selection.PasteSpecial Paste:=xlPasteValues

Selection.PasteSpecial Paste:=xlPasteFormats

Worksheets("taches_autres").Activate

Set Sht = Worksheets("liste_taches")

num1 = Sheets("taches_autres").Range("A" & Rows.Count).End(xlUp).Row + 1

Set source = ActiveSheet.Range("A4", "D" & num1)

n = Sht.Range("C" & Rows.Count).End(xlUp).Row + 1

source.Copy Destination:=Sht.Cells(n, 1)

Worksheets("taches_autres").Activate

Set Sht = Worksheets("liste_taches")

num2 = Sheets("taches_autres").Range("F" & Rows.Count).End(xlUp).Row + 1

Set source = ActiveSheet.Range("F4", "I" & num2)

n = Sht.Range("C" & Rows.Count).End(xlUp).Row + 1

source.Copy Destination:=Sht.Cells(n, 1)

End Sub

Remplace alors "liste_taches" par la variable MaFeuilleActive(sans guillemet).

Maintenant il faut aller chercher automatiquement la valeur de MaFeuilleActive

Soit c'est la dernière créée, alors

MaFeuilleActive  = Sheets(Sheets.Count).Name

soit c'en est une autre qui commence par "Planning" par exemple, alors tu testes jusqu'à obtenir la valeur complète

i = 0
Do
i = i + 1
Loop Until Sheets(i).Name Like "Planning*"
MaFeuilleActive  = Sheets(i).Name

reste à prévoir le cas où la feuille n'a pas été trouvée

ensuite tu reprends ton code après avoir remplacé "liste_taches" par la variable MaFeuilleActive

Je te remercie beaucoup, cela fonctionne!!

Rechercher des sujets similaires à "creer macro qui fonctionne differents noms feuilles"