Q copies de formules et fonction INDIRECT

Bonjour,

J’ai une question à propos des copies de formule.

J'ai fait un dossier Excel pour les feuilles de temps d’employés. Chaque fiche de paye se trouve sur une feuille différente du même dossier. À la fin de chaque fiche de temps se trouve une case indiquant les heures supplémentaires accumulées restantes. Cette case sert de référence pour une case de la feuille suivante indiquant les heures accumulées au début de la période de paie.

Ex. :

La formule de la case K44 (heures accumulées au début de la période de paie) de la page ‘paie 2’ se lit comme suit :

=SUM('Paie 01'!K50:L51)

Je voudrais copier la feuille ‘paie 2’ pour créer les feuilles ‘paie 3’, ‘paie 4’, …, en gardant toutes mes formules et ma mise en page, mais je voudrais que la formule mentionnée ci-haut change automatiquement de numéro de page.

Ex. :

formule de la page ‘paie 3’ =SUM('Paie 02'!K50:L51)

formule de la page ‘paie 4’ =SUM('Paie 03'!K50:L51)

Est-ce que quelqu’un saurait comment faire ?

Merci d’avance

Bonjour,

Une piste par VBA, code à mettre dans le module du classeur :

Private Sub Workbook_NewSheet(ByVal Sh As Object)

    Dim Fe As Worksheet
    Dim Max As Integer

    'recherche la feuille du mois dernier (numéro le plus élevé)
    For Each Fe In Worksheets

        If InStr(Fe.Name, "Paie ") <> 0 Then

            If Split(Fe.Name, " ")(1) > Max Then Max = Split(Fe.Name, " ")(1)

        End If

    Next Fe

    'renomme la nouvelle feuille
    Sh.Name = "Paie " & Format(Max + 1, "00")

    'copie à l'identique la feuille du mois précédent sur la nouvelle feuille
    Worksheets("Paie " & Format(Max, "00")).Cells.Copy Sh.Range("A1")

    'inscrit la formule devant faire référence à la plage du mois précédent
    Sh.Range("K44").Formula = "=SUM('" & Worksheets("Paie " & Format(Max, "00")).Name & "'!K50:L51)"

End Sub

En cliquant sur le bouton d'ajout d'une nouvelle feuille (bouton à coté de l'onglet le plus à droite) le code cherche le mois le plus élevé, renomme la nouvelle feuille en incrémentant de 1 son nom, si "Paie 03" est le mois le plus haut, ça va donc donner comme nom à la nouvelle feuille "Paie 04" ensuite, toutes les cellules de la feuille précédente sont copiées dans la nouvelle et la formule est ensuite entrée pour faire référence à la plage du mois précédent.

Test à faire sur une copie du classeur. Petite précision, le fait de déplacer une feuille en maintenant Ctrl enfoncé pour en faire une copie ne provoque pas la procédure événementielle "Workbook_NewSheet()" et donc, pas de formule inscrite automatiquement ni de renommage automatique, il faut exclusivement cliquer sur le bouton d'ajout de nouvelle feuille !

Merci beaucoup Theze !!

Je vais faire des tests et je reviens avec le résultat

Rechercher des sujets similaires à "copies formules fonction indirect"